Skip to main content

1998 | Buch

Software Engineering

Objektorientierte Software-Entwicklung mit der Unified Modeling Language

verfasst von: Professor Dr. Bernd Kahlbrandt

Verlag: Springer Berlin Heidelberg

insite
SUCHEN

Über dieses Buch

Nach erster Euphorie und der folgenden Ernüchterung herrscht im Augenblick wieder starkes Interesse an objektorientierten Themen. Der Schwerpunkt der Diskussionen und Entwicklungen liegt jetzt auf Methoden. Vereinfacht wird diese Diskussion durch die absehbare Standardisierung einer Notation zur Darstellung objektorientierter Modelle, der Unified Modeling Language (UML). Erschwert wird die Diskussion und die sachgerechte Entscheidung über den Einsatz objektorientierter Methoden durch den unterschiedlichen Hintergrund der Beteiligten. Hinzukommt eine vielfältig verwobene Begriffs­ welt, die verwirrend erscheinen kann und es wohl zum Teil auch ist. Hier setzt dieses Buch an. Es ist aus Vorlesungen über Software-Engineer­ ing an der Fachhochschule Harnburg hervorgegangen. Die Studierenden tru­ gen durch ihr konsequentes Nachfragen nach der Bedeutung der eingeführten oder einfach so verwendeten Begriffe dazu bei, dass ich mich systematisch um Definitionen und Hinweise auf abweichende Verwendung aller Begriffe bemüht habe. So ist ein Buch entstanden, das sich an Leser wendet, die aus unterschied­ lichen Gründen, aber ohne umfangreiche theoretische Vorbildung, objektori­ entierte Entwicklung lernen wollen oder müssen: • Studierende an Universitäten oder Fachhochschulen, • Software-Entwickler, die Programmiersprachen und klassische Methoden, wie Entity-Relationship-Modellierung oder strukturierte Analyse, einset­ zen und Objektorientierung lernen wollen, • Entwickler, die objektorientierte Programmierung kennen und nun die UML kennen lernen wollen. Dabei habe ich versucht, mir wichtig erscheinende Themen mit einigen Akzen­ ten zu behandeln, die ich in anderen Werken vermisst habe. Die wichtigsten Punkte, die behandelt werden, sind: • Darstellung eines systematischen, qualitätsorientierten Ansatzes. • Klare Definitionen aller vorkommenden Begriffe und Konzepte.

Inhaltsverzeichnis

Frontmatter

Grundprinzipien des Software-Engineerings

Frontmatter
1. Aufgaben und Probleme der Software-Entwicklung
Zusammenfassung
Abbildung 1.1 zeigt die wichtigsten Abhängigkeiten zwischen den einzelnen Kapiteln. Die Pfeilspitzen in Abb. 1.1 zeigen jeweils auf Elemente, deren Inhalt in dem jeweils anderen benutzt wird. In diesem Kapitel werden die Aufgaben und Probleme der Software-Entwicklung behandelt. Anschließend werden allgemeine Grundprinzipien des Software-Engineerings eingeführt:
  • Objektorientierung (mit den wichtigsten Symbolen der UML),
  • Qualitätskriterien aus Anwender- und Entwicklersicht,
  • Modularisierung.
Bernd Kahlbrandt
2. Objektorientierung und UML
Zusammenfassung
Der einfache Grundgedanke objektorientierter Ansätze ist die Darstellung von Systemen als eine Reihe miteinander kooperierender Objekte. Zur Darstellung dieser Kooperation und aller damit verbundenen Einzelheiten wurde die Unified Modeling Language entwickelt. Die Unified Modeling Language, im folgenden UML abgekürzt, enthält Elemente zur Beschreibung der Struktur und des Verhaltens von Objekten in Anwendungsbereichen und DV-Systemen. Die wichtigsten Begriffe der Objektorientierung und der Kern der UML werden in diesem Kapitel eingeführt. Nach Lektüre dieses Kapitels sollte der Leser über einen hinreichend großen Wortschatz sowohl objektorientierter Begriffe als auch der UML (sozusagen „UML-light“) verfügen. Dieses Vorgehen bietet eine Reihe von Vorteilen:
  • Begriff der Objektorientierung können sofort mit gängigen Symbolen visualisiert werden.
  • Für die Darstellung der vollständigen UML stehen gleich aussagefähige Beispiele zur Verfügung.
  • Die Einführung der Grundstrukturen und gemeinsamen Elemente der UML wird besser verständlich.
  • Der eilige Leser kann direkt nach diesem Kapitel zum Teil III (Methode) übergehen und den fehlenden Stoff bei Bedarf nachholen.
