fit 2002 > Programmiersprachentypen > Bewertung > objektorientierte Sprachen

Überblick


Objektorientierte Techniken erfahren zurzeit eine starke Akzeptanz in allen wesentlichen Bereichen der Software-Entwicklung. Insbesondere zeichnet sich der zunehmende Einsatz dieser Techniken in der industriellen Praxis ab. Eine wesentliche Ursache hierfür ist vermutlich ein noch nicht zweifelsfrei untermauertes Vertrauen darin, dass objektorientiertes Design in Bezug auf Qualität, Anpassungsfähigkeit, Erweiterbarkeit und Wiederverwendung (reuse) von Software entscheidende Vorteile bietet.

Eine der Ursachen für dieses Vertrauen ist die Möglichkeit des Einsatzes objektorientierter Techniken in nicht nur einer, sondern verschiedenen Entwicklungsphasen (Analyse, Entwurf, Implementierung). Damit verbunden ist die Erwartung einer im Gegensatz zu den klassischen Methoden viel größeren Durchgängigkeit in der Software-Entwicklung.

Die in vielen populärwissenschaftlichen Zeitschriften zu findenden Lobeshymnen über Vorteile objektorientierter Software treffen häufig nicht den Kern. Auch wenn Eigenschaften wie Qualität, Anpassbarkeit usw. mit den vorhandenen Mitteln erreicht werden können, stehen dem in der Praxis verschiedene Faktoren im Wege. Die objektorientierte Herangehensweise bedeutet nicht weniger Arbeit bei der Software- Entwicklung, sondern vielmehr eine unterschiedliche Verteilung der Arbeit auf die frühen Entwicklungsphasen: Es findet eine Verschiebung zu den früheren Phasen hin, besonders zu Analyse und Entwurf, statt.

Es ist verhältnismäßig einfach, mit objektorientierten Techniken schwerverständliche, nicht wieder verwendbare und qualitativ minderwertige Software zu erzeugen. Das ist insbesondere dann der Fall, wenn die vorhandenen Techniken nicht adäquat eingesetzt werden, und das hängt wiederum primär von dem Ausbildungsstand derjenigen ab, die diese Techniken verwenden. Hier liegt eine besondere Gefahr bei der Einführung von Objektorientierung, da viele Gestaltungsmittel zur Verfügung stehen, deren sinnvoller Einsatz erst durch praktische Erfahrungen erlernt werden kann.

Erfordert Qualität entsprechende Kenntnisse und Fertigkeiten der Entwickler, so erfordert der Wunsch nach wieder verwendbarer Software dies noch in weit höherem Maße. In diesem Zusammenhang spielen vor allem neuere Techniken wie Frameworks, Design Patterns (Entwurfsmuster) und Integrationsplattformen (z.B. CORBA) eine wesentliche Rolle.

Einerseits gibt es eine Vielzahl objektorientierter Methoden, andererseits sind sie sich in ihren grundlegenden Konzepten sehr ähnlich. Die Auswahl einer passenden Methode ist daher nicht einfach. Das Problem verstärkt sich bei der Werkzeugauswahl, da für jede Methode wiederum viele verschiedene Werkzeuge zur Verfügung stehen. Da die zugrunde liegenden Methoden meistens sehr informell beschrieben sind, lassen sie an einigen Stellen Entwurfsentscheidungen der Werkzeughersteller zu, die dann zu inkompatiblen Modellierungswerkzeugen für ein und dieselbe Methode führen. Die objektorientierte Software-Entwicklung zeichnet sich besonders durch ihre zyklische (iterative und inkrementelle) Vorgehensweise aus. Daher ist es wichtig, dass Ergebnisse späterer Entwicklungsphasen nach erneutem Durchlauf eines Zyklus wieder verwertbar sind. Ein typisches Beispiel ist die automatische Code-Erzeugung.

Ei ne der wesentlichen Versprechungen beim Einsatz objektorientierter Techniken ist eine Verbesserung von Wiederverwendung im Vergleich zu den klassischen Methoden. Wiederverwendbar sollen unterschiedliche Artefakte sein, z.B. Analyse- und Entwurfsdiagramme, Schnittstellen, Klassenimplementierungen usw. Klassenbibliotheken und Frameworks werden für graphische Benutzerschnittstellen tatsächlich in verschiedenen Projekten eingesetzt. Hierdurch findet auf einer implementierungsnahen Ebene Wiederverwendung statt.

Wiederverwendung ist durch Entwurfsmuster insbesondere bei der Neuentwicklung von Systemen sehr gut möglich. Mit ihrer Hilfe lassen sich Entwürfe klarer strukturieren; man kann vor allem besser darüber diskutieren. Der Einsatz von Entwurfsmustern ist aber nicht unproblematisch, da leicht die Gefahr eines "Übereinsatzes" besteht und damit das Gesamtsystem an Verständlichkeit verliert. Das System wird dann flexibler als eigentlich notwendig. Erhöhte Flexibilität bedeutet aber auch erhöhte Komplexität. Dies wirkt sich dann besonders auf die Testphase aus. Prinzipiell verspricht der Einsatz von Frameworks ein sehr hohes Maß an Wiederverwendung. Ein Problem ist jedoch die Tatsache, dass Frameworks in einer partikulären Programmiersprache und zum Teil auch nur für eine bestimmte Laufzeitumgebung konstruiert werden. Das Problem hängt also sehr stark von der verwendeten Programmiersprache ab.

