SW-Engineering am Anfang einer neuen EntwicklungsphaseMÜNCHEN - Mehr Freiraum für den Programmierer zu schaffen - diese Forderung stand im Mittelpunkt einer Fachtagung des German Chapter of the ACM zum Thema "Software-Entwicklung: Kreativer Prozeß oder fo

19.04.1985

d -erfahrung notwendig sind.

Wenn wir akzeptieren, daß die Prüfung der Angemessenheit nicht automatisiert und wenig formalisiert werden kann, lassen sich einige Schwachstellen traditioneller Entwicklungsverfahren aufzeigen:

- Die schriftliche Spezifikation der Softwarelösung ist fast immer als Grundlage für die Validation der Angemessenheit von Problemstellung und -lösung ungeeignet.

- Bei vielen Entwicklungen, die sich an einer Top-down-Strategie oder am sogenannten Versioning-Verfahren orientieren, findet die Validation der Software und damit die Rückkopplung zwischen Anwendung und Softwareproduktion erst nach der Auslieferung des Systems statt.

- Notwendige und kostspielige Rückkopplungsschritte werden unter dem Etikett "Wartung" durchgeführt.

Iteration und Validation sind die Grundelemente einer evolutionären Systementwicklung. Evolutionäre Systementwicklung schließt Ansätze ein, die in der Literatur Prototyping, Installation von Pilotwesen oder "langsam wachsende Systeme" (slowly growing systems) heißen.

Prototyping unterstützt den technischen Kern des Entwicklungsprozesses. Darunter verstehen wir,

- zu einem frühen Zeitpunkt ablauffähige Vor- Versionen des Softwaresystems zu erstellen;

- an diesen die Konsistenz zwischen Spezifikation und Implementation zu prüfen;

- die Prototypen durch Vertreter des Anwendungsfeldes validieren zu lassen;

- den Prototypen als Vorlage zur Konstruktion des Zielsystems zu verwenden.

Der Bau von Prototypen dient je nach Problemstellung unterschiedlichen Zwecken. Er verschafft Benutzern ein Bild der angestrebten DV-Lösung und ist gleichzeitig ein Nachweis der technischen Machbarkeit für die Entwickler. Er liefert ein Instrument, mit dessen Hilfe Benutzer und Entwickler den weiteren Konstruktions- und Spezifikationsprozeß anhand praktischer Erfahrungen bestimmen können. Schließlich kann der Einsatz von Prototypen ansatzweise die Einführung des Zielsystems auf den verschiedenen organisatorischen, technischen und sozialen Ebenen vorbereiten helfen.

Diese Überlegungen sollen verdeutlichen, daß der Bau von Prototypen sich meist mit der Funktionalität des Systems und nicht mit dem äußeren Erscheinungsbild, etwa dem Layout des Bildschirms, befaßt. Ein Prototyp soll diejenigen Aspekte modellieren, die jeweils aktuelle Fragestellungen im Entwicklungsprozeß sind. Die Diskussion über Prototyping hat im Konkreten noch einige Fragen offengelassen, Etwa, für welche Anwendungsklassen es sinnvoll ist, das Zielsystem schrittweise aus dem Prototypen zu entwickeln, oder wo der Prototyp nur als Spezifikation des Zielsystems dient. Ebenso muß geklärt werden, welche Strukturmerkmale des Prototyps auf die Implementation des Zielsystems zu übertragen sind.

Aus unserer Sicht muß eine ingenieurmäßige Systementwicklung technisch durch eine Programmierumgebung unterstützt werden. An eine solche Programmierumgebung stellen wir, ausgehend von den vorstehenden Überlegungen, die Forderungen:

- Ein Softwaresystem muß in verschiedenen Versionen und auf verschiedenen Abstraktionsebenen entwickelt und dargestellt werden können, die unterschiedlichen Dokumente müssen jederzeit im Entwicklungsprozeß verfügbar sein.

- Zu einem möglichst frühen Zeitpunkt sollen ablauffähige Systemmodelle (Prototypen) zur Verfügung stehen. Diese sollen einerseits das Systemverhalten demonstrieren, andererseits Aussagen über das Verhältnis von Konstruktion und Spezifikation liefern.

- Die unterschiedlichen Sichtweisen der am Entwicklungsprozeß beteiligten Gruppen müssen darstellbar sein.

- Systemänderungen, auch bezogen auf die Funktionalität, müssen mit geringem Aufwand durchführbar sein; Änderungen sollen nur lokale Auswirkungen haben.

- Große Systeme sollen beherrschbar sein, deshalb muß Teamarbeit unterstützt werden.

Derzeit entwickeln wir entsprechend diesen Konzepten eine Programmierumgebung zur Unterstützung des Prototyping. Wir haben uns entschieden, als Grundlage dieses Systems die logische Programmiersprache "Prolog" zu verwenden. Wir hoffen, daß die bekannten Mängel einer solchen Sprache durch die Vorteile der effektiven Konstruktion ablauffähiger Systemspezifikationen aufgehoben werden.