Cleanroom software development is a software development approach which aims to minimize
the number of errors in the software, thereby, producing a high quality software product [2]. It involves significant planning, careful design and a verification process to avoid any errors that might go into the system during development phase. Cleanroom Software Engineering Reference Model (CRM) consists of 1) Cleanroom Management Process involves proper project planning, project management, evaluation and improvements in team performance, making engineering changes based on the how project is progressing and how team is performing. 2) Cleanroom Specification Process includes understanding user requirements, documenting user requirements in formal way (functional specifications), documenting how software will be used (usage specifications), software architecture details, and incremental planning to better understand and meet customer requirements before development begins. 3) Cleanroom Development Process includes software re-usability, design and implementation of a software version, and verifying the implemented software version. To maintain the quality of final product, quality of software module being re-used is evaluated before incorporating it in the final product. Design and implementation follows incremental box structure development approach where each box has different level of details regarding data and implementation. The correctness verification step involves verifying the software version implemented before it is released for testing. 4) Cleanroom Certification Process starts with creation of a usage model which shows the different ways in which software can be used. These usage models are verified by customers and after taking into account their feedback, the usage model is used to write test cases. After this step, there is a testing and certification step, in which testing team tests the software and share the feedback on software quality. The cleanroom approach works well when used in combination with CMM model or Object Oriented approach. Although there are some differences between these approaches (CMM and object oriented) and cleanroom approach, they dont have any negative impact and basically balance the shortcomings of the other approach. Conclusions: Cleanroom approach finds the errors that might occur much earlier in the software development life-cycle and care is taken to avoid these errors in development phase. This approach results in higher team productivity as developers dont have to do much changes to the code. This approach works well with both new and existing systems. References: [1] Ananthpadmanabhan, Harish, Chetan Kale, Mujtaba Khambatti, Ying Jin, Shaun Taufiq Usman, and Shu Zhang. "Cleanroom software development."Arizona State University (1996). [2] http://en.wikipedia.org/wiki/Cleanroom_software_engineering