Auf eine etwas andere Art der Wiederverwendung trifft man bei dem Einsatz von Komponenten. Diese bestehen wie Frameworks aus einer Menge interagierender Objekte, die einen bestimmten Dienst zur Verfügung stellen. Von Frameworks unterscheiden sie sich jedoch dadurch, dass sie generell ablauffähig sind und dass sie komplexere Dienste anbieten. Über Integrationsplattformen wie CORBA können die Dienste verschiedener Komponenten, die beliebig in einem Netz lokalisiert sein können, in Anspruch genommen werden.

Die Welt der Objektorientierung befindet sich zur Zeit in einem äußerst dynamischen Wandel, der Aussagen über zukünftige Entwicklungen relativ schwierig macht. Ein besonderes Beispiel ist hier die Programmiersprache Java, deren dramatischen Erfolg vor mehreren Jahren kaum jemand für möglich gehalten hätte. Bei den Methoden zeichnet sich eine Vereinigung der verschiedenen Konzepte in der sogenannten "Unified Modeling Language" (UML) ab. Die Aktivitäten dazu werden von den Hauptakteuren im Methodenbereich (Booch, Rumbaugh, Jacobson) im Rahmen der Arbeiten bei Rational, einem der führenden Hersteller von OOEntwurfswerkzeugen vorangetrieben. Ein weiterer nicht unerheblicher Beitrag zur Standardisierung geht von der OMG aus. Der bisher wichtigste Standard dieser Organisation ist die CORBA-Architektur für verteilte Objektsysteme. Die weitere Standardisierung von Diensten, z.B. die persistente Speicherung von Objekten oder die "Distributed Document Component Facility" werden sicherlich einen Schwerpunkt bilden. Daneben gibt es jedoch auch Bemühungen, eine Standardisierung in bestimmten Marktsegmenten herbeizuführen. Derzeit bekannte Beispiele sind CORBAmed (Standard für das Medizinwesen) und CORBAfinancials (Standard für das Finanzwesen), zu denen in nächster Zukunft noch weitere hinzukommen dürften.

Nach dem Entstehen von Techniken zur Entwicklung objektorientierter Systeme ist seit einiger Zeit auch eine zunehmende Hinwendung zum Software-Entwicklungsprozess selbst zu beobachten. Ziel ist hierbei eine Verbesserung des Entwicklungsprozesses und damit auch eine Verbesserung der Qualität der entwickelten Produkte. In diesem Zusammenhang werden zunehmen d Arbeiten zum Projektmanagement und zum Komplex Qualitätssicherung, Testen, und Bewertung objektorientierter Systeme durchgeführt. Gerade er letzte Komplex beinhaltet einen großen Forschungsbedarf. Ziel der Untersuchungen zum Komplex "Software-Metriken" ist die Ermittlung von Kenngrößen, die eine Aussage über die Qualität von objektorientierten Software- Systemen geben können. Derzeit werden Software-Metriken weitestgehend auf der Grundlage von Programmcode ermittelt. Dieses Verfahren scheint jedoch nur bedingt sinnvoll, da hier nur Systeme verglichen werden können, die in der gleichen OOPL implementiert werden. Ein erfolgsversprechender Ansatz besteht darin, derartige Untersuchungen auf der Basis formalisierter Entwürfe durchzuführen. Weiterhin muss noch geklärt werden, wie sich der Einsatz bzw. die Wiederverwendung von höherwertigen Strukturen wie Entwurfsmustern auf dem Gebiet des Testens objektorientierter Systeme. Mechanismen wie z.B. "Generalisierung" führen dazu, dass sich die Struktur der Systeme vereinfacht. Andererseits ändert sich mit jeder Stufe der Vererbungshierarchie der Kontext von Methoden, sodass sich die Logik von Tests komplizierter gestaltet als im Falle prozeduraler Systeme.

Als weiteren Trend kann abschließend noch die Objektifizierung von Altsystemen identifizieren. Hierbei geht es darum, Legacy-Systeme im Rahmen moderner Infrastrukturen wiederzuverwenden. Obwohl die Entwicklung und Anwendung objektifizierter Mainstream-Sprachen eine Möglichkeit zur Einbindung von Altsystemen darstellt, glauben wir nicht, dass das die hauptsächlich verwendete Technologie sein wird. Vielmehr wird man die Möglichkeiten ausnutzen, die Integrationsplattformen wie CORBA bieten, und von Client-Rechnern auf Host- Systeme zugreifen.

Weiterführende Informationen


>[oopage]
The Object-Oriented Page
>[languages] Important pure and hybrid object-oriented programming languages
>[engineering] Object-Oriented Programming and Software Engineering

>Entstehungskontext | Konzepte und Techniken | Entwicklung und Auswirkungen | Praxis | Bewertung