Monday, March 08, 2004

Six Sigma & Software Process Improvement

Last Wednesday Steve Janiszewski of PS&J Software Six Sigma spoke to DC Spin on how to use the Six Sigma model to improve the process of software development.

Six Sigma quality level means that products have fewer than 3.4 defects per million opportunities, i.e. the product is 99.9997% error-free. It came out of the manufacturing sector. In 1995 Janiszewski was at Allied Signal when the CEO decided that Allied Signal would become a Six Sigma organization. It soon became apparent that software development is different from manufacturing and the Six Sigma model had to be adjusted accordingly.

Unlike manufacturing, software developers do not build the exact same product over and over again. Process variation can never be reduced below a moderate level and specifications are not based around tolerances.

Janiszewski said that to a software developer, Six Sigma can look like a freight train. But it can be complementary to the Capability Maturity Model (CMM) process. CMM is susceptible to inertia and organizations can take years to move from one level to another and many organizations drop back a level within months of an assessment. Moreover, Janiszewski suggested that most of the benefits of CMM come at levels 4 and 5. (I have to say that at earlier meetings I have heard exactly the reverse, that most of the gains come at the beginning, when an organization moves from a chaotic environment to one where there is a process. TechnoFlak is happy to run guest posts by anyone wishing to weigh in on this question.) It is possible to be technically compliant with CMM and have no productivity gains.

Six Sigma starts with business results. Janiszewski laid great stress on the importance of defining specific business goals. Data analysis is used to identify which processes have the greatest impact on those goals and what are the critical inputs for those processes.

Throughout his presentation Janiszewski emphasized the need for inspection, measurement, data analysis and feedback. The inspection process must not be rushed; inspectors who are given too many lines of code to review will miss errors. Managing integration & test means managing defects. 70% of the defects are likely to occur in 20% of the modules. The Six Sigma process will help developers identify those modules which should be scrapped and reworked.

The Six Sigma software project is characterized by: accurate planning based on historical data, the application of statistical tools, quantitative management of product quality, closed loop process management and improvement, and quantifiable process improvement benefits.

The last item is crucial for budgeting, and project managers can use it to make themselves popular with corporate management.

No comments: