Are Agile and CMMI Compatible?post by Chris Curran on June 25, 2010
With the increased adoption of Agile methodologies, organizations that have invested in CMMI process improvement are asking how they can combine the rigor of their existing repeatable processes with the benefits that Agile practices deliver. Can a team of agile developers that embrace change, have a short-term view, and are focused on eliminating the immediate barriers to success effectively work in an environment with well established and repeatable processes that require documentation, discipline and rigor? Are CMMI approaches compatible with Agile practices?
In our opinion and experience, the answer is yes. While CMMI and Agile appear to be trends at cross-purposes, there are areas where both can co-exist and lead to further improvements in the overall quality and speed-to-market of the software they deliver. Agile seems unstructured, but it relies on a high degree of internal discipline and process to ensure high development velocity & quality. By exposing the internal discipline/process through lightweight documentation in key areas of the CMMI framework, Agile development can be brought into the CMMI fold.
In some of the key CMMI software development practice areas, specific tools and techniques can provide visibility in the consistency and effectiveness of the internal Agile delivery processes:
- Software Project Planning. Group stories into waves of functionality. These serve interim checkpoints, providing clear targets to the development team and good indicator of the team’s progress. For a large client we used wave planning to group functionality based on common features to assist in scheduling dependencies on external systems as well as manage development capacity. The short nature of the waves gave the team full visibility into potential risks and the ability to quickly course correct.
- Software Project Tracking and Oversight. Leverage Agile project management tools, such as Mingle, or XPlanner, to function as “information radiators” exposing to a broader audience the wealth of information on project status, risks and issues and decision-tracking that agile software management techniques such as SCRUM provide. This information can be compiled into status reports that are easily understandable to audiences that don’t speak Agile while remaining true to Agile processes and concepts.
- Requirements Management. Utilize the story-level documentation to support the documentary evidence requirements of CMMI. Most Agile management tools facilitate story based development, linking the requirements to design, build and test efforts at the story level as well as linking requirements to other project management and tracking needs such as bug tracking and source control. Usage of these tools enables full traceability and minimizes the amount of manual documentation effort required.
- Software Quality Assurance. Ensure test-driven development and continuous integration are part of the delivery process. These are key elements of the Agile approach and contribute to making quality one of the strongest aspects of Agile software development methodologies. Modern continuous integration tools provide visual cues and vital reporting capabilities to ensure the quality and repeatability of the development and QA processes, supporting with CMMI compliance.
While Agile and CMMI can coexist, there are limits. Agile practices can normally function with CMMI levels 1 to 3 but are usually incompatible with the higher maturity levels 4 and 5. At CMMI levels 4 and 5, the intrusion of documentation into the development process over-formalizes Agile’s internal discipline and Agile ceases to be agile.
Nonetheless, Agile can be successfully implemented in CMMI environments. With some planning and forethought, it is possible to get the speed-to-market benefits of Agile, while ensuring the consistency and effectiveness of the software development processes through the CMMI framework.