In vielen Projekten stehen die Anforderungen an das zu entwickelnde System nicht von Anfang an fest. Hier ist es oftmals erforderlich, sich dem Zielsystem schrittweise anzunähern. Eine etablierte Technik, die hier Verwendung findet, ist das Erstellen von Prototypen.
Grundkonzepte
Prototypen dienen dazu, kritische Aspekte einer Software frühzeitig zu untersuchen. Anforderungen, Vorstellungen der Anwender (Unterschied zwischen formulierten Anforderungen und erwartetem Ergebnis) sowie Realisierungsoptionen können so früh abgeglichen werden. Prototypen realisieren früh ausgewählte oder kritische Funktionen und zeigen ihre Realisierung unter realitätsnahen Umständen. Einerseits können Funktionen schrittweise auf- und ausgebaut werden (evolutionäres Prototyping). Andererseits können verschiedene Realisierungsoptionen ausprobiert und verglichen werden (experimentelles Prototyping) – vgl. auch Chroust [Chroust 1992]. Die Anwender und Entwickler erhalten durch Prototypen ein Gefühl für das System – einmal erfahren die Entwickler, was die Anwender mit ihren Anforderungen gemeint haben; andererseits sehen die Anwender früh, was sie am Ende des Projekts erhalten können. Prototyping ist keine ad-hoc Vorgehensweise, sondern systematisiert die Erstellung ablauffähiger Demonstratoren zur Evaluierung und zum Experimentieren.
Arten von Prototypen
Prototypen eignen sich für verschiedene Anwendungszwecke, anhand derer sie sich klassifizieren lassen. Die gebräuchlichen Arten sind:
-
Demonstratoren finden hauptsächlich in der Akquise bzw. in den frühen Phasen eines Projekts Anwendung. Sie zeigen grob die Richtung auf, in die sich eine Software entwickeln kann, sind üblicherweise jedoch noch “weit” von der finalen Realisierung entfernt.
-
Labormuster dienen dazu, technische Fragestellungen zu untersuchen und z.B. die Tragfähigkeit einer Architektur zu beurteilen.
-
Pilotsysteme sind Prototypen, die bereits große Teile der finalen Funktion der Software enthalten. Im Gegensatz zu Labormustern sind bei Pilotsystemen bereits die Anwender mit eingebunden und können das System testen und bewerten. Pilotsysteme sind Prototypen hohen Reifegrads, die in etwa das Bindeglied zwischen “Wegwerf-Prototypen” und dem Zielsystem darstellen.
Prototypen werden in der Regel nach zwei verschiedenen Mustern gebaut:
Abb. 1: Muster von Prototypen nach Balzert
-
Ein horizontaler Prototyp realisiert nur einen ausgewählten Bereich einer Architektur. Üblich sind sog. GUI-Prototypen, die nur die Benutzerschnittstelle demonstrieren, ohne eine darunterliegende technische Funktionalität umzusetzen. Ziel dieser Prototypen ist es, den Anwender frühzeitig mit der Benutzerschnittstelle vertraut zu machen und Feedback zu erhalten.
-
Vertikale Prototypen (auch Durchstich) dienen dazu, ausgewählte Aspekte in Ihrer Gänze zu zeigen. Das bedeutet, dass ein Teil des Systems über alle Schichten der Architektur hinweg erstellt wird; also beginnend von der Benutzerschnittstelle bis zur Datenhaltung. Diese Art Prototyp dient dazu, komplexe Funktionalität zu demonstrieren und dem Anwender zur Prüfung zu übergeben.
Rapid Protoyping
Das Erstellen von Prototypen findet in vielen anderen Vorgehensweisen Einzug. Ein Treiber dafür ist die Verwendung moderner Entwicklungswerkzeuge.
Abb. 2: Rapid Prototyping für Benutzerschnittstellen am Beispiel Visual Studio
Moderne Entwicklungsumgebungen gestatten es, z.B. Benutzerschnittstellen schnell und grafisch zu modellieren und lauffähig dem Anwender zu präsentieren. Die prototypischen Benutzerschnittstellen verfügen hierbei in der Regel über keinerlei Funktionalität, gestatten es jedoch, schnelle Feedbackschleifen zu etablieren. Das schnelle Zusammenstellen von Prototypen wird auch als rapid prototyping bezeichnet.
Diese Technik eignet sich nicht nur für Benutzerschnittstellen, sondern z.B. auch für Datenmodelle usw.
Bewertung
Prototyping ist eine effiziente Technik, um frühzeitig (und kontinuierlich) die Anwender des zukünftigen Systems in die Entwicklung mit einzubeziehen. Dadurch lässt sich das Risiko eines Fehlschlags des Projekts mindern und frühzeitig Akzeptanz bei den Anwendern erreichen. Da Prototypen oftmals nur einzelne Aspekte untersuchen, werden in der Regel mehrere erstellt, wobei es gleichzeitig möglich ist, auch unterschiedliche Realisierungsoptionen zu evaluieren.
Beachtet werden muss bei der Verwendung von Prototypen jedoch, dass es sich nicht um produktive Software handelt. Prototypen können evolutionär aber auch experimentell sein. Gerade bei experimentellen Prototypen ist die Wahrscheinlichkeit, dass sie verworfen werden, sehr hoch. Solche “Wegwerf-Prototypen” sind kein Ersatz für die Dokumentation und auch kein brauchbarer Bestandteil des finalen Systems. Jedoch sind Prototypen auch mit Aufwand verbunden. Dieser Aspekt muss bereits von Beginn an berücksichtigt werden, was insbesondere in der Vertragsgestaltung kritisch ist.
Literatur
Chroust, Gerhard: Modelle der Softwareentwicklung. Wien: Oldenbourg, 1992.
Balzert, Helmut: Lehrbuch der Software-Technik. Berlin – Heidelberg: Spektrum Akademischer Verlag, 2000.
Bunse, Christian; von Knethen, Anja: Vorgehensmodelle kompakt. Berlin – Heidelberg: Spektrum Akademischer Verlag (IT Kompakt), 2008.