Bernd Kahlbrandt
3. Qualität von Software-Produkten
Zusammenfassung
Der Qualitätsbegriff ist zentral für die moderne Software-Entwicklung und findet sich bereits in der Definition des Begriffes Software-Engineering. Es ist deshalb notwendig, den Begriff der Qualität zu präzisieren und so zu charakterisieren, dass qualitativ hochwertige Software systematisch konstruiert werden kann. In diesem Kapitel wird gezeigt, wodurch die Qualität von Software charakterisiert werden kann und welche prinzipiellen Maßnahmen zur Qualitätssicherung notwendig sind. Alle folgenden Themen hängen mit den hier dargestellten Qualitätskriterien eng zusammen. Solche Zusammenhänge bestehen auch dort, wo andere Kriterien, wie z. B. Wirtschaftlichkeit, im Vordergrund stehen.
Bernd Kahlbrandt
4. Architektur und Modulbegriff
Zusammenfassung
Verschiedene Prinzipien sind universell in der Software-Entwicklung einsetzbar. Einige davon werden hier in allgemeiner Formulierung präsentiert, um sie bei Bedarf später zur Verfügung zu haben. Weitere Gesichtpunkte für die frühe Präsentation sind:
  • Die Modularisierungsprinzipien können sofort bei jeder Programm-Entwicklung, sogar beim Schreiben der einfachsten Programme, nutzbringend angewandt werden. Der programmierende Leser kann also direkt einen Nutzen realisieren.
  • Abstraktion ist eines der Grundprinzipien der Objektorientierung. Dies ist aber ganz und gar nichts Neues und kann gar nicht früh genug auch im Zusammenhang mit Software-Entwicklung eingeübt werden.
  • Es spart dem Leser und dem Autor Zeit, wenn Dinge einmal allgemein dargestellt werden können, und nicht an mehreren Stellen in den Verkleidungen unterschiedlicher Spezialisierungen auftreten.
Bernd Kahlbrandt

Modellierung und Notation

Frontmatter
5. Grundprinzipien der UML
Zusammenfassung
Die UML, deren Grundelemente bereits in Kap. 2 vorgestellt wurden, enthält Elemente zur präzisen Beschreibung von Anwendungsbereichen und DV-Systemen. Dieses Kapitel gibt eine Übersicht über die Diagramm-Typen der UML und die Grundprinzipien, an denen sich die Notation orientiert. Die UML soll für eine große Zahl unterschiedlichster Probleme Modellierungsmöglichkeiten zur Verfügung stellen. Sie bietet daher umfangreiche Ausdrucksmöglichkeiten, von denen bei Bedarf Gebrauch gemacht werden kann. In vielen Fällen wird man aber nur einen Teil der Notation benötigen. In diesem und den folgenden Kapiteln wird die UML (fast) vollständig an vielen kleinen Beispielen erläutert. Die Reihenfolge, in der die einzelnen Möglichkeiten präsentiert werden, orientiert sich an der Häufigkeit ihres Einsatzes und an ihrem Auftreten im Entwicklungsprozess.
Bernd Kahlbrandt
6. Modellierung statischer Strukturen
Zusammenfassung
Klassen- und Objekt-Diagramme zeigen die statische Struktur eines Systems: Die beteiligten Klassen, ggfs. Objekte, die Beziehungen zwischen ihnen, ihre Attribute und Operationen. In der Analyse liegt das Interesse auf der Darstellung der Strukturen im Problembereich und der Erfassung der Anforderungen an das System. Später verschiebt sich der Interessenschwerpunkt auf DV-spezifische Objekte. Die Darstellungsform bleibt während des ganzen Entwicklungsprozesses erhalten. Sie wird aber um DV-spezifische Elemente ergänzt und nach Bedarf angepasst. Die Darstellung beginnt aus mehreren Gründen mit den statischen Strukturen:
  • Statische Strukturen sind im Zeitablauf im Wesentlichen stabil und daher einfacher zu identifizieren, als veränderliche, dynamische Strukturen.
  • Diagramm-Arten, wie Reihenfolge-Diagramme oder Zustands-Diagramme bauen auf den statischen Modell-Elementen auf oder beziehen sich auf diese.
  • Dem Leser, der Entity-Relationship-Modelle kennt, fällt der Einstieg hier wahrscheinlich am einfachsten.
