next up previous
Next: 3. Multimedia-Softwareentwicklung Up: No Title Previous: 1. Einleitung

Unterabschnitte

2. Objektorientierte Softwareentwicklung

Generelles Ziel der Softwareentwicklung ist die Erstellung eines Programmsystems zur Lösung eines gegebenen Problems. Softwareentwicklung kann dabei als ein Prozeß angesehen werden, bei dem die Elemente des Problem- bzw. Anwendungsbereichs in Elemente des Lösungsraums abgebildet werden. Bei der objektorientierten Softwareentwicklung wird diese Abbildung dadurch realisiert, daß zunächst das Anwendungsgebiet analysiert und modelliert wird. Dazu werden die charakteristischen Elemente des Anwendungsgebietes sowie ihre Eigenschaften, Verhaltensweisen und Beziehungen untereinander identifiziert. Das so entstandene Modell des Anwendungsgebietes wird dann gemäß vorgegebener Regeln in ein Modell des Lösungsraums - letztendlich ein Programm - überführt. Objektorientierte Programmiersprachen enthalten hierzu spezielle Konzepte und Konstrukte, die diese Transformation erleichertern. Das Programm kann als Abstraktion des Anwendungsgebietes betrachtet werden, dessen Elemente weitgehend den Elementen des Anwendungsgebietes entsprechen.

2.1 Vorgehensweise

Objektorientierte Softwareentwicklungsmethoden zeichnen sich durch einen durchgängigen Entwicklungsprozeß von der Analyse bis zur Wartung aus. Ziel dieser Methoden ist es, die Struktur des Problembereichs möglichst genau auf die Implementierung abzubilden. Programmsysteme werden nicht mehr dadurch entwickelt, daß Funktionskomplexe in Prozeduren und Module zerlegt werden, sondern indem der Systemkern durch Abstraktionen der Realität gebildet wird. Die bekanntesten objektorientierten Softwareentwicklungsmethoden sind die Methoden von Shlaer/Mellor, Coad/Yourdon, Booch, Rumbaugh und Jacobson. Vergleiche finden sich bspw. in [Ste93]. Objektorientierte Softwareentwicklungsmethoden gliedern sich in die Phasen Objektorientierte Analyse (OOA), Objektorientierter Entwurf/Design (OOD) und Objektorientierte Implementierung/Programmierung (OOP), zum Teil auch noch Objektorientierter Test (OOT). Die Grenzen zwischen den Phasen sind jedoch fließend. Aktivitäten, die in einigen Methoden noch zur Analyse zählen, werden in anderen Methoden schon dem Entwurf zugeordnet. Viele objektorientierte Softwareentwicklungsmethoden basieren auf dem evolutionären Vorgehensmodell, bei dem die Phasen Analyse, Entwurf, Implementierung und Test inkrementell und iterativ durchlaufen werden. Nach jedem Durchlauf entsteht ein funktionsfähiges Zwischenprodukt, das im nächsten Durchlauf erweitert wird. Aufgrund der Eigenschaft der einfachen Erweiterbarkeit objektorientierter Systeme ist das evolutionäre Vorgehensmodell für die objektorientierte Softwareentwicklung geradezu prädestiniert.

2.2 UML

Mit dem Ziel, den ``Methodenkrieg'' im Bereich der objektorientierten Entwicklungsmethoden zu beenden, haben sich drei Entwickler objektorientierter Softwareentwicklungsmethoden - Booch, Rumbaugh und Jacobson - Mitte der 90er Jahre zusammengetan. Erstes Ergebnis ihrer gemeinsamen Aktivitäten war 1997 die Veröffentlichung der Unified Modeling Language (UML), einer vereinheitlichten Modellierungsnotation [Oes97]. UML kann in allen Methoden zum Festhalten von Entwürfen und als Kommunikationsgrundlage zwischen den Entwicklern genutzt werden. Zur Zeit entwickeln die drei eine vereinheitlichte Entwicklungsmethode namens Objectory. Die UML stellt eine Vielzahl verschiedener Diagrammtypen zur Verfügung, die in den verschiedenen Phasen des Softwareentwicklungsprozesses eingesetzt werden können. Die Diagrammtypen dienen zur Spezifikation der Struktur und des Verhaltens des zu entwicklenden Systems sowie zur Dokumentation von Implementierungsaspekten.

