Overview of Clean Room Software Engineering
Clean room software engineering is a software development approach to produce quality software. It is different from the classical software engineering as in classical software engineering QA (Quality Assurance) is a last phase of development which occurs at the completion of all development stages while there is a chance of less reliable and less quality product full of bugs, 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 clean room software engineering follows a quality approach of 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 on removing the dependency on the costly processes and preventing defects during development rather removing the defects.
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 Clean room development :
Clean room software development approaches consists 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 as first process of each increment which consists requirement analysis, function specification, usage specification, increment planning etc.
- Development –
It is considered as second process of each increment which consists of software reengineering, correctness verification, incremental design etc.
- Certification –
It is considered as final process of each increment which consist 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 occurs in clean room engineering process :
- Requirements gathering.
- Incremental planning.
- Formal design.
- Correctness verification.
- Code generation and inspection.
- Statical test planning.
- Statistical use testing.
Box structure in clean room process :
Box structure is a modeling approach which is used in clean room engineering. A box is like a container which contains details about a system or aspects of a system. All box are independent upon other boxes to deliver required information/details. It generally uses three types of boxes i.e.
- Black box –
It identifies behavior of the system.
- State box –
It identifies state data or operations.
- Clear box –
It identifies transition function used by the state box.
Benefits of Clean Room Software engineering :
- Delivers high quality product.
- 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 in many new software practices. Still according to the IT industry experts it is not very adoptable as it is very theoretical and includes too mathematical to use in real world. But they consider it as a future technique for the IT industries.