Zu integrierende Systeme werden immer komplexer An technischen Standards wird kein Weg mehr vorbeifuehren Von Michael Wagner*

28.01.1994

Laut einer Anwenderbefragung der Object Management Group hemmt der Mangel an verlaesslichen Standards die weitere Verbreitung der Objekttechnologien. Wenn sich die derzeit in der Entwicklung befindlichen Standards in Produkten niederschlagen, wird dies weitreichende Auswirkungen auf unseren DV-Alltag haben.

Die Vorteile der Objektorientierung sind unbestritten: Die Handhabung von komplexen Systemen wird durch die Wiederverwendbarkeit von Softwarekomponenten wesentlich vereinfacht, Design und Implementierung von Applikationen lassen sich vereinheitlichen. Die Anwendung objektorientierter Designmethodologien hilft Zeit und Kosten sparen. Warum werden sie dann nicht schon ueberall angewendet? Verantwortlich dafuer ist vor allem ihre Heterogenitaet. Der Einsatz der Objektorientierung auf breiter Basis kann die Erwartungen nicht erfuellen und bleibt problematisch, solange einheitliche Standards zur Ueberwindung der Systemgrenzen fehlen.

Dieses Dilemma laesst sich am Beispiel C++ verdeutlichen: Die Sprache erfreut sich - dank des auf C aufbauenden evolutionaeren Ansatzes - grosser Beliebtheit. Etwa 80 Prozent aller objektorientierten Entwicklungen werden heute in C++ durchgefuehrt, das sind aber weniger als fuenf Prozent der Software-Entwicklungen insgesamt.

Der Grund dafuer liegt vor allem darin, dass weder eine vollstaendige Sprachdefinition noch eine eindeutige Interpretation dieser Sprache existiert. Compiler unterschiedlicher Hersteller sind nicht kompatibel, folglich koennen C++-Klassenbibliotheken nicht ohne Rekompilierung der Anwendungs-Source ausgetauscht werden.

Verheerende Auswirkungen

Waehrend sich dieses Problem gluecklicherweise nicht bei allen Eigenschaften von C++ bemerkbar macht, wirkt sich ein anderes Manko verheerend aus. Die Struktur der Vererbungshierarchie zwischen C++-Klassen wird waehrend des Compilierungsvorganges in den Objekten festgeschrieben; somit koennen spaetere Aenderungen nur im Rueckgriff auf den Quelltext vorgenommen werden. Dass jeder Compiler-Hersteller eigene Optimierungen der Objektrepraesentation definiert, verschlimmert das Problem noch. Die Nutzung mehrerer Klassenbibliotheken unterschiedlicher Hersteller wird dadurch meist verhindert.

Eine Fuelle von Detailproblemen

Hersteller von C++-Klassenbibliotheken sind inzwischen dazu uebergegangen, bei ihren Produkten den Sourcecode mitzuliefern, damit die Anwender die fuer ihre Konfiguration notwendigen Anpassungen durchfuehren koennen. Das ist aber weder im Sinne der Hersteller noch der Anwender. Die Hersteller wollen naemlich ihr geistiges Eigentum nicht aus der Hand geben, und die Anwender sollten sich nicht mit den Details der Implementierung von Bibliotheken belasten muessen - das ist ja gerade einer der versprochenen Vorzuege der Objektorientierung.

Diese C++-Probleme stellen allerdings ein Extrem unter den objektorientierten Programmiersprachen dar. Smalltalk beispielsweise hat nicht mit derart krassen Hindernissen zu kaempfen, sondern ist eher in eine Fuelle von Detailproblemen verwickelt.

Immerhin haben sich einige Gremien der Standardisierung von verschiedenen Bereichen der objektorientierten Technologien angenommen - darunter auch offizielle Stellen wie die International Standardization Organization (ISO) oder das American National Standards Institute (ANSI).

Zwischen den Standardisierungsbemuehungen gibt es jedoch feine Unterschiede. Organisationen wie ISO, ANSI oder das Comite Consultatif International de Telegraphie et Telephonie (CCITT) erarbeiten meist De-jure-Standards fuer Basistechnologien, die sich aufgrund der Autoritaet ihrer Schoepfer durchsetzen sollen. Leider ziehen sich die Verfahren manchmal so lange hin, dass sich zwischenzeitlich bereits De-facto-Standards etabliert haben.

