Cleanroom

Cleanroom on ohjelmistotuotannossa käytettävä formaali ja inkrementaalinen metodi. Cleanroom-metodin mukaisessa ohjelmistoprosessissa laadukkaita ohjelmistoja pyritään tuottamaan estämällä virheiden syntyminen sen sijaan, että jo syntyneitä virheitä poistettaisiin ohjelmistosta. Metodin nimi on peräisin elektroniikkateollisuudessa käytettävistä puhdastiloista, joilla samankaltaisesti pyritään estämään epäpuhtauksien joutumista tuotteisiin.

Metodin kehitti Harlan Mills 1980-luvulla ja sillä on väitetty saavutetun varsin hyviä tuloksia. Arvostelua metodologiaa ja varsinkin sen testauskäytäntöä kohtaan on esittänyt mm. Boris Beizer.

Keskeiset periaatteet 
Cleanroom-metodi perustuu seuraaviin periaatteisiin:

Ohjelmien käsittely matemaattisina funktioina
Ohjelmia käsitellään matemaattisina funktioina käyttäen apuna laatikkorakenteeseen perustuvaa määrittelyä ja suunnittelua sekä sekvenssipohjaista määrittelyä. Kehitettävän ohjelman ulkoinen käyttäytyminen määritellään täydellisesti yhdistämällä kaikki sen mahdollisesti saamat syötesarjat yhteen vasteeseen. Syötteet määritellään käyttäen apuna edellä mainittua sekvenssipohjaista määrittelyä. Ohjelman ulkoisen toiminnan, eli mustan laatikon, kuvaus kehitetään tilalaatikoksi, joka kuvaa ohjelman kaikkia mahdollisia tiloja. Tilalaatikko kehitetään edelleen läpinäkyväksi laatikoksi, eli mustan laatikon ja tilalaatikon kuvaaman toiminnallisuuden toteuttavaksi algoritmiksi.

Jos ohjelman ulkoinen käyttäytyminen on määritelty täydellisesti ja ohjelman toteutus vastaa tätä mustan laatikon kuvausta, ohjelman voidaan olettaa toimivan virheettömästi.

Ohjelmien tilastollinen testaaminen

Tilastollinen testaaminen perustuu siihen, että koska kaikkia ohjelman mahdollisesti saamia syötesarjoja ei yleensä voida testata, on testattava kaikkien syötteiden joukosta satunnaisesti valittua alijoukkoa. Cleanroom-metodin mukaisessa testaamisessa käytetään ohjelman käyttömallin avulla satunnaisesti luotuja testitapauksia. Testauksen perusteella ohjelman voidaan todeta toimivan oikein tietyllä, testaamisen kattavuudesta riippuvalla todennäköisyydellä.

Lähteet 

Ohjelmointi

de:Cleanroom-Implementierung