OOA-Tools sind noch nicht ausgereift

Gutes Management vermag die meisten Nachteile aufzufangen

06.11.1992

Neben ihren bekannten Vorteilen weisen objektorientierte Analyse und objektorientiertes Design auch Minuspunkte auf. Dazu zählt derzeit noch der Mangel an standardisierten Techniken und Werkzeugen, die diesen Ansatz unterstützen, sowie die große Komplexität von Konzepten wie Vererbung oder dynamische Bindung. Letztere läßt sich nach Ansicht von Gisela Huhn* jedoch durch gutes Management auf ein Minimum reduzieren.

Die einleitende Phase der Software-Entwicklung ist die Analyse. Der Analytiker bestimmt, was das System können muß, um den Anforderungen des Kunden gerecht zu werden. Die daraus resultierende Anforderungsspezifikation sollte klar beschreiben welches externe Verhalten das Informationssystem aufzuweisen hat, ohne dabei detailliert festzulegen, wie das Informationssystem dieses Verhalten erzeugt. Dieser einleitende Abschnitt ist die Basis jedes weiteren Schritts der Software-Entwicklung.

Die traditionelle strukturierte Analyse untersucht zwei große Teilbereiche, die Daten und die Funktionen. Das Ergebnis der Datenanalyse kann in einem Entity-Relationship-Diagramm wiedergegeben werden. Die Funktionsanalyse arbeitet heraus, welche Prozesse von Relevanz sind, und mündet in einem Funktions- oder Datenflußdiagramm. In der Welt der Informationssysteme steht immer noch die Datenanalyse im Vordergrund. Sie knüpft unmittelbar an die Anforderungsspezifikation eines Unternehmens an. Das Entwicklungsteam entwickelt also ein Datendesign für ein Informationssystem, wobei es die Datenredundanz besonders berücksichtigt.

Die Prozesse, werden erst in einem zweiten Schritt um diese definierten Daten herum festgelegt. Dabei tritt jedoch häufig das Problem der Dateninkonsistenz auf Änderungen von Programmen betreffen, wenn diese auf keine gemeinsame Datenbank zugreifen können, jede einzelne Anwendung.

Daraus resultieren eine verminderte Softwarequalität und Programme, die sich nicht wiederverwenden lassen. Darüber hinaus schließt die Festlegung, von Prozessen bestimmte Annahmen über die Implementierung ein, was letztendlich zu einer sehr engen Modulkopplung führt. Das System ist dann extrem unflexibel, ja für Änderungen geradezu unempfänglich.

Mängel der funktionalen Top-down-Dekomposition

Bei der Entwicklung von Informationssystemen läßt sich für die Analyse von Prozessen die funktionale Top-down-Dekomposition anwenden. Dabei handelt es sich um eine strukturierte Disziplin, die ein bestimmtes Vorgehen bei der Systementwicklung vorschreibt. Sie weist aber einige Mängel auf, insofern sie zum Beispiel nicht die natürliche Weiterentwicklung von Informationssystemen berücksichtigt und häufig auch die Daten beziehungsweise deren Struktur vernachlässigt.

Sind zum Beispiel die Funktionen A, B und C das Ergebnis einer Dekomposition, so wird der Output der Funktion A Einfluß auf den Input der Funktion B haben, der Output der Funktion B seinerseits wieder Einfluß auf den Input der Funktion C. Unter diesen Umständen muß sich, falls die Funktion B geändert wird, entweder eine der beiden Funktionen A und C oder auch beide ändern. Es ist auch keineswegs üblich, daß sich diese drei Funktionen unabhängig voneinander in verschiedenen Programmen benutzen lassen.

Das Kernproblem der Software-Entwicklung aber ist das Time-to-market. Viele moderne Systeme benötigen zwischen 100 und 200 Mannjahre über eine Zeitspanne von zirka drei Jahren. In dieser Zeit können sich aber die Anforderungen an das zu erstellende Informationssystem sehr wohl ändern. Die Softwerker müssen dies innerhalb des Entwicklungsprozesses berücksichtigen. Nur so lassen sich hohe Entwicklungs- und Maintenance-Kosten, schlechte Marktanpassung und daraus erwachsende Wettbewerbsnachteile sowie ein niedriger Return on Investment vermeiden.

Die Software-Entwicklungsmethode muß darauf abzielen, Qualität und Zuverlässigkeit der Systeme zu verbessern und gleichzeitig die Maintenance-Kosten zu senken. Außerdem sollte sie dem Entwickler die Möglichkeit bieten, schnell zu reagieren und Änderungen sowohl im Entwicklungs- als auch im Maintenance-Stadium mit minimalem Aufwand durchzuführen. Hohe Investitionen lassen sich vermeiden, indem bereits existierende Komponenten oder Programme wiederverwendet werden.

Die objektorientierte Analyse ist dafür ausgelegt, diese Ziele zu verwirklichen. Im Gegensatz zur Daten- und Funktionsanalyse ist sie auf die Identifikation von Objektklassen, sowie deren Daten (oft Attribute genannt) und Methoden ausgerichtet. Die Interaktion zwischen den Objekten läßt sich bei der strukturierten Analyse auf einfache Weise in einem Datenflußdiagramm darstellen. Empfehlenswerter ist das Transaktionsdiagramm. Es sind die Transaktionen, die konkrete Daten als Nachrichten senden, und es sind die Interaktionen mit den angesprochenen Methoden, die für die Prozeßabwicklung sorgen.