Effekt auf die ganze Softwarebranche

Diese reuessieren meist durch den hohen Marktanteil eines Produktes, werden also fast ausschliesslich von dessen Hersteller definiert. Nur selten - in letzter Zeit allerdings immer oefter - gehen diese Technologien nachtraeglich in die Verantwortung eines offiziellen Standardisierungsgremiums ueber.

Die ISO hat ein Objektmodell entwickelt, das als Basis fuer Entwicklungen im Netzwerk-Management dienen soll. Ziel dieser Arbeiten ist es, den Aufbau von Netzen und deren Management durch objektorientierte Software zu beschreiben. Software unterschiedlicher Hersteller soll in die Lage versetzt werden, auf der Basis eines objektorientierten Repositories alle notwendigen Informationen ueber Netztopologie, -komponenten und -nutzer auszutauschen.

ANSI-Komitees beschaeftigen sich mit der Standardisierung der objektorientierten Programmiersprachen C++ und Smalltalk. Der Effekt, der davon auf die gesamte Softwarebranche ausgehen kann, zeigt sich an der Verbreitung von ANSI-C. Kaum ein Compiler- Hersteller, der ANSI-C nicht mindestens als Option unterstuetzt! Die Standardisierung von C++ treibt ein Gemeinschaftskomitee aus ANSI und ISO voran, das die Bezeichnung ANSI-X3J16/ISO-WG21 traegt.

Komplizierter als angenommen

Dieses Vorhaben hat sich allerdings als weitaus komplizierter erwiesen als urspruenglich angenommen. Dies liegt zum einen an der Fuelle von Interpretationsmoeglichkeiten, die sich aus manchen Charakteristika dieser Sprache ergeben, zum anderen sind einige Ergaenzungen des Sprachumfangs notwendig geworden, die zur Komplexitaet des Prozesses beitragen.

Einige Konstrukte wie Templates oder Exceptions werden in den Gremien nach wie vor stark diskutiert; auch die Welle von Verbesserungsvorschlaegen und Ergaenzungen scheint nicht abzuebben. Es wird daher noch einige Zeit dauern, bis ein verbindlicher Standard fuer C++ fertiggestellt ist.

Die Vereinheitlichungsaktivitaeten um Smalltalk wurden erst in juengster Zeit wieder aufgenommen, nachdem es bereits in den 80er Jahren erste Bemuehungen in diese Richtung gegeben hatte. Die von den Hauptakteuren Parcplace, Digitalk, IBM und HP getragenen Bemuehungen kommen aber nicht so recht in Schwung, so dass auch ein Smalltalk-Standard in weite Ferne gerueckt scheint.

Andere Sprachen werden im Rahmen ihrer Standardisierung ebenfalls mit objektorientierten Konzepten ausgestattet. Dazu zaehlen Ada und Cobol sowie die Datenbankabfragesprache SQL. Ob die Versuche, prozedurale und deklarative Sprachen nachtraeglich mit objektorientierten Eigenschaften auszustatten, erfolgreich sein werden, ist bislang mehr als fraglich.

Auch eine Reihe privater oder inoffizieller Organisationen beschaeftigt sich mit der Standardisierung verschiedener Bereiche der objektorientierten Technologien. Kaum mehr zu uebersehen ist sicherlich die Object Management Group (OMG), das mit ueber 350 Mitgliedern weltweit groesste Konsortium von Softwareherstellern. Die OMG hat sich der Kommunikation in heterogenen Systemen auf der Basis objektorientierter Technologien angenommen. Der erste dort erarbeitete Standard ist die Common Object Request Broker Architecture (Corba), die die Kommunikation zwischen Softwaresystemen unabhaengig von den verwendeten Programmiersprachen, Betriebssystemen und Netzwerkprotokollen ermoeglichen soll.

Aufbauend auf einem Objektmodell, hat die OMG eine Architektur fuer verteilte heterogene Sy- steme definiert, die Object Management Architecture (OMA). Sie bildet die Basis fuer eine Kommunikation ueber den Corba-Teilstandard.

