Objektorientierung: Prüfstein zwischen Kunst und Kommerz?

04.09.1992

Hartmut Fillhardt Projektleiter der Standardsoftware-Abteilung der Integrata AG, Tübingen

Objektorientierung ist einfach. Wie man hört, gilt das vor allem für Kinder und bisher von der DV unberührte Leute. Doch welcher CW-Leser ist das schon?

Objektorientierung ist die Synthese zwischen Funktions- und Datenorientierung.

Das klingt schon besser für DV-Erfahrene, die sich irgendwo zwischen Funktionen, Daten und Objekten tummeln - es scheint einen Migrationspfad zu geben. Begonnen hat es mit den Funktionen. Funktional heißt, mit überschaubarem Input mehr oder weniger linear (man denke an die Goto-Diskussion) überschaubaren Output zu erzeugen.

Als die Computer nicht mehr nur zum Berechnen von Formeln dienten, wurden Organisations-, Kartei- und andere Strukturen in verschachtelte, versetzte und noch später in verwandte Tabellen abgebildet. Die solchermaßen entstandene Datenorientierung führte zu erheblich stabileren und langlebigeren Anwendungen als zuvor.

Objektorientierung baut auf beiden Ansätzen auf. Sie ist die Erkenntnis, daß die Realität nicht nur aus einem Knochengerüst von Strukturen besteht. Vielmehr benötigt jeder einzelne Knochen spezielle Muskeln, um bewegungsfähig zu sein. Objektorientierung ist heute auch das Vertrauen in die Programmierer, daß sie den von ihnen zu entwickelnden Objekten genügend Wissen und darauf aufbauende Fähigkeiten mitgeben, damit diese selbständig und verantwortlich, sprich: kompetent, in einer komplexen Umwelt koexistieren und handeln können.

Objektorientierung ist Evolution.

Die neue Denkweise hat aber nichts Geheimnisvolles. Es kommt nichts hinzu, es wird nichts weggeworfen, was bisheriges Software-Engineering an Fortschritten gebracht hat: Die Elemente werden nur nett geordnet.

Die Devise heißt: Nicht mehr Funktionen oben, Datenstrukturen unten, sondern Datenstrukturen innen, Funktionen außen. Was dabei entsteht, sind abstrakte Datentypen oder auch Klassen, wie man sie heute nennt.

Beim Modellieren dieser Softwarebausteine darauf zu achten, ob man nicht von bereits bestehenden Klassen profitieren könne, ist keineswegs neu. Es ist für sparsame Leute lediglich genial einleuchtend. Es macht Sinn, solche nützlichen Zusammenhänge auch in jeder Klasse zu dokumentieren: "Wem sehe ich ähnlich?"

Dieses Konzept der "Inheritance" wurde ins Deutsche als "Vererbung" übersetzt. Ein bißchen verwirrend. Schließlich weiß jeder, der sich mit diesem Thema schon einmal auseinandergesetzt hat, daß in einer objektorientierten Klassen-(Erb)hierarchie die Erben zwar von ihren Vorfahren profitieren, die Vorfahren aber nicht wissen, ob und welche Nachfolger was aus diesem Erbe machen. Aber im Übersetzen haben deutsche DV-Experten schon mehrfach Meisterleistungen vollbracht. Auch das ist keineswegs neu.

Kunst kommt von Können und Können von Lernen!

Wer bei Einführung der objektorentierten Vorgehensweise wieder einmal ein neues CASE-Tool erwartet, aus dem die fertige Software im Dutzend springt, wird enttäuscht. Objektorientierung ist weniger.

Technik als Erkenntnis: Nur wenn die Bestandteile eines großen Systems selbst möglichst selbständig und überlebensfähig sind, kann das Gesamtsystem mit einem Höchstmaß an Zuverlässigkeit existieren.

Das Hauptproblem vieler heutigen Software-Entwicklungen ist die Ausrichtung auf den gerade sichtbaren Kontext. Das Primat hat nicht die Universalität einer Lösung, sondern die direkte Umsetzbarkeit. Gerade die Objektorientierung aber lebt davon, daß man über den Tellerrand hinaus schaut.

Nicht zuletzt deshalb bedeutet Objektorientierung für die meisten zunächst einmal, durchschnittlich zwei Jahre umzulernen und harte Kopfarbeit zu leisten, bis derselbe umgepolt ist. Es macht aber auch riesigen Spaß, wenn plötzlich der Funke zündet. Erst dann kommen die ersten effizienten und in weiteren Softwaresystemen nutzbaren Klassenhierarchien zu stande.

Der Erfolg der EDV heute: Abschauen bei anderen.

Die Wiederverwendung im großen Maßstab bleibt ein Traum, wenn jeder allein vor sich hinwurstelt, das Rad jedesmal neu erfindet oder erneut nachprogrammiert, was andere bereits realisiert haben. Hier sind Entwickler gefragt, die an den Ergebnissen anderer anknüpfen wollen. Nicht das Immer-wieder-von-vorne, sondern das Lernen aus Vorhandenem und das Nutzenziehen von Existierendem ist der Wahlspruch der neuen Zeit. Gefragt sind weniger Erfinder, sondern Ingenieure.

Gebt dem Volk Brot und Spiele!

Am wichtigsten ist Freiraum. Es ist schon schwer genug, anders zu denken - aber auch noch ständig hin- und herschalten? Nein, Danke! Wer es sich leistete kann, investiert in eine kleine Gruppe, die zunächst angeschlossene Projekte als Aufgabe erhält: PC-Front-ends für Host-Applikationen sind dankbare Opfer und derzeit durchaus in Mode. Die Politik dabei: Benutzern und Entwicklern den Mund wässrig zu machen.

Wer es sich nicht leisten kann, beschreitet den mühsamen Weg: In zäher Kleinarbeit werden aus den Fachgebieten bestehender Applikationen Problemfelder isoliert, die mit motivierten Mitarbeitern (oder auch ohne sie) objektorientiert umgesetzt, dann aber wieder in die bestehenden Programm-Monolithen integriert werden müssen. Die Politik dabei: Alles braucht seine Zeit.

Wer es sich nicht leisten will, bleibt wo er ist. Die Politik dabei: Man braucht nicht aufzustehen.

Viel schaffe und viel verdiene! (schwäbischer Wahlspruch)

Solange wir Software als etwas betrachten, das mit möglichst wenig Einsatz einen möglichst hohen Gewinn bringen soll - und das vorgestern -, wird die Umsetzung von Objektorientierung ein frommer Wunsch bleiben.

Objektorientierung heißt, sich an der Sache zu orientieren, sich so für sie zu interessieren, daß eine ganzheitliche Betrachtung, Bewertung und Gestaltung möglich ist. Objektorientierung ist ein Denkansatz, der auf Qualität, ganzheitliche Verantwortung und Kompetenz zielt, und zwar in genau dieser Reihenfolge.

Wer sich den Begriff Gewinn jedoch inhaltlich und zeitlich nicht nur ans Ende des nächsten Kassenquartals steckt, wer Kommunikation und Zusammenarbeit höher achtet als ständigen Befehlsstreß, für den ist Objektorientierung nicht der schlechteste Denkansatz.

Schließlich ist ja bis jetzt noch nichts Besseres in Sicht.