Melden Sie sich hier an, um auf Kommentare und die Whitepaper-Datenbank zugreifen zu können.

Kein Log-In? Dann jetzt kostenlos registrieren.

Falls Sie Ihr Passwort vergessen haben, können Sie es hier per E-Mail anfordern.

Der Zugang zur Reseller Only!-Community ist registrierten Fachhändlern, Systemhäusern und Dienstleistern vorbehalten.

Registrieren Sie sich hier, um Zugang zu diesem Bereich zu beantragen. Die Freigabe Ihres Zugangs erfolgt nach Prüfung Ihrer Anmeldung durch die Redaktion.

06.04.1990

"Der Entwickler für nicht mehr bei Adam und Eva an"

06.04.1990

Über das Thema objektorientierte Programmierung sprach Karin Quack mit Klaus Dittrich, Professor am Institut für Informatik der Universität Zürich.

Gebrannte Kinder neigen zur Skepsis

Auf der einen Seite melden die einschlägigen Marktforschungs- Unternehmen mehr oder weniger regelmäßig, daß der Markt für Standardsoftware überproportional wachse. Aber auf der anderen Seite steigt auch der Bedarf an Individualsoftware für die wettbewerbsentscheidenden Bereiche der Anwenderunternehmen. Infolgedessen gehört das Thema Software-Engineering zu den Dauerbrennern in Seminaren, Kongressen und nicht zuletzt auch in der Presse. Die Ziele sind klar: Korrekt und robust, sollen die Anwendungen sein, portabel sowie einfach zu erstellen und zu warten. Die Realität sieht jedoch anders aus. Die meisten Projekte werden nämlich - wenn Oberhaupt - mit gewaltigen Verspätungen fertiggestellt, nicht zuletzt deshalb, weil die nötige Manpower zum großen Teil in die Wartung alter Programme eingebunden ist. Die angebotenen und diskutierten Lösungswege (4GLs, CASE etc.) führen oft in eine Sackgasse, zumindest haben sie bislang nicht viel dazu beigetragen, die sogenannte Softwarelücke zu schließen. Neuerdings taucht in den Diskussionen immer häufiger ein neues Schlagwort auf, das bei einigen Anwendern große Erwartungen weckt: Die Rede ist von der objektorientierten Programmierung. In der Tat klingt dieser Ansatz vielversprechend; mit Hilfe "objektorientierter Programmiersysteme" (OOPS) sollen sich die Wartungsprobleme lösen und die oft erhobene Forderung nach wiederverwendbarer Software erfüllen lassen. Schon jagt eine Produktankündigung die andere. Viele Softwarespezialisten, reagieren allerdings mit einer gewissen Skepsis auf die Versprechen der Anbieter. Schließlich sind sie gebrannte Kinder: Die Lösung ihres Softwareproblemens wird ihnen nun wirklich nicht zum erstenmal versprochen! qua

Bestandteile der Realität

Ihrer universitären Kinderstube entwachsen, schicken sich die objektorientierten Programmiersysteme (OOPS) an, die Software-Entwicklung zu revolutionieren, indem sie die traditionelle Trennung von Daten und Programmen aufheben. Infolgedessen muß sich die reale Welt nicht mehr in ein Korsett von ineinander verschachtelten Unterprogrammen zwängen lassen. Statt dessen, so versprechen die Befürworter der objektorienten Programmierung, kann der Entwickler mit Hilfe eines OOPS die einzelnen Bestandteile der Realität auch in der Anwendung als geschlossene Einheiten abbilden.

CW: Objektorientierte Programmierung wird von Analysten wie der Gartner Group als einer der wichtigsten Softwaretrends für die 90er Jahre bezeichnet. Was bedeuten solche Aussagen für den Anwender?

Dittrich: Objektorientierung als allgemeines Konzept und speziell ihre Anwendung für die Programmierung sind interessante und für die Praxis vielversprechende Ansätze. Inwieweit sich aber ein technisches Konzept tatsächlich durchsetzt, wird mir zu einem Teil davon beeinflußt, ob es gut oder weniger gut ist. Da spielen ganz massiv auch andere Einflüsse eine Rolle, beispielsweise die Tatsache, daß einmal getätigte Investitionen - in Methoden, Werkzeuge, Anwendungssoftware und Ausbildung - nicht einfach abgeschrieben werden, nur weil wieder etwas Neues aufgetaucht ist.

CW: Das hieße aber im Extremfall, daß niemals eine Neuerung eingeführt würde...

