The Cleanroom is a software development methodology that keep contaminants (software bugs) out of the product. The idea is to control cost by detecting bugs as early as possible, when they are less costly to remove. Rather than using natural languages like English, more formal notations are used to produce specifications on which all software design and requirements validation is based. Off-line review techniques are used to develop understanding of the software before it is executed. Software is intended to execute properly the first time. Programmers are not allowed to perform trial- and-error executions, though automation checks syntax, data flow, and variable types. Testing uses statistical examination to focus on the detection of the errors most likely to cause operational failures.
The general conclusion is that the resulting programs are more reliable than programs developed with the traditional lifecycle model, that the time required to produce a verified program is less than or the same as the time necessary to design, code, and debug a program, that the method of functional verification scales up to large programs, and that statistical quality control is superior to the time-honored technique of finding and removing bugs.
When to Use Cleanroom
Cleanroom can be used with waterfall, incremental, or spiral models to produce software of arbitrary size and complexity. Cleanroom has been successfully demonstrated with excellent results but widespread acceptance has not materialized due to its radical nonintuitive approach. Cleanroom provides higher quality software rather than direct productivity increases.
An organization beginning to use cleanroom need only have in place systematic design methods, formal inspection procedures, documented requirements in a natural language, developer-performed unit testing, configuration management of software after its release to the independent test organization, and ad hoc functional testing. The baseline process in Figure 5 represents such an organization. Cleanroom is not an all-or-nothing approach. The adjoining figure shows which cleanroom components are most appropriately implemented from the organization's baseline process.
Strengths of Cleanroom
- Production of reliable software.
- Cleanroom may be gradually introduced to an organization.
- Needs a complete set of requirements.
- Disciplined style may stifle creativity