Capability maturity model or simply CMM is an evolutionary model for software development process which consists of an elevating sequence of stages in maturity of the process involved in software development. Higher the stage in model, more optimised is the quality of the process at that stage of its development.
CMM's Five Maturity Levels of Software Processes:
Initial Stage:The stage is characterised by a genuine lack of order in the software development process. There are wide variations in costs and design of functionalities of the product.There is absence of any tool to measure the progress achieved. The product developed is behind schedule and crosses all budgetary constraints. The product developed under such a chaotic scenario is substandard and is delivered strictly on the back of efforts made by a select few and talented individuals.
Repeatable Stage:Project management technologies are introduced on the basis of experiences accumulated over time. As an upgrade over the previous stage, the project management helps in better tracking of the costs, schedule and progress. Consequently the processes become easier to understand. This leads to correct estimation of project schedules and plans. The managers and team members spend more time on execution of tasks than in trying to comprehend them.
Defined Stage:As a need for transitioning to more potent technologies and making quality improvement a norm, universal standards for software development processes and maintenance are introduced and documented. All projects within the company follow these documented standards of software process for development, test and maintenance of the software product. The dependence of the company on a few individuals is reduced.
Managed Stage:From this stage onwards, all of the software product development processes are statistically managed for better optimization in quality of the software product. A quantity based goal is set both for software development process and maintenance.
Optimized Stage:The main organisational goal at this stage is the constant improvement in existing processes and enhancing the scope of recently introduced innovative technologies after their thorough evaluation. The focus is on anticipation of errors and if possible reusability of components. This also aids in saving of the overall cost of software development.