Microsoft Solutions Framework for CMMI® Process Improvement encapsulates a lightweight approach to formal software development and continuous process improvement. The method is rooted in the teaching of Edwards Deming and others and asks the team to focus on the difference between special cause variation and common cause variation in their software engineering practices. The method seeks to eliminate special cause variation through the use of frequent, high bandwidth communication, aggressive issue management, and progressive risk management. Common cause variation is reduced and productivity on valuable working software is increased by implementing improvement suggestions under controlled circumstances, monitored and assessed using a standard set of metrics provided in the tooling. Like many agile methods, MSF for CMMI® Process Improvement is focused on the flow of value to the customer in short cycles using small batches of requirements, but unlike agile methods, it introduces an extra dimension of variation reduction and elimination. The net result is a lightweight, agile, adaptive process for highly productive software engineering that provides a significant accelerator to achieving a CMMI® Level 3 assessment and lays the groundwork for achievement of Level 4 and 5 in future.
Core Ideas
Partner with Customers - The customer is the consumer at the end of the value chain. In order to maximize customer value, everyone in the value chain must partner by seeking to better understand customer value and share that information back up the value chain.
Foster open communications - In order to maximize individual effectiveness, encourage improvement suggestions, facilitate root cause analysis, and help eliminate special cause variations, open, direct, high-bandwidth communication and information sharing must be a core to the culture of the team.
Work toward a shared vision - Shared vision aligns the interests and work focus of all team members throughout the value chain. Collaboration is improved. A shared vision provides a framework against which decisions can be assessed and made by consensus.
Quality is Everyone's Business, Every Day - Quality is everyone's business, every day. Quality encapsulates the ideas of pride of workmanship, right first time, and continuous improvement. Everyone on the team should understand variation and specifically understand how to measure and interpret the variation in their inputs, their rate of input, their working method, their lead time and their rate of output. Eliminating special cause and reducing common cause variations should be everyone's business, every day. Suggestions for improvement could come from anyone, any time, and be implemented by a local consensus. Continuous improvement in productivity, on-time delivery, with agreed functionality, within bug tolerance levels is more easily achieved when everyone on the team is contributing.
Stay agile, adapt to change - Profits come from differentiation and differentiation requires innovation. By its very nature, innovation is new and unknown and innovative projects contain uncertainty. Uncertainty adds variation and change. As change is a fact of life in innovative software development, the engineering method must be designed to cope gracefully with it.
Make Deployment a Habit - "Teams that learn to ship, ship!" is a saying commonly used in Microsoft product groups. It is important for risk management, elimination of special cause variation and facilitating the flow of value, to knock the kinks out of the delivery and deployment processes. By making deployment a habit and by practicing and testing deployment procedures, even with early life cycle prototypes, the whole team learns how to make deployments run smoothly and predictably.
Flow of value - Flow of value separates out the notion of a functional resource with a capacity from the flow of customer valued functionality. A project is a collection of value scheduled for realization whilst a functional resource has a capacity to create working software of value at a known pace or velocity. Focusing on flow of value means scheduling cohesive small batches of customer value for deployment at regular intervals and facilitating that flow by eliminating special cause variation. Meanwhile, functional managers responsible for capacity can focus on reduction of common cause variation in the method of software engineering and increasing capacity through continuous improvement of productivity measured as velocity.