Dittrich: Ganz so schlecht sind die Chancen für treue Konzepte natürlich nicht. Allerdings halten solche Neuerungen - ans durchaus verständlichen Gründen - nur langsam im großen Stil Einzug in die praktische Anwendung. Der Anwender tut im Hinblick auf erfolgversprechende Techniken wie etwa die Objektorientierung gut daran, sich zunächst einen Überblick zu verschaffen, damit er beurteilen kann, was überhaupt dahinter steckt und inwiefern es sich eigentlich um etwas Neues handelt. Darm erst kann er einschätzen, welchen Nutzen diese Technik haben kann und wie dieser Nutzen zu realisieren ist.

CW: Wie lange beschädigt das Schlagwort Objektorientierung die Insider eigentlich schon?

Dittrich: Geprägt wurde dieser Begriff zu Beginn der 80er Jahre. Viele der Teilkonzepte, die dahinter stehen, sind aber schon wesentlich älter. Als eine der Urmütter der Objektorientierung ist die Sprache "Simula" anzusehen, die schon Mitte der 60er Jahre in Norwegen entstand. Weitere Wurzeln finden sich in den Wissensrepräsentationstechniken der "Künstlichen Intelligenz" und in der "semantischen Datenmodellen". Objektorientierung vereint also eine Reihe individueller Techniken unter einem gemeinsamen Dach; schon deshalb sollte sie nicht als etwas völlig Neues betrachtet werden, sondern als ein evolutionärer Entwicklungsschritt. Wie so oft in der Informatik werden bekannte Dinge in neue Umgebungen gebracht, neu kombiniert und angepaßt, so daß sich Synergie-Effekte ergeben können.

CW: Welche Konsequenz hat diese Tatsache für die Akzeptanz einer neuen Technik?

Dittrich: Ein "Overselling", also eine Überschätzung auf der Anbieterseite, führt sehr schnell zu einer skeptischen Haltung auf seiten der Anwender, von denen dann viele die Ansicht vertreten, dies sei ja alles schon einmal dagewesen. Das führt dazu, daß die tatsächlichen Möglichkeiten dieser Technik eher unterschätzt werden.

CW: Welche sind denn überhaupt die Grundideen der objektorientierten Programmierung?

Dittrich: Knapp zusammengefaßt, gibt es vier Gestaltungsmerkmale. Zum einen werden Datenstrukturen und dafür definierte Operationen zu einer Einheit zusammengefaßt, die wir Objekt nennen. Dieses Objekt ist "eingekapselt". Also können nur noch die definierten Operationen auf dem Objekt ausgeführt werden; ein direkter Zugriff auf die Datenstrukturen ist demjenigen, der das Objekt verwendet, nicht möglich. Zum anderen kann ein Objekt Botschaften an andere Objekte schicken, die dort zur Ausführung von Operatoren oder "Methoden" führen. Drittens bilden Objekte mit gemeinsamen strukturellen und funktionalen Eigenschaften "Klassen". Ein gebräuchliches, wenn auch nicht vollständig zutreffendes Schlagwort hierfür ist der "abstrakte Datentyp". Die Klassen stellen die eigentlichen Einheiten des Programmierens dar.

Davon werden darin die Objekte als sogenannte Instanzen erzeugt. Schließlich läßt sich eine Struktur aus Ober- und Unterklassen festlegen. mit Hilfe des Vererbungsprinzips braucht der Programmierer für die jeweilige Unterklasse nur noch die zusätzlichen Eigenschaften zu definieren, denn alle anderen Datenstrukturen und Operationen werden aus der Oberklasse übernommen.

CW: Sie sagten vorhin, daß die Objektorientierung nichts völlig Neues sei. Gibt es also in Teilbereichen schon praktische Erfahrungen mit dieser Technik?

Dittrich: Bei dein, was ich soeben beschrieben habe, handelt es sich im Prinzip um Vorgehensweisen beim Entwurf von Softwaresystemen. Und in dieser Funktion wird die objektorientierung mancherorts auch schon seit längerem verwandt - quasi mit Papier und Bleistift.

Ein solcher Entwurf muß zur Realisierung auf eine Programmiersprache abgebildet werden; das geht auch mit konventionellen Sprachen, sogar mit Assembler. Allerdings bedarf es dabei zusätzlicher Programmiervorschriften und einer strengen Disziplin.

Außerdem wird das Resultat zumeist nicht mehr viel von dein objektorientierten Entwurf widerspiegeln.

CW: Was leisten - Hinblick darauf - die objektorientierten Sprachen?

Dittrich: Eine solche Programmiersprache erlaubt es, den objektorientierten Entwurf eins zu eins abzubilden. Obwohl jede Programmiersprache auch ungeschickt angewandt werden kann, erzwingt eine objektorientierte Sprache mehr als jede andere Programmiersprache, daß die Vorteile der Objektorientierung ausgenutzt werden.

