and we've been talking to him about software quality and a little bit about software process improvement. There are a lot of initiatives that the Department of Defense in the United States, a lot of the governments, a lot of international standards organizations, and the Software Engineering Institute have focused in on in terms of the capability maturity model, the processes that we use in software, to develop better software. In your experience, Frank, with your clients, is there a particular model that works best, or is it just the structured approach to doing solid processes that works?
Frank: Well, the one that we see most here in the U.S., Carol, is the SEI Capability Maturity Model for Software, or CMM, as you'll hear. And that was developed here in the U.S. at Carnegie Mellon University in Pittsburgh. It was developed largely, originally to help DoD contractors develop software better, meet their cost estimates, schedule estimates, produce software procurements on time, within budget. However, what's actually happened with that model is people who started to realize it has wide applicability outside of the defense community. This has been happening over the last ten years. And have started to use it really throughout the development of all kinds of software, both real-time embedded software, management information systems software, large companies, small companies, are really starting to use this concept. And it's really not a prescriptive model in the sense that it says you must do this, this, this, this and this. What it provides you is more or less an overall process framework and sort of a hierarchy of what kinds of things you need to work on first if you're going to improve. For example, if you look at the SEI model, it talks about moving from the initial level, which is sort of the ad hoc or chaotic level, to the repeatable level, which is level two. And the way you move there is essentially by looking at management processes. How do you plan and track projects? How do you estimate projects? How do you manage requirements? These are all things that really relate to essentially project managers and above in the organization. They don't necessarily relate to individual software practitioners. The idea is, you get the management processes right first. Once you get the management processes right, then you can start to introduce specific best practices, things like peer reviews, for example, or specific kinds of training. You can start to deploy your standard processes across the organization. It's a very powerful framework. And again, it's not so much the actual names and the actual processes that go along with the SEI capability maturity model, it's just the concept of using them as a framework for process improvement.
Carol: And one of the things that you kind of glossed over that kind of piqued my curiosity is something that we both do in our practices, and that's tracking control, teaching companies how to track and control, and really measure what they're doing now, and then measure again once they've tried something new, which is the key to process improvement, identifying opportunities, taking a look at the differences through measurement, and then teaching them to really be able to do root cause analysis of what causes higher productivity and lower productivity, higher quality, and being able to go in and actually measure, track, and improve their processes so that they can get better software. Would you agree?
Frank: Exactly, Carol. In fact, that's one of the things… and I've seen this throughout the software process improvement sort of industry