Software-Entwicklung erhält eine neue Qualität

Ganzheitlicher OOP-Ansatz macht SW-Projekte effizient

06.12.1991

Konfigurieren statt neuentwickeln - so beschreiben Dirk E. Frauenheim und Elke Schwab die künftigen Aufgaben des Software-Entwicklers in seinem Unternehmen. Voraussetzung ist die konsequente Anwendung eines objektorientierten Ansatzes, der nicht nur die Programmiersprache, sondern auch Datenbanksystem und Benutzeroberfläche umfaßt.

Nur etwa zehn Prozent aller Softwareprojekte werden heute im geplanten Zeitrahmen realisiert, wie Statistiken belegen. In neun von zehn Fällen verläuft ein Softwareprojekt nach folgendem Muster: Die Einstiegsphase ist weitgehend unproblematisch, mit der Dauer des Projekts vergrößert sich aber dann die Diskrepanz zwischen der Programmfunktionalität und den Anforderungen des Anwenders dramatisch.

Die Gründe für diese Fehlentwicklung liegen auf der Hand: Zu Projektbeginn ist der Anwender oder Kunde oft nicht in der Lage, die Wünsche präzise zu formulieren, doch mit zunehmendem Kenntnisstand schraubt er seine Anforderungen höher. Entsprechend muß die Programmfunktionalität ständig erweitert werden. Im ungünstigsten Fall stellt sich sogar heraus, daß von grundsätzlich falschen Voraussetzungen ausgegangen wurde.

Der Kunde von Anfang an in das Projekt integriert

Software-Entwickler, die in dieser Situation mit prozeduralen Methoden arbeiten, laufen Gefahr, daß das gesamte Projekt aus Zeit- und Kostengründen uneffizient wird. Moderne Software-Entwicklung geht heute bereits einen anderen Weg, der für die Computerwelt einen technologischen Neuanfang bedeutet: Ein ganzheitlicher objektorientierter Ansatz wird verfolgt, der eine vollständig objektorientierte Entwicklungsumgebung erfordert. Dazu zählen neben der objektorientierten Programmiersprache (OOP) auch die entsprechende Datenbank und die Benutzerschnittstelle sowie weitere Software-Entwicklungs-Tools wie Browser, Inspector, Profiler und Debugger.

Bedingung für diesen Ansatz ist, daß der Kunde von Anfang an in das Projekt integriert ist, indem gemeinsam ein Pflichtenheft mit präzisen Anforderungen formuliert wird. Durch die Erstellung eines Prototyps im Rapid-Prototyping-Verfahren mit objektorientierten Benutzeroberflächen kann der Software-Entwickler dem künftigen Anwender schon in einer frühen Entwicklungsphase ein Werkzeug an die Hand geben, mit dem er die Erfüllung seiner Anforderungen genau überprüfen kann.

Das Neue am objektorientierten Ansatz: Anstatt wie bei der prozeduralen Methode zwei getrennte Gebilde zur Informationsverarbeitung zu benutzen, nämlich Daten, die Informationen beinhalten, und Prozeduren, existiert in einem objektorientierten System nur ein einziges solches Gebilde, das Objekt.

Objekte vereinigen die beiden Komponenten Daten und Prozeduren in Einheiten, die der Außenwelt als abgeschlossenes Ganzes gegenüberstehen. Die eigenständigen Objekte werden zu Klassen zusammengefaßt, wodurch sich funktionsfähige Softwaremodule realisieren lassen. Derartige objektorientierte Software- und CASE-Tools haben den großen Vorteil, daß sich Module bei erforderlichen Programmänderungen flexibel kombinieren lassen.

Der Software-Entwickler kann dadurch besonders schnell auf Anwenderwünsche reagieren und diese in das Programm übernehmen. Arbeitet der Anwender nach Abschluß des Projektes selbst mit objektorientierten Technologien, so kann er in vielen Fällen auf Neukonstruktionen verzichten. "Konfigurieren statt neuentwickeln" ist dann die Devise.

Objektorientiertes Programmieren versetzt den Entwickler in die Lage, binnen weniger Monate ein individuell einsetzbares, auf die spezifischen Bedürfnisse des Kunden zugeschnittenes Softwareprogramm zu entwickeln, was bisher Jahre in Anspruch nahm. Firmen erhalten die Möglichkeit, binnen kurzer Zeit individuell zugeschnittene Programme für Spezialanwendungen einzusetzen. Kommerziell erhältliche Standardsoftware ist da meist fehl am Platze.

Objektorientierte Datenbank notwendig

Ein ganzheitlich objektorientierter Ansatz erfordert auch den Einsatz einer objektorientierten Datenbank. Bei einer Datenbankanwendung muß ein Ausschnitt aus der realen Welt als Schema in ein Datenbanksystem transformiert werden. Handelt es sich hierbei um ein komplexes Gebilde, so ist es nicht einfach, dieses mit den Tabellen einer relationalen Datenbank auszudrücken. Beim Einsatz von objektorientierten Datenbanken kann dieser Schritt übersprungen werden.

Solche Datenbanken weisen Funktionen auf, die früher nur in Expertensystemen zu finden waren. Entsprechend zeichnen sich die Systeme, die mit objektorientierten Datenbanken erstellt werden, unter anderem durch Vorteile wie erleichterte Programmierung und einfacheren Datenzugriff aus.

Objektorientierte grafische Benutzeroberflächen stellen für den Entwickler die Schnittstelle zwischen Betriebssystem, Anwendung und Benutzer dar. Die Objekte auf dem Bildschirm korrespondieren direkt mit dem Objektcode, erstellte Anwendungen erscheinen als "Real-World-Funktionen" und nicht nur als Programmierprozeß. Von der einfachen Bedienung der Oberfläche profitiert vor allem der Anwender, da sie ihm ein intuitives Arbeiten am Bildschirm ermöglicht.

Der Einsatz weiterer Software-Entwicklungs-Tools beschleunigt die Entwicklungs- und Testphase von Programmen. Hierzu gehören Quellcode-Browser, interaktive Programme, die die Darstellung der

Programmstrukturen, der Vererbungshierarchie und der Aufrufhierarchie übernehmen. Ein Inspector erlaubt etwa die Beobachtung und Veränderung von globalen und lokalen Variablen der verschiedenen Instanzen.

Aber nicht nur die reine Software-Entwicklung ist im objektorientierten Ansatz gefordert. Konsequent muß sich auch das Projekt-Management an den neuen Leitlinien orientieren. Schon in der Konzeptionsphase ist auf die Wahl objektorientierter Ansätze zu achten, um die Flexibilität dieser Methode sinnvoll zu nutzen.

Entwicklungsteam in zwei Gruppen aufteilen

Dabei darf die Produktivität der Software-Entwickler nicht wie bei prozeduralen Entwicklungsmethoden an der Quantität gemessen werden, sondern muß sich an der Wiederverwendbarkeit des erstellten Codes orientieren. Aufgabe des Projekt-Managements ist die Kontrolle der Erstellung von Klassenbibliotheken, auf die flexibel zugegriffen werden kann. Das Ziel sollte in der permanenten Erweiterung dieser Klassenbibliotheken liegen. In ihnen steckt das gesamte Know-how des Software-Entwicklungsprozesses.

Um dies sicherzustellen, sollte das Entwicklungsteam in zwei Gruppen eingeteilt werden. Reine Klassenprogrammierer übernehmen die Aufgabe der Erweiterung, Dokumentation und Pflege von Klassenbibliotheken und stellen diese den Anwendungsentwicklern als Tools zur Verfügung. Auf diese Art und Weise kann eine effiziente Software-Entwicklung garantiert werden.