Fog Creek Software
Discussion Board

what is cleanrooming?

it's been mentioned several times here and elsewhere with regard to the windows 2000 code leaks, and googling turns up several slightly confusing definitions.  i'm just curious as to what the heck cleanrooming code would entail.  any help quite appreciated.

some internet chick
Saturday, February 14, 2004

Its all here...

Simon Lucy
Saturday, February 14, 2004

It usually simply means "proving" software as you go along -- rather than traditional code-slinging followed by iterative testing and debugging.

The idea is that it produces extremely high quality, but often expensive, software.

Saturday, February 14, 2004

The term comes from circuit fabrication labs, where they really do have clean rooms. Everyone wears caps, gowns and masks, and there are air baffles and scrubbers to filter out tiny particles.

When applied to software development, it means the software was developed without referring to other software.

Saturday, February 14, 2004

The "CleanRoom" Software development method was developed by IBM.  The idea is that each phase and product of software development has Entry Criteria and Exit Criteria.  So, for instance once the requirement document is done, it is 'tossed over the wall' to the Preliminary Designers. 

They apply their 'Entry Criteria' to the requirement document -- Check completeness of requirements, etc.  Whatever metrics make sense, but the metrics and a checksheet have been made out beforehand, as part of the process documentation -- and they expect the Requirements creators to have run their product through this checklist already, before throwing it over the wall. 

They then do their work, generating a Preliminary Design.  They run their product through an Exit Criteria list.  Once it passes the list, they 'throw-it-over-the-wall' to the next phase.

It's 'Clean Room' in that what goes on in each phase is 'clean', working with an approved product of an earlier phase, and producing an approved product for the next phase.

The concept of having approved product checklists is valuable, but I believe the 'pure' CleanRoom approach has too much legacy from the 'Big Design Up Front' model.  The model's basic assumption, that you CAN know ALL the requirements up-front, has been shown to be false in the real software world. 

You can certainly develop a product that meets the approved requirements this way, but there's lots of code which meets requirements, but does not meet the NEEDS of the user by the time it is done.

Saturday, February 14, 2004

or there's the othe defintion in the other thread, where one guy looks at some existing thing, then another guy in a 'clean room' builds something new with specs from the first guy, without ever looking at the existing thing himself. that's the relevant definition for leaked source code from anywhere.

Saturday, February 14, 2004

*  Recent Topics

*  Fog Creek Home