Während
der klassische Software-Lebenszyklus ohne Prototyping auskam, hat sich die Idee
des Prototyping inzwischen recht weit verbreitet.
Nur leider [Hall 90]
... wird der Begriff 'Prototyping' in der Informatik sehr unterschiedlich diskutiert.
Das
Prototyping-Modell geht dabei, im Unterschied zum klassischen Modell des Software-
Lebenszyklus, von folgenden Annahmen aus:
- die wahren Anforderungen
des Anwenders lassen sich von vorn herein nicht vollständig
feststellen,
- sowohl die Organisation
in welche die Software eingebettet ist, als auch die Software
selbst werden nicht als unveränderlich (statisch) angesehen, sondern als dynamisch,
- die Software wirkt auf
den Anwender ein und bestimmt somit dessen Sicht auf sein
Arbeitsumfeld, d.h. auch dessen Anforderungen an die Software selbst
(Regelkreiseffekt).
Der
Begriff Prototyp wurde ursprünglich in den Ingenieurwissenschaften geprägt [Hall 90]:
Dort wird mit Prototyp das Produkt bezeichnet, das zwischen Zeichenbrett und
Massenfertigung erstellt wird und alle Merkmale des späteren Verkaufsprodukts enthält. Das
Produkt Software und deren Serienproduktion unterscheiden sich allerdings in wesentlichen
Merkmalen ...
[Snee
85]
In der Literatur wird oft von "Prototyping" gesprochen. Das Ergebnis der ersten Stufe könnte
als Prototyp bezeichnet werden. Aber hier hinkt der Vergleich zu Prototypen in anderen
Ingenieurdisziplinen. Dort ist das Ergebnis ein verkleinertes Modell des endgültigen Produktes
zum Zwecke der Planung. Im Falle von Software-Systemen ist das nicht zutreffend. Die erste
Version ist ein unvollkommenes Produkt, mit dem man schon arbeiten kann. Sie hat aber nicht
die Eigenschaften, die man sich langfristig wünscht.
Deshalb
ist auch die folgende Anmerkung nicht ganz unberechtigt [Lude 89]:
"Prototyp" ist für Software ein unglückliches Wort...
Einer
der wesentlichsten Unterschiede liegt in folgendem [Resi 89]:
In gewisser Weise ist Softwareentwicklung als "Orginalentwicklung" zu charakterisieren. Wir
sagen ja bewußt nicht "Software-Fertigung", sondern "Software-Entwicklungs-Projekt".
+--------------------+ Rapid
Prototyping +---------------
--+
| Informelle Problem |.................
|
Produkt |
| beschreibung
|--- :
--
| |
+--------------------+ |
: | +---------------
--+
| :
|
====================|=============:==============|=================
+
V :
| +
+
+------------------+ :
+----------------+ +
+
| Modell |---
: --| Pilotsystem | +
+
+------------------+ | : |
+----------------+ +
+
| : |
+
+
V : |
+
+
+------------------+ v +------------------+
+
+
|dynamisches Modell|----| Labormodell |
+
+
+------------------+ +------------------+
+
+
+
=========================P=R=O=T=O=T=Y=P=E=N=======================
Während
der Prototyp der 'klassischen' Industrie mit dem Endprodukt (im wesentlichen)
identisch ist, ist der Prototyp der Software-Industrie ein Modell. Das folgende, auf Kreplin
zurückgehende Schema versucht eine Klassifikation des Prototyping [Vorw 91]:
============================================================================
+
Zweck des
Prototypen
+
+------------------------+------------------------+---------------------
---+
+ erforschend
| experimentierend |
evolutionär +
+ analysierend
| evaluierend
|
+
+ ---------------------- | ----------------------
| --------------------
-- +
+ Dient als Mittel zur
| Wird zur Prüfung be- |
Softwareentwicklung, +
+ Anforderungsanalyse
| nutzerkonzipierter Lö- | die auf
verschiedenen +
+ und Aufstellen des
| sungen benutzt und | Versionen
basiert, +
+ Pflichtenheftes
| kann als Verfeinerung | mit denen
der +
+
| der Anforderungsdefi- | Anwender arbeiten
kann +
+
| nition gesehen werden
|
+
+==========================================================================+
+
Weiterverwendbarkeit des
Prototypen
+
+------------------------+------------------------+---------------------
---+
+ "Wegwerf"-Prototyp
| Prototyping für |
Basis
für +
+
| Benutzertraining |
Systementwicklungen +
+ ---------------------- | ----------------------
| --------------------
-- +
+ Schnelle Realisierung | An
der Anwenderober- | Weiterentwicklung
zur +
+ einer Oberfläche
| fläche ist ausreichen- | Nutzung des
bereits +
+
| der Funktionsumfang | geleisteten
Implemen- +
+
| vorhanden |
tierungsaufwandes +
+==========================================================================+
+
Ziel des
Prototypen
+
+-------------------------------------+---------------------------------
---+
+
Unterstützung der |
Unterstützung
des +
+
Benutzerschnittstelle |
Systems +
+ -----------------------------------
| --------------------------------
-- +
+ Prototyping der Anwenderschnitt-
| Prototyping zum
Festlegen, +
+ stelle als wichtiger Ansatzpunkt
| Implementieren und
Überprüfen +
+ der Software-Ergonomie
| von
Systemeigenschaften +
============================================================================
Eine
Kurzcharakteristik verschiedener Formen von Prototyping findet sich in [Lude 89].
Wunschvorstellung ist es, aus der Software-Spezifikation heraus zu einem ablauff-higen
Prototypen zu kommen. Dies setzt eine formale Spezifikation voraus und wird als Rapid
Prototyping im engeren Sinne bezeichnet.
Prototyping
ist in verschiedenen Phasen und Formen möglich. So wird beispielsweise in [ToHa
86] unterschieden in Prototyping - in der Definitionsphase, - in der Entwurfsphase und - in der
Implementierungsphase. In der Definitionsphase geht es dabei vor allem um ein Testen der
Nutzerschnittstelle. Nach Floyd [Floy 89] kann Prototyping folgende Formen annehmen: -
explorativ, - experimentell, - evolutionär. Die verschiedenen Formen sind nicht als Gegens-tze
aufzufassen, sondern sie können sich erg-nzen bzw. ablösen. [GmSa 90]
Generierung mittels
verifizierter und
validierter Trans-
+----+ Abstraktion +-------------+
formationsregeln +----+
|Welt|------------|Spezifikation|---------------------|Code|
+----+
+-------------+
+----+
^
|
+-----------------------+
Validation und Verifikation
durch Rapid-Prototyping
Lantz
[Lant 86] versucht, aus den Problemen, die mit der klassischen Vorgehensweise
verbunden sind, eine Motivation für Prototyping abzuleiten: Problems with current
methodologies
- Are throrough
BUT DON'T pleases users
- Produce extensive
BUT DON'T decrease communication
documentation
problems
- Identify project steps
BUT DON'T decrease calendar time
needed
- Describe system thorougly BUT
DON'T guarantee it's the right
system
- Delineate skills needed
BUT DON'T cut manpower needed
- Track project costs
BUT DON'T reduce them
Zu
beachten ist natürlich, da+ der Einsatz von Prototyping allein die genannten Probleme nicht
löst. Differenziert gesehen werden sollte die folgende Auffassung von Lantz [Lant 86]: The
initial model of a prototype should feel as much as possible like the final version of the system
Prototyping sollte immer in Zusammenarbeit mit den künftigen Nutzern erfolgen. Dabei hängt
es
wesentlich von dem betreffenden Partner ab, ab welchem Reifegrad des Modells er in den
Prototyping-Proze+ einbezogen werden sollte. Ein zu frühes Einbeziehen kann dem Ansehen
des Entwicklers schaden, ein zu spätes Einbeziehen den Entwicklungsproze+ verlängern.
Prototyping muß nicht erst beginnen, wenn das Gesamtmodell vorliegt. Wenn möglich sollte
bereits auf Modellebene modularisiert werden, um frühestmöglich, gegebenenfalls auch parallel,
mit dem Prototyping von Teilmodellen beginnen zu können.
[SrRa
86]
When the users determine that no further changes need to be made, developers must decide
what do do with the prototype. Three alternatives exist: - Use the prototype as a design
specification for development of the production system. - Put the prototype into production and
use it as the actual system. - Scrap the prototype. Four phase prototyping procedures
+------------------------------------+
| Identify basic user requirements
|
+------------------------------------+
|
V
+------------------------------------+
| Develop a working
prototype |
+------------------------------------+
|
V
+------------------------------------+
| Implement &
use the prototype |<----+
+------------------------------------+
|
|
|
V
|
+------------------------------------+
|
| Revise & enhance
the prototype | |
+------------------------------------+
|
|
|
+------------------------+
[Hopp
88]
Das aktuelle Schlagwort Rapid Prototyping (schnelle Prototypentwicklung) bezeichnet eine
Arbeitsweise, die insbesondere bei der Entwicklung von interaktiven Benutzerschnittstellen wie
auch Expertensystemen erfolgreich angewandt wird. Dabei wird im Gegensatz zu einem top-
down-Ansatz nicht von einem vollst-ndigen Systementwurf ausgegangen, der zunehmend
verfeinert und schlie+lich in complierbaren Code überführt wird. Vielmehr ist die schnelle
Prototypentwicklung durch eine inkrementelle Vorgehensweise gekennzeichnet: Ausgehend von
einer konzeptionellen Vorstellung davon, was das geplante System leisten soll, werden
wesentliche Funktionskomponenten herausgegriffen und unter weitgehender Vermeidung von
Details in Form lauff-higer Module programmtechnisch realisiert. Diese Bausteine werden im
interaktiven Betrieb getestet, verbessert, erweitert und zu größeren Einheiten zusammengefügt.