Die aktuelle Corba-Version 1.1 ist noch nicht vollstaendig und wird derzeit ueberarbeitet. Erste Produkte, die diesen Teilstandard implementieren, sind jedoch bereits verfuegbar und ermoeglichen die Einbindung existierender Systeme in heterogene Netzwelten.

Hersteller objektorientierter Datenbanksysteme haben sich vom Erfolg der OMG inspirieren lassen und eine eigene Standardisierungsorganisation gegruendet, die Object Database Management Group (ODMG). Dieses Konsortium hat nun seinen Standard veroeffentlicht.

Der ODMG-Standard umfasst ein auf Datenbanken zugeschnittenes Objektmodell, eine Objektdefinitionssprache, eine einheitliche Abfragesprache sowie Implementationsvorschriften fuer C++ und Smalltalk.

Da fast jeder Hersteller objektorientierter Datenbanken Mitglied der ODMG ist und alle Mitglieder eine Unterstuetzung des Standards in ihren Produkten angekuendigt haben, kann man bereits von einem De-facto-Standard sprechen, obwohl bisher nur wenige Produkte verfuegbar sind.

Da offizielle oder auch halboffizielle Standardisierungsbemuehungen in der Regel laenger dauern, als der Markt zu warten gewillt ist, setzen sich manchmal Hersteller mit einem Produkt durch, das zum richtigen Zeitpunkt die richtige Loesung bietet. In der noch in der Entwicklung begriffenen Welt der objektorientierten Systeme ist dies zwar selten der Fall, doch existieren einige Beispiele. Eines davon ist ohne Zweifel "Cfront", der von Bell Labs entwickelte Uebersetzer von C++ nach C, der lange Zeit als Referenzimplementierung fuer C++ galt. Mit dem Aufkommen von Templates und Exceptions hat sich das Bild etwas gewandelt, und Cfront ist nicht mehr State of the art. Da jedoch keine einheitliche Implementierung dieser Konstrukte - geschweige denn ein Standard - existiert, konnte sich bislang auch keine Alternative etablieren.

Ein anderer De-facto-Standard ist eigentlich gar keiner: Die Sprache Smalltalk wurde in den 70er Jahren am kalifornischen Palo Alto Research Center (Parc) entwickelt. Nach mehreren Varianten schien mit der Version Smalltalk-80 der grosse Wurf gelungen. Die Xerox Corp. gruendete in der Folge die Tochterfirma Parcplace Systems Inc. in Santa Clara, Kalifornien, die Smalltalk bis heute vermarktet.

Faelschlicherweise als Referenz zitiert

Das Unternehmen hat Smalltalk inzwischen deutlich weiterentwickelt, und andere Player - darunter HP, IBM und Digitalk - haben eigene Smalltalk-Implementierungen auf den Markt gebracht. Dennoch wird Smalltalk-80 immer wieder als Referenz zitiert und steht synonym fuer alle Smalltalk-Systeme, obwohl es "das" Smalltalk-80-System eigentlich nicht gibt.

Allerdings ist die Aehnlichkeit zwischen den Smalltalk- Implementationen sehr viel groesser als bei allen anderen objektorientierten Sprachen. Fast jedes Smalltalk arbeitet mit einer virtuellen Maschine, die eine Hardware-unabhaengige Programmrepraesentation, die sogenannten Byte-Codes, interpretiert. Damit sind Smalltalk-Programme verschiedener Hersteller zumindest potentiell kompatibel.

Probleme bereiten neben verschiedenen Erweiterungen und der Optimierungen der Byte-Codes vor allem die recht unterschiedlichen Bibliotheken, die nicht einfach zur Deckung zu bringen sind. Eine der Aufgaben, die sich das entsprechende ANSI-Komitee gesetzt hat, ist daher die Definition einer einheitlichen Bibliothek fuer Smalltalk.

Anwaerter auf den Rang einer De-facto-Norm

Einige Entwicklungen der letzten Zeit legen jedoch den Schluss nahe, dass es zumindest einen Anwaerter auf einen kuenftigen De- facto-Standard im Bereich der objektorientierten Systeme gibt: das System Object Model (SOM) der IBM. SOM wurde als Implementationsmethode fuer die Benutzer-Schnittstelle Workplace- Shell von OS/2 entworfen, wird derzeit jedoch auf AIX uebertragen. Als Kernstueck von Workplace/OS und als Baustein anderer Systeme fuehrt es mittlerweile quasi ein Eigenleben.

