Download Reference Guide
Cleanroom software development (Mills, Dyer et al., 1987; Cobb and Mills, 1990; Linger, 1994; Prowell, Trammell et al., 1999) is a software development philosophy that is based on avoiding software defects by using formal methods of development and a rigorous inspection process. The name ‘Cleanroom’ was derived by analogy with semiconductor fabrication units. In these units (cleanrooms) defects are avoided by manufacturing in an ultra-clean atmosphere. The objective of this approach to software development is zero-defect software.
The Cleanroom approach to software development is based on five key strategies:
- Formal specification The software to be developed is formally specified. A state-transition model which shows system responses to stimuli is used to express the specification.
- Incremental development The software is partitioned into increments which are developed and validated separately using the Cleanroom process. These increments are specified, with customer input, at an early stage in the process.
- Structured programming Only a limited number of control and data abstraction constructs are used. The program development process is a process of stepwise refinement of the specification. A limited number of constructs are used and the aim is to apply correctness-preserving transformations to the specification to create the program code.
- Static verification The developed software is statically verified using rigorous software inspections. There is no unit or module testing process for code components.
- Statistical testing of the system The integrated software increment is tested statistically (see Chapter XX), to determine its reliability. These statistical tests are based on an operational profile which is developed in parallel with the system specification.
A model of the Cleanroom process, adapted from the description given by Linger (Linger, 1994), is shown below. This shows how these essential strategies are integrated.
Figure 1: The Cleanroom process
Cleanroom teams discusses the team organisation for the Cleanroom process.
Rigorous inspection explains the inspection approach used.
Cleanroom experience discusses the experiences with the Cleanroom approach and its effectiveness.
References
Cobb, R. H. and Mills, H. D. (1990). Engineering Software under Statistical Quality Control.IEEE Software,7(6), 44-54.
Linger, R. C. (1994). Cleanroom Process Model. IEEE Software,11(2), 50-8.
Mills, H. D., Dyer, M. and Linger, R. (1987). Cleanroom Software Engineering. IEEE Software,4(5), 19-25.
Prowell, S. J., Trammell, C. J., Linger, R. C. and Poore, J. H. (1999). Cleanroom Software Engineering: Technology and Process. Reading, Mass.: Addison-Wesley.