Cleanroom software development
The "Cleanroom" approach is a set of techniques for achieving very low levels of defects in software. This is the technology that I feature, and I recommend it highly to organizations that are serious about quality.
The key Cleanroom techniques are specific, interrelated ways of doing semiformal specification and verification, testing, and incremental development.
- The specification and verification are the first line of defense against defects, and combine the precision of logical reasoning with the effectiveness of a group review process; they allow teams to produce software that is nearly defect-free even before testing begins.
- Testing serves primarily to measure quality, and only secondarily to detect residual defects.
- Incremental development, among other things, allows "mid-course corrections" to compensate for factors such as shifting requirements and lessons learned during the project.
Besides leading to very-high-quality products, Cleanroom projects tend to be remarkably orderly and stress-free. Progress during development is visible and measurable. Integration is relatively painless. Debugging and rework consume a minimal fraction of the total effort.
Since 1993 I have been teaching this technology in a university course and in an intensive short course in industry. I use my own book, Toward Zero-Defect Programming (Addison Wesley Longman, 1999). Here is a paper describing Cleanroom, the course as taught at New Mexico Tech, and some of the results that we get using the techniques taught in the course.