SOM definiert im wesentlichen eine sprachunabhaengige Repraesentation fuer Objekte, die das Mischen von Objekten unterschiedlichen Ursprungs erlaubt. Erste Anwendungen sind die binaerkompatible Implementierung von C++-Klassenbibliotheken sowie eine erweiterte Laufzeitunterstuetzung fuer C++. Zudem bietet SOM einige ueberraschende Eigenschaften, die es fuer eine C++- Implementierung praedestinieren. Dazu zaehlen Typisierung zur Laufzeit und Persistenz von Objekten sowie eine Metaklassenarchitektur und dynamische Typisierung von Objekten.

Da SOM sprachunabhaengig definiert wurde, kann es als Objektrepraesentation fuer beliebige klassenbasierte Sprachen dienen. Wenn die Binaerkompatibilitaet des erzeugten Codes gewaehrleistet ist, koennen SOM-Objekte, die von verschiedenen Programmiersprachen erzeugt wurden, einander sogar Methoden vererben.

Eine Reihe von Herstellern will Softwarewerkzeuge auf den Markt bringen, die SOM implementieren werden. Dazu zaehlen vor allem die wichtigsten Anbieter von Smalltalk-Systemen. Sollten diese Ankuendigungen in naechster Zeit entsprechende Produkte nach sich ziehen, so wird SOM ein De-facto-Standard fuer die Repraesentation von Smalltalk-Objekten. Weitergehende Ueberlegungen deuten darauf hin, dass SOM ein Bestandteil von Corba werden soll.

Basisfunktionen im Baukastenprinzip

Mit Hilfe von SOM wird es moeglich sein, die Probleme zu ueberwinden, die C++ der Wiederverwendbarkeit von Objekten in den Weg stellt. Welche Effekte die zusaetzlichen Moeglichkeiten von SOM in der C++-Welt haben, ist noch nicht abzusehen.

Im Bereich der verteilten Systeme wird sich der OMG-Standard Corba zum Werkzeug der Wahl fuer die Integration von Business-Anwendungen entwickeln. Mit Corba als Bindeglied ist es zum Beispiel moeglich, bestehende Software mit neuartigen Systemen zu verbinden. Damit wird der erste wesentliche Schritt fuer einen Uebergang von ueberalterten operationellen Systemen zu modernen, objektorientierten Systemen mit sehr viel weitreichenderen Funktionen moeglich.

Doch nicht nur auf kommerzielle und unternehmensweite Anwendungen wirken sich objektorientierte Standards aus. Auch der Endanwender und vor allem der private Sektor werden stark profitieren. Der Durchschnittsnutzer von Standardprogrammen wird damit in der Lage sein, Softwarepakete in einer Art und Weise den eigenen Beduerfnissen anzupassen, von der wir heute nur traeumen koennen. Basisfunktionen, aber auch Zusatzprodukte werden sich im Baukastenprinzip kombinieren lassen. Durch die Corba-Unterstuetzung wird jede im Netz installierte Software fuer geeignete Aufgaben eingesetzt werden koennen.

In diesem Zusammenhang sind auch einige globale Trends zu nennen, die in nicht allzu ferner Zukunft zu einer homogenen Informationsinfrastruktur fuehren werden. Dazu zaehlen die Integration von Computern untereinander, sowie mit Telefonanlagen, die Verknuepfung von Unterhaltungselektronik und Telekommunikation, die Verbreitung von drahtlosen Kommunikationsdiensten und Personal Digital Assistants (PDA) sowie die Durchdringung aller Haushaltsgeraete mit Embedded Systems.

Wieso aber werden dafuer objektorientierte Standards benoetigt? Weil die Komplexitaet einer derart hochgradigen Integration auf herkoemmliche Weise nicht zu meistern ist. Die Steuerung und die Koordination dieser Softwaresysteme koennen heute schon potentiell mit Corba abgedeckt werden; lediglich fuer die reine Datenkommunikation werden Uebertragungsmechanismen mit extrem hohen Bandbreiten benoetigt.