CW: Welche Vorteile bietet die objektorientierte Programmierung für die Software-Entwicklung?

Dittrich: Bei jeder Art rechnergestützter Problemlösung werden in einem Abstraktionsprozeß die Sachverhalte der realen Welt auf dem Computer abgebildet. Daraus entstehen Daten und Programme. Aufgrund unserer traditionellen Rechnerarchitekturen sind dies zwei völlig getrennte Aspekte.

Objektorientierung erlaubt es, das, was zusammengehört, auch zusammen zu definieren und technisch als Einheit zu behandeln. Aus meiner Sicht lassen sich damit Anwendungen wesentlich natürlicher entwerfen und aufbauen. Die Einkapselung verhindert zudem, daß die Daten inkonsistent verändert werden können. Pauschal gesagt, ist für einen entsprechend ausgebildeten Software-Ingenieur die objektorientierte Programmierung ein Mittel, um effizienter zu arbeiten.

CW: Und wie stellt sich das weniger Pauschal dar?

Dittrich: Hier sind die verschiedenen Aspekte des Begriffs Effizienz auseinanderzuhalten. Ohne vernachlässigen zu wollen, daß Laufzeit- und Speicherplatzeffizienz immer noch ihre Bedeutung haben, entstehen die wirklich hohen Kosten dort, wo Mitarbeiter länger als notwendig mit der Erstellung und Wartung von Programmen befaßt sind.

Hier läßt sich aus meiner Sicht durch die Anwendung der Objektorientierung einiges sparen. Der Schlüsselbegriff hierfür lautet Wiederverwendbarkeit. Dank richtig angewandter Vererbung fängt der Entwickler nicht mehr in jedem Fall bei Adam und Eva an; vielmehr kann er die im Laufe der Zeit entstandenen Klassen entweder direkt oder durch Verfeinerung wiederverwenden.

Natürlich hängt hier vieles davon ab, ob diese Klassenbibliothek vernünftig aufgebaut wurde und das Auffinden des Vorhandenen m großen Bibliotheken sinnvoll unterstützt wird. Es ist allerdings vorstellbar, daß sich hier ein neuer Markt entwickelt, der für bestimmte Anwendungsbereiche bereits fertige Kassenbibliotheken anbietet.

CW: Da wir schon beim Stichwort Markt sind: Wie sieht Angebot an objektorientierten Programmiersprachen derzeit aus?

Dittrich: Da finden sich zwei Ansätze. Einerseits gibt es reine objektorientierte Sprachen, die von Anfang an für diese Art der Programmierung gebaut wurden. Dazu gehören beispielsweise Smalltalk und Eiffel. Zum anderen entstehen derzeit immer mehr sogenannte hybride Sprachen; ihnen liegt eine nicht-objektorientierte Sprache zugrunde, die um die entsprechenden Konzepte erweitert wurde. Beispiele dafür sind C++, Common Lisp Object System (Clos), oder Object Prolog.

CW: Wie bewerten Sie die Absatzchancen dieser Systeme?

Dittrich: Als Wissenschaftler bin ich zwar kein Marktforscher, aber ich höre mich natürlich trotzdem auf dein Markt um. Danach scheinen die hybriden Sprachen und hier besonders C++ die besseren Chancen zu haben. Der Grund dafür ist einfach der, daß hier der Übergang vom Gewohnten, zum Beispiel von C nach C++, für den Entwickler einfacher ist, als auf eine völlig neue Sprache umzusteigen.

Zudem ist natürlich m diesem Fall auch die Weiterverwendung alter Programme sichergestellt. Andererseits ist C keineswegs die universelle Programmiersprache aller Welten, und ein hybrides Cobol ++ kann ich mir nicht recht vorstellen.

CW: Was raten Sie einem Anwenderunternehmen, das auf die objektorientierte Programmierung umsteigen möchte?

Dittrich: Wie bereits angedeutet, sollten zunächst Grundkenntnisse beschafft werden, die die Sache beurteilbar machen.

Der nächste Schritt ist das Training der betroffenen Entwickler; der Aufwand hierfür darf keinesfalls unterschätzt werden.

In dieser Phase ist es auch schon möglich, einige kleinere Beispielanwendungen in einer objektorientierten Sprache zu realisieren, um Stärken und potentielle Schwächen in der Praxis kennenzulernen.

Schritt für Schritt sollte dann zunächst der Entwurf auf die Objektorientierung umgestellt werden, der vorerst durchaus weiter auf eine konventionelle Sprache abgebildet werden kann. Die letzte Stufe wäre dann eine völlige Unistellung auf eine objektorientierte Programmiersprache, wobei hybride Sprachen eben den Vorteil eines nahezu fließenden Übergangs bieten.