It would be difficult to practice Six Sigma without software-and yet Six Sigma for software development has historically been difficult to practice. Six Sigma was designed for manufacturing, but it needs to be adapted so it can be applied to software development.
In manufacturing, the first item produced can be considered a prototype. After that, all the energy goes into reproducing exact replicas over and over. It can be a constant struggle to keep the manufactured item within specifications. In software, however, all the effort goes into producing the first copy of the product, and it is easy to make the copies.
Improvement opportunities in software arise in requirements and design, while in manufacturing, the gain conies from reproducing a proven prototype. At the 2003 Six Sigma in Software Conference, Dave Hallowell suggested using design for Six Sigina in software development to supplement the usual define, measure, analyze, improve, control (DMAIC) process. He also provided a list of specific measures.2 The challenge for software developers is to gather complete customer requirements and come up with a design that includes them all.
Bob Stoddard compared Six Sigma in manufacturing to Six Sigma in software at ASQ’s 56th Annual Quality Congress:3
* Manufacturing uses physical measurement studies; software uses human process measurement studies.
* Manufacturing work is related to physical laws; software work is dominated by human activity.
* Manufacturing is based on a long and detailed history; software engineering is less than 50 years old.
He also looked at the various Six Sigma tools and explained them in terms of software engineering tasks.
Growth of Information
A few years ago, there wasn’t much being said about the application of Six Sigma to software, but that hits changed. We stained by educating the software community. Early presentations focused on general points about applying Six Sigina in software and on the needs of die software community. Software professionals had to see case studies to be convinced Six Sigina worked.
The presentations have grown and there have now been three Six Sigma in Software Development conferences. Unfortunately, sharing information about Six Sigma in software is not easy because the information is often proprietary We were, however, able to publish a series of case studies in Software Quality Professional (thanks to guest editor Jeannine Siviy) 4 and are receiving additional unsolicited Six Sigma articles.
Because Six Sigma is customer oriented, it is important to capture data that relate to customer satisfaction. Software organizations that have implemented a measurement infrastructure often think of defects in engineering tenus, specifically in terms of the number of problems found in code inspection. These problems may be nominalized by lines of code (an easy software measure). Unfortunately, “lines of code” doesn’t mean anything to the customer. Instead, software engineers need to learn to look at use cases to determine how requirements map to customer actions.
It has also been a challenge for software engineers to look at the development of software as a set of measurable processes. Fortunately, specific domain technologies, such as Practical Software & Systems Measurement, are available.5 Leveraging these technologies will help improve the cycle of unclear or changed requirements, increasing software size, schedule slip and quality issues.6
With that shift in focus, it is easy to see how Six Sigma can provide a useful set of tools for software process improvement. The Software Engineering Institute (SEI) found Six Sigma is a feasible enabler of domain specific process improvement technology.7
It can be used to facilitate or accelerate the institutionalization of domain specific initiatives, such as the Capability Maturity Model Integration (CMMI), the Information Technology Infrastructure Library, Control Objectives for Information and Related Technology and the Architecture Tradeoff Analysis Method. The CMMI from the SEI provides software companies the key process activities a mature organization should follow.
There is a growing trend to use Six Sigma for software development. Some early adopters of this initiative are ahead of the curve because they are sharing more details about their efforts. Other organizations are creating software specific Six Sigma training to supplement their core Six Sigma training.
Six Sigma is an important growth step in the evolution of quality. We have moved beyond total quality management to the more robust set of tools in Six Sigma and added a process and customer focus. There is a better bottom line for companies that invest in the early stages of software development and track their progress using Six Sigma.