Die objektorientierte Analyse funktioniert iterativ. Im einzelnen sind zunächst die Systemanforderungen in einer Liste festzuhalten. Dann schließt sich die Identifikation von Objektklassen sowie von Klassenmerkmalen, Verantwortlichkeit und Zusammenwirken mit anderen Objektklassen an. Als nächstes müssen die Entwickler die Methoden der Objektklassen und die Vererbungsbeziehungen ermittelt beziehungsweise festlegen. Dadurch lassen sich die gemeinsamen Merkmalen der Objektklassen herausfiltern und allgemeine Klassen bilden.

Pluspunkte im Vergleich zu anderen Methoden

Die objektorientierte Analyse ist noch ein Gegenstand der Forschung, obgleich einige Methoden bereits verfügbar sind. Sicher ist, daß sich die strukturierte Analyse nicht von heute auf morgen durch die objektorientierte Analyse ersetzen läßt. Neue Methoden werden im allgemeinen nur dann richtig akzeptiert, wenn die alten überholt, also nicht mehr anwendbar sind, um neue Probleme zu lösen, mit denen ein Unternehmen konfrontiert wird.

Der größte Vorteil des objektorientierten Ansatzes im Vergleich zu den traditionellen Techniken ist die Möglichkeit einer gezielteren Modulation von Analyse, Design und Implementierung. Die objektorientierte Analyse ist logisch konsequent. So beziehen sich beispielsweise alle objektorientierten Modellierungstechniken auf das eine wesentliche Element, die Objektklasse.

Im Gegensatz dazu berücksichtigen die herkömmlichen Techniken verschiedene Teilaspekte, die erheblich divergieren. So finden Entities im Entity-Relationship-Modell Verwendung, Prozesse hingegen im Datenflußdiagramm. Als Konsequenz daraus stehen die Sichten eines Systems oft unverbunden nebeneinander, und eine effiziente Umsetzung in die Implementierung scheitert.

Mit Vererbung, Polymorphismus und dynamischer Bindung verwendet die Objektorientierung Mechanismen, die die Wiederverwendung und Erweiterung von Software unterstützen. Dadurch läßt sich die Entwicklungszeit reduzieren. Die Systeme können sich außerdem veränderten Anforderungen schneller anpassen.

Bis zur Marktreife ist der Weg noch weit

Der inkrementelle Entwicklungsprozeß führt zu einem verkürzten Zyklus zwischen Evaluation und Re-Evaluation von der Analyse bis hin zur Implementierung. Dadurch wird es möglich, daß sich die tatsächlichen Anforderungen mit der Entwicklung des Softwareprodukts decken. Nicht zuletzt kann dieser Ansatz die Unterhaltungskosten von Systemen minimieren.

Das größte Manko einer objektorientierten Systementwicklung ist heute noch die fehlende Reife der Techniken und Tools, die diesen Ansatz wirkungsvoll unterstützen könnten. Diese Situation kann sich jedoch sehr schnell ändern. So sind viele objektorientierte Programmiersprachen bereits heute gut einsetzbar. Hingegen befinden sich die Analyse und Design zur Zeit noch im Stadium der Entwicklung; auch der Bereich objektorientierter Datenbanksysteme hat noch einen langen Weg bis zur wirklichen Marktreife zurückzulegen.

Der Mangel an standardisierten Methoden, um die Ergebnisse der objektorientierten Analyse und des entsprechenden Designs allgemeinverständlich auszudrücken, wirkt sich besonders negativ aus.

Es sollte eine allgemeingültige und gut verständliche Symbolik zugrundegelegt werden, die jeder versteht, der mit dem objektorientierten Ansatz ein wenig vertraut ist. Nur so kann eine Grundlage für den Kommunikationsaustausch entstehen. Auch Polymorphismus und dynamische Bindung sind sehr komplexe Konzepte, die das Testen von Systemen erschweren. Solche Nachteile lassen sich aber durch ein gutes Management auffangen und auf ein Minimum reduzieren.

Durch die Anwendung von Objekten, Klassen und Message-Passing unterstützt die Objektorientierung insgesamt einen besseren Lösungsweg für die Entwicklung von Informationssystemen. Vor allem das Konzept der Vererbung trägt zur Effizienz der Systementwicklung und der Erweiterung von Systemen bei. Der objektorientierte Ansatz führt zu einem klaren Design und erlaubt eine rechtzeitige Implementierung, die mit besseren Kontrollmöglichkeiten bezüglich der Komplexität und einer Reduktion der Maintenance-Kosten verbunden ist.

Indem sie mit Hilfe des Vererbungskonzepts das Design auf wiederverwendbaren Klassenhierarchien aufbauen, können Software-Entwickler von bereits getesteten Klassen profitieren. Bei der Design-Entwicklung wird der Modularität besonders Rechnung getragen, was letztendlich zu einer flexiblen Entwicklung führt, die Änderungen der Anforderungen seitens der Anwender zuläßt.