Bernd Kahlbrandt
7. Verhaltensmodellierung
Zusammenfassung
Im Rahmen der Strukturen, die durch Assoziationen, Aggregationen und GenSpec-Beziehungen gebildet werden, spielen sich die eigentlich interessanten Dinge ab: Das Verhalten, das die Objekte zeigen, die Kooperationen, die sie eingehen, um die Aufgaben des Systems zu erledigen. Je nachdem, welcher Aspekt gerade betrachtet wird, ist die eine oder andere Darstellungsform geeigneter oder zumindest suggestiver.
Bernd Kahlbrandt
8. Anwendungsfälle und Szenarien
Zusammenfassung
In diesem Kapitel werden die von Ivar Jacobson eingeführten Anwendungsfälle im Kontext der UML eingeführt. Sie folgt meiner augenblicklichen Einschätzung, wie diese am wirkungsvollsten eingesetzt werden können. Sowohl die Charakterisierung von Anwendungsfällen als auch die Notation geben zum Vergleich mit der strukturierten Analyse Anlass. Kapitel 16 enthält eine Diskussion des Verhältnisses der beiden Ansätze.
Bernd Kahlbrandt
9. Implementierungs-Diagramme
Zusammenfassung
Hardware- und Software-Objekte spielen eine besondere Rolle in der Entwicklung von Systemen. Ihre Funktionalität ist durch Anforderungen der Nutzer bestimmt, ihre interne Arbeitsweise durch die Arbeitsweise der Plattformen, auf denen oder in Verbindung mit denen sie zum Einsatz kommen Diese läßt sich durch die bisher eingeführten Diagramm-Typen sehr wohl darstellen. Die Struktur von Sourcecode oder Objectcode muss wenig mit den darin abgebildeten Objekten oder Klassen zu tun haben. Zum Teil handelt es sich hierbei um reine Konfigurationsfragen. Daher ist es sinnvoll, dafür passende Diagramme und Symbole vorzusehen, die sich insbesondere von den Klassen- und Objekt-Symbolen unterscheiden. Implementierungs-Diagramme zeigen die Konfiguration des Systems und der Software. Durch Kombination können differenziert auch komplexe Situationen modelliert werden.
Bernd Kahlbrandt

Methode

Frontmatter
10. Der objektorientierte Modellierungsprozess
Zusammenfassung
Der in diesem Buch beschriebene Entwicklungsprozess ist durch vier Eigenschaften charakterisiert:
1.
Anwendungsfall-orientiert (use case driven)
 
2.
Architektur-zentriert
 
3.
iterativ
 
4.
inkrementell.
 
Bernd Kahlbrandt
11. Analyse
Zusammenfassung
Ziel der Analyse ist ein hinreichend vollständiges Modell des Problembereiches und der Anforderungen des Benutzers an das System. Software-Engineering wird hier als „requirements engineering“ gesehen. Der Dreh- und Angelpunkt des gesamten Modells ist von der Analyse bis zur Implementierung das Modell der Klassen und ihrer Beziehungen: Assoziationen, Aggregationen und Generalisierungen. Diese Sicht auf die statische Struktur des Modells bildet die Basis aller weiteren Überlegungen. Die Anwendungsfälle und Szenarien dienen vor allem der Kommunikation mit dem Anwender und zur Detaillierung der Anforderungen. Die Erarbeitung von Anwendungsfällen mit den zugehörigen Szenarien liefert die relevanten Klassen und Beziehungen für das System. Reihenfolge- und Zustands-Diagramme beschreiben das dynamische Verhalten des Systems. Die korrekte Analyse des sinnvoll abgegrenzten Problembereiches ist Voraussetzung für erfolgreichen Software-Einsatz. Das ist unabhängig davon, ob Software erstellt werden oder Standard-Software zum Einsatz kommen soll. Genaugenommen kann eine solche Entscheidung erst nach einer hinreichend sorgfältigen Analyse getroffen werden. Das interne funktionale Verhalten des Systems, d.h. wie die bereits erkannten Operationen benutzt werden, wird in Kooperations-Diagrammen dargestellt. Komplexe Operationen können in Aktivitäten-Diagrammen spezifiziert werden.
Bernd Kahlbrandt
12. System-Design
Zusammenfassung
Ziel der Analyse ist eine möglichst korrekte Erfassung der Anforderungen an das System. Dies umfasst:
  • Die Erfassung, Präzisierung und Dokumentation der Anforderungen.
  • Analyse, Modellierung und Dokumentation der statischen Struktur und des Verhaltens der Objekte im Problemraum.