2.2.1 Strukturdiagramme

Klassendiagramme bilden den zentralen Bestandteil eines UML-Modells. Mit ihnen werden der Aufbau einzelner Klassen (Attribute, Methoden) sowie Beziehungen zwischen den Klassen dargestellt. Bei den Beziehungen werden sogenannte Assoziationsbeziehungen, bei denen die beteiligten Klassen gleichwertig sind, Aggregations- bzw. Kompositionsbeziehungen, bei denen eine Klasse Bestandteil einer anderen Klasse ist, und Vererbungsbeziehungen unterschieden. Paket-Diagramme dienen zur Strukturierung großer Systeme. Dabei werden mehrere Klassen unter bestimmten Gruppierungsaspekten zu Paketen zusammengefaßt und Abhängigkeiten zwischen den Paketen angedeutet.

2.2.2 Verhaltensdiagramme

Anwendungsfalldiagramme - eher unter dem Namen Use-Case-Diagramme bekannt - stellen das externe Systemverhalten dar. Sie beschreiben, welche Akteure welche Aktivitäten mit dem System durchführen können. Akteure können dabei sowohl Menschen als auch andere Systeme (Programme) sein. Interaktionsdiagramme, von denen zwei Arten existieren, illustrieren zeitliche Abläufe in einem System. Während bei den Sequenzdiagrammen der zeitliche Ablauf beim Aufruf von Methoden im Vordergrund steht, dienen Kollaborationsdiagramme primär dazu, die Zusammenarbeit der Objekte zu verdeutlichen. Zustandsdiagramme demonstrieren, welche Zustände ein Objekt während seiner Lebenszeit einnehmen kann und durch welche Ereignisse unter welchen Bedingungen Zustandsänderungen ausgelöst werden. Aktivitätsdiagramme beschreiben Abläufe von Aktivitäten in einem Anwendungsfall oder einer Klasse. Sie sind insbesondere für die Modellierung von möglicherweise zeitgleich stattfindenden Arbeitsabläufen geeignet.

2.2.3 Implementierungsdiagramme

Implementierungsdiagramme, zu denen die Komponenten- und Einsatzdiagramme zählen, illustrieren implementierungsspezifische Aspekte. Komponentendiagramme können zur Festlegung von Abhängigkeiten zwischen Compiler und Laufzeitsystem bzw. Quellcode und Maschinencode eingesetzt werden, während Einsatzdiagramme dazu dienen, die Verteilung von Objekten auf verschiedene Rechner und Abhängigkeiten zwischen den Rechnern zu beschreiben.

2.3 Bewertung

Die objektorientierte Softwareentwicklung im allgemeinen und die objektorientierte Programmierung im speziellen haben in den 90er Jahren eine enorme Popularität erlangt. Gegenüber tradionellen Softwareentwicklungsmethoden, deren wesentlicher Nachteil der Strukturbruch zwischen Analyse und Entwurf ist, zeichnen sich objektorientierte Softwareentwicklungsmethoden durch einen durchgängigen Entwicklungsprozeß von der Analyse bis zur Wartung aus. Mit objektorientierten Konzepten lassen sich viele Probleme auf natürlichere Art und Weise modellieren bzw. lösen, als dies mit traditionellen Programmierkonzepten der Fall ist. Wesentliche Vorteile der Objektorientierung liegen in einer einfachen Wartbarkeit und Erweiterbarkeit von Software und der Wiederverwendung von Programmteilen bei der Entwicklung anderer Programmsysteme. Diese Vorteile implizieren eine gesteigerte Produktivität des Softwareentwicklungsprozesses und eine höhere Qualität der entstehenden Produkte.


next up previous
Next: 3. Multimedia-Softwareentwicklung Up: No Title Previous: 1. Einleitung
Dietrich Boles
1998-08-11