Clean room software engineering is a software development approach to producing quality software. It is different from classical software engineering as in classical software engineering QA (Quality Assurance) is the last phase of development that occurs at the completion of all development stages while there is a chance of less reliable and fewer quality products full of bugs, and errors and upset client, etc. But in clean room software engineering, an efficient and good quality software product is delivered to the client as QA (Quality Assurance) is performed each and every phase of software development.
The cleanroom software engineering follows a quality approach to software development which follows a set of principles and practices for gathering requirements, designing, coding, testing, managing, etc. which not only improves the quality of the product but also increases productivity and reduces development cost. From the beginning of the system development to the completion of system development it emphasizes removing the dependency on the costly processes and preventing defects during development rather than removing the defects.
The clean room approach was developed by Dr. Harlan Mills of IBM’s Federal Systems Division, and it was released in the year 1981 but got popularity after 1987 when IBM and other organizations started using it.
Processes of Cleanroom development :
Clean room software development approaches consist of four key processes i.e.
- Management –
It is persistent throughout the whole project lifetime which consists of project mission, schedule, resources, risk analysis, training, configuration management, etc. - Specification –
It is considered the first process of each increment which consists of requirement analysis, function specification, usage specification, increment planning, etc. - Development –
It is considered the second process of each increment which consists of software reengineering, correctness verification, incremental design, etc. - Certification –
It is considered the final process of each increment which consists of usage modeling and test planning, statistical training and certification process, etc.
While separate teams are allocated for different processes to ensure the development of the highest quality software product.
Some of the tasks which occur in clean room engineering process :
- Requirements gathering.
- Incremental planning.
- Formal design.
- Correctness verification.
- Code generation and inspection.
- Statical test planning.
- Statistical use testing.
- Certification.
Box structure in clean room process :
Box structure is a modeling approach that is used in clean room engineering. A box is like a container that contains details about a system or aspects of a system. All boxes are independent of other boxes to deliver the required information/details. It generally uses three types of boxes i.e.
- Black box –
It identifies the behavior of the system. - State box –
It identifies state data or operations. - Clear box –
It identifies the transition function used by the state box.
Benefits of Clean Room Software engineering :
- Delivers high-quality products.
- Increases productivity.
- Reduces development cost.
- Errors are found early.
- Reduces the overall project time.
- Saves resources.
Clean room software engineering ensures good quality software with certified reliability and for that only it has been incorporated into many new software practices. Still, according to the IT industry experts, it is not very adaptable as it is very theoretical and includes too mathematical to use in the real world. But they consider it as a future technology for the IT industries.