Bernd Kahlbrandt
13. Objekt-Design
Zusammenfassung
Im Objekt-Design werden die Klassen und Beziehungen entsprechend der im System-Design festgelegten Anwendungsstruktur präzise ausformuliert. Dabei werden die dort festgelegten Strategien konkret umgesetzt. Die bisher identifizierten und spezifizierten Klassen und Beziehungen, Attribute und Operationen bilden dabei einen Rahmen oder ein Gerüst:
  • Sie spiegeln die verabschiedeten Anforderungen an das System wieder.
  • Sie müssen im Hinblick auf die Implementierung präzisiert werden; insbesondere ist zwischen verschiedenen Implementierungsmöglickeiten zu entscheiden.
Bernd Kahlbrandt
14. Implementierungs-Strategien
Zusammenfassung
In diesem Kapitel geht es um die Implementierung mit objektorientierten Systemen, vor allem objektorientierten Programmiersprachen. Darüberhinaus wird die Speicherung von Objekten im Zusammenhang mit Dateisystemen und objektorientierten Datenbanken diskutiert. Die meisten Beispiele basieren auf einem konsequent objektorientierten Einsatz von C++. Sie lassen sich aber mit den entsprechenden Modifikationen auf Smalltalk und Java übertragen. Im Vordergrund stehen hier folgende Punkte:
  • Programmierstil.
  • Umsetzung der Qualitätsmerkmale aus Entwicklersicht in Code.
  • Sicherheit zur Laufzeit.
  • Anwendung der Modularisierungsprinzipien aus Kap. 4.
  • Performance.
Bernd Kahlbrandt
15. Relationale Datenbanken
Zusammenfassung
Objektorientierte Analyse, Design und Programmierung haben in vielen Bereichen gegenüber strukturierten Methoden an Boden gewonnen. Bei Datenbanken kann ich eine solche Entwicklung noch nicht zu erkennen. Den größten Anteil unter den eingesetzten Systemen haben wohl relationale Datenbanken und dies gilt auch, wenn man den Desktop-Markt mit seinen großen Stückzahlen von Produkten wie MS-Access oder Paradox herausrechnet. Es ist daher notwendig, sich zu überlegen, wie objektorientierte Programmiersprachen mit relationalen Datenbanken sinnvoll verbunden werden können. Wenn man objektorientierte Analyse und Design als sinnvoll erachtet, so braucht man darüber hinaus eine Strategie zur Umsetzung eines Klassen-Modells in ein logisches Datenbank-Design für ein relationales DBMS. Beides wird in diesem Kapitel dargestellt, wobei die Grundprinzipien relationaler Datenbanken als bekannt vorausgesetzt werden.
Bernd Kahlbrandt
16. Strukturierte Analyse und Anwendungsfälle
Zusammenfassung
Die strukturierte Analyse (SA) stellt die Ereignisse, auf die ein System reagieren soll, und die Funktionen, die dafür benötigt werden, in den Mittelpunkt der Untersuchung. Sie kommt mit wenigen Symbolen aus und das Vorgehen ist sehr schematisch. Gerade wegen dieser Einfachheit erfreut sich die SA weiterhin großer Beliebtheit, vgl. z. B. [Haw96]. Die SA muss eingebettet in einen größeren Modellierungsprozess betrachtet werden: Die strukturierten Methoden umfassen auch Datenmodellierung (Entity-RelationshipModellierung, auch semantische Modellierung, SM genannt), eine Strategie zum Übergang vom SA-Modell zu einem Implementierungs-Modell und Modul-Design (Strukturiertes Design, SD). Eine sehr gute Darstellung dieser Methodenlandschaft auf aktuellem Niveau bietet [Raa93] für den deutschsprachigen Raum. Dieses Buch hat die folgende Darstellung beeinflusst. Zur Definition der Begriff wird soweit wie möglich die bereits eingeführte Terminologie benutzt. Der Grund für die Aufnahme diese Kapitels waren verschiedene Diskussionen über das Verhältnis von SA und Anwendungsfällen.
Bernd Kahlbrandt
Backmatter
Metadaten
Titel
Software Engineering
verfasst von
Professor Dr. Bernd Kahlbrandt
Copyright-Jahr
1998
Verlag
Springer Berlin Heidelberg
Electronic ISBN
978-3-662-00034-2
Print ISBN
978-3-540-63309-9
DOI
https://doi.org/10.1007/978-3-662-00034-2