Cleanroom Software Engineering
# Cleanroom Software Engineering

Der Cleanroom Software Engineering Process (zu Deutsch Reinraum-Softwareentwicklungs-Prozess) ist ein Softwareentwicklungsprozess, mit dem Software mit einem zertifizierbaren Maß an Zuverlässigkeit erstellt werden soll. Der Reinraumprozess wurde ursprünglich von Harlan Mills und mehreren seiner Kollegen entwickelt, darunter Alan Hevner von IBM. Der Schwerpunkt des Reinraumprozesses liegt eher auf der Fehlervermeidung als auf der Fehlerbeseitigung. Der Name „Reinraum“ wurde gewählt, um an die in der Elektronikindustrie verwendeten Reinräume zu erinnern, um die Einführung von Defekten bei der Herstellung von Halbleitern zu verhindern. Das Reinraumverfahren wurde erstmals Mitte bis Ende der 1980er Jahre eingesetzt. Demonstrationsprojekte innerhalb des Militärs begannen Anfang der neunziger Jahre. Jüngste Arbeiten zum Reinraumprozess haben die Verschmelzung von Reinräumen mit den automatisierten Verifizierungsfunktionen untersucht, die durch in CSP ausgedrückte Spezifikationen bereitgestellt werden.

## Grundprinzipien

Die Grundprinzipien des Reinraumprozesses sind

### Softwareentwicklung basierend auf formale Methoden

    Die Unterstützung durch Softwaretools, die auf einigen mathematischen Formalismen basieren, einschließlich Model Checking, Processkalkül, sowie Petri-Netze. Die Box-Struktur-Methode kann ein solches Mittel zum Spezifizieren und Entwerfen eines Softwareprodukts sein. Die Überprüfung, ob das Design die Spezifikation korrekt implementiert, erfolgt durch Teamüberprüfung, häufig mit Unterstützung von Softwaretools.

### Inkrementelle Implementierung unter statistische Qualitätskontrolle

    Die Reinraumentwicklung verwendet einen iterativen Ansatz, bei dem das Produkt in Schritten entwickelt wird, um die implementierte Funktionalität schrittweise zu Erhöhen. Die Qualität jedes Inkrements wird anhand vorab festgelegter Standards gemessen, um sicherzustellen, dass der Entwicklungsprozess akzeptabel verläuft. Wenn die Qualitätsstandards nicht eingehalten werden, werden die Tests für das aktuelle Inkrement abgebrochen und die Entwurfsphase wieder aufgenommen.

### Statistisch fundierte Tests

    Softwaretests im Reinraumprozess werden als statistisches Experiment durchgeführt. Basierend auf der formalen Spezifikation wird eine repräsentative Teilmenge von Software-Eingabe- / Ausgabe-Trajektorien ausgewählt und getestet. Diese Stichprobe wird dann statistisch analysiert, um eine Schätzung der Zuverlässigkeit der Software und ein Maß an Vertrauen in diese Schätzung zu erhalten.
