Modellieren mit UML Objektorientiertes Modellieren mit UML 2002 Prof. Dr. Rainer Manthey Informatik II 1 UML: Übersicht in den 1980er Jahren: Entstehen einer Vielzahl objektorientierter Entwurfsmethoden für Datenbanken und Softwareprojekte (frühe 90er: > 50 solche Methoden!) durchweg diagrammbasiert (Visualisierung!) statische Aspekte (Klassenstruktur): zurückgehend auf Entity-Relationship-Model (ER-Model) von Chen für relationale DB (1979) dynamische Aspekte (Ablaufstruktur): basierend auf Petri-Netzen (1960er Jahre, C.A.Petri, GMD/Bonn) und Statecharts (frühe 1980er Jahre, D. Harel) Ende 1994: Beginn einer intensiven Kooperation von drei führenden Entwicklern von OO-Methodologien und -Entwurfstools 2002 Prof. Dr. Rainer Manthey Informatik II 2
UML: Übersicht (2) Gründung der Firma Rational Software Corporation durch Grady Booch ("Booch method") James Rumbaugh ("Object Modeling Technique" OMT) Ivar Jacobson (OOSE-Methode, "use cases"), ab 1995 mit dabei Integration der drei Ansätze mit zahlreichen anderen "passenden" Techniken zur Unified Modeling Language (UML) baldige Unterstützung durch grösseres Konsortium von Softwareherstellern: Object Management Group (OMG) UML 1.0 1997 als Standardisierungsvorschlag UML 1.1 Ende 1997 standardisiert UML 1.3 1999 aktuell: UML 1.4 gültig, UML 2.0 in Vorbereitung 2002 Prof. Dr. Rainer Manthey Informatik II 3 The Three Amigos UML entstand als gemeinschaftliche Initiative dreier Wissenschaftler, die zuvor eigene, zum Teil konkurrierende Modellierungstechniken entwickelt hatten. Grady Booch James Rumbaugh Ivar Jacobson In der "UML-Subkultur" werden sie die "drei Amigos" genannt. 2002 Prof. Dr. Rainer Manthey Informatik II 4
UML: Quellen Alle offiziellen UML-Dokumente sind im Internet verfügbar: http://www.uml.org http://www.omg.org/uml/ http://www.rational.com/uml/ Spezifikation der Version 1.4 (auf Englisch, 566 S.): in Kopie über Vorlesungszeiten zum Herunterladen bereitgestellt weit verbreitete Bücher: G. Booch, J. Rumbaugh, I. Jacobson: "The Unified Modeling Language User Guide", Addison-Wesley, 1999 Martin Fowler: "UML Distilled", Addison Wesley, 1999 M. Hitz, G. Kappel: "UML@Work", dpunkt-verlag, 1999 2002 Prof. Dr. Rainer Manthey Informatik II 5 Eine wichtige Bemerkung vorweg! Bitte vergessen Sie nicht: In diesem kurzen Kapitel erhalten Sie nur einen ersten, oberflächlichen Eindruck davon vermittelt, was UML ist und kann. Viele Details der Modellierungssprache fehlen! Das "offizielle UML-Tutorium" von Booch, Rumbaugh und Jacobson hat fast 500 Seiten Umfang. Für professionelle, kommerzielle UML-Kurse werden heute oft weit mehr als 1000 Gebühren verlangt. intensive Beschäftigung mit UML: Vorlesung "Softwaretechnik" im Hauptstudium 2002 Prof. Dr. Rainer Manthey Informatik II 6
Diagrammarten in UML UML kennt neun Diagrammarten zur statischen und dynamischen Modellierung von Anwendungen: Interaktionsdiagramme Klassendiagramme Objektdiagramme Komponentendiagramme Einsatzdiagramme Sequenzdiagramme Kollaborationsdiagramme Zustandsübergangsdiagramme Aktivitätsdiagramme Anwendungsfalldiagramme statisch dynamisch (inzwischen drei weitere Diagrammarten zur Stukturierung grosser Systeme: Pakete, Subsysteme und Modelle) 2002 Prof. Dr. Rainer Manthey Informatik II 7 Übersicht für dieses Kapitel in diesem Kapitel: exemplarische Vorstellung einiger zentraler Diagrammarten (Vertiefung und andere Diagramme: Selbststudium!) Klassendiagramme Objektdiagramme Komponentendiagramme Einsatzdiagramme Sequenzdiagramme Kollaborationsdiagramme Zustandsübergangsdiagramme Aktivitätsdiagramme Anwendungsfalldiagramme zunächst zur Erinnerung: zwei Folien aus Informatik I mit Grundidee der Objektorientierten Programmierung 2002 Prof. Dr. Rainer Manthey Informatik II 8
K 2 K 3 Objektorientiertes Programmieren Sichtweise der objektorientierten Programmierung (idealisiert) Realweltobjekte Programmobjekte Programmbausteine modellieren direkt Objekte der Realität Programmablauf als Simulation realer Prozesse 2002 Prof. Dr. Rainer Manthey Informatik II 9 Klassen K 1 Gleichartige Objekte werden zu Klassen zusammengefasst. gleichartige interne Struktur gleichartiges Verhalten 2002 Prof. Dr. Rainer Manthey Informatik II 10
Obektorientierte Modellierung UML: graphikbasierte "Sprache", die den Prozess des objektorientierten Modellierens unterstützt "Modellieren": Phase vor dem eigentlichen Programmieren Identifizieren von Klassen, Attributen, Operationen Identifizieren von Beziehungen zwischen Klassen/Objekten systematisches Erfassen des Verhaltens von Objekten (als Grundlage für die Implementierung von Methoden) UML bietet graphische Darstellungsmöglichkeiten für die Grundkonzepte aller wichtigen OO-Programmiersprachen (C++, Java, Ada, Eiffel usw.) aber: UML ist unabhängig von einer speziellen Programmiersprache Textuelle Anteile werden meist in natürlicher Sprache formuliert. mittlerweile: Entwicklung einer logikbasierten "eigenen" Teilsprache zum Formalisieren von Einschränkungen (OCL: "Object Constraint Language") 2002 Prof. Dr. Rainer Manthey Informatik II 11 Klassendiagramme In einem Klassendiagramm werden zu jeder Klasse der Klassenname, Name, Typ und ggf. Anfangswert der Attribute Name und Parameterstruktur der Operationen festgelegt. Name Attribute Operationen 2002 Prof. Dr. Rainer Manthey Informatik II 12
Klassendiagramme (2) Klassendiagramme enthalten auch Informationen über unterschiedliche Arten von Beziehungen zwischen Objekten: Abhängigkeiten Generalisierungen Assoziationen Abhängigkeiten (engl.: "dependencies"): Abhängigkeit zwischen zwei Klassen drückt aus, dass Änderungen an Instanzen der einen Klasse A irgendwie Einfluss auf Instanzen der anderen (der "abhängigen") Klasse B haben können Beispiel: B ist Parametertyp einer Operation von A graphische Darstellung: gestrichelte Linie von A nach B A B 2002 Prof. Dr. Rainer Manthey Informatik II 13 Generalisierungen Generalisierungen sind Unter-/Oberklassenbeziehungen (im Sinne von Java), die mit den üblichen Annahmen für Klassenhierarchien verbunden sind: Instanzen einer Unterklasse sind auch Instanzen aller Oberklassen. Attribute und Methoden werden an Unterklassen vererbt. Mehrfachvererbung ist erlaubt; diverse "constraints" stehen zur Verfügung (z.b.: disjoint, overlapping); abstrakte Klassen und Operationen (kursiv) 2002 Prof. Dr. Rainer Manthey Informatik II 14
Assoziationen Assoziationen sind semantische oder strukturelle Beziehungen zwischen Objekten. graphische Darstellung: gerichtete oder ungerichtete, durchgezogene Linien zwischen Klassen (ggf. markiert mit Rollen) Beispiel: Student Vorlesung Hörer Beschränkungen der Anzahl von Objekten, die über eine Assoziation verbunden sein dürfen, ausdrückbar durch Multiplizitäten: 1 mit genau einem Objekt verbunden 0.. 1 mit keinem oder einem Objekt verbunden 0.. * mit beliebig vielen Objekten verbunden 1.. * mit mindestens einem Objekt verbunden 2002 Prof. Dr. Rainer Manthey Informatik II 15 Aggregation Spezialfall von Assoziation: Objekte des Typs A sind (strukturell) Teile von Objekten des Typs B Aggregation Notation: Raute am B-Ende der Assoziationslinie von A nach B Beispiel: Firmen setzen sich aus Abteilungen zusammen Abteilung Firma * 1 generell bei Aggregation: Objekt kann Teil verschiedener zusammengesetzter Objekte sein und existiert auch dann weiter, wenn "Oberobjekt" verschwindet Verschärfung bei Komposition (ausgefüllte Raute): nur ein Oberobjekt und Existenzabhängigkeit des Unterobjekts vom Oberobjekt 2002 Prof. Dr. Rainer Manthey Informatik II 16
Objektdiagramme analog zu Klassendiagrammen: Darstellung von Objekten und deren Eigenschaften und Beziehungen untereinander auf der Instanzebene Objektdiagramme Klasse Objekt-ID p: Person Attributwerte name = "Booch" titel = "Dr." gehalt = "120000 manager f: firma name = "Rational" Link 2002 Prof. Dr. Rainer Manthey Informatik II 17 Aktivitätsdiagramme Anfangszustand Aktivitätsdiagramme modellieren das Verhalten von Objekten. a 1 Aktionszustände Verzweigung a 2 [c 1 ] Transitionen Aktionen sind elementare Aktivitäten, die nicht unterbrochen werden können und keine signifikante Zeit benötigen. [c 2 ] a 3 Transitionen sind Übergänge zwischen Aktionen, die ebenfalls keine Zeit benötigen. Endzustand 2002 Prof. Dr. Rainer Manthey Informatik II 18
Aktivitätsdiagramme (2) fork Parallele Aktivitäten ausdrückbar durch Aufspaltung ("fork") Zusammenführung ("join") join Zu jedem "fork" mit m ausgehenden Transitionen gehört ein "join" mit m eingehenden Transitionen. 2002 Prof. Dr. Rainer Manthey Informatik II 19 andere dynamische Diagrammarten prinzipiell ähnliche Diagrammarten zur Modellierung von Verhalten: Zustandsübergangsdiagramme ("state-transition diagrams") Aktivitätsdiagramme betonen mehr die dynamische Interaktion zwischen Objekten verschiedener Klassen, während Zustandsdiagramme das interne "Verhalten" der Instanzen einer bestimmten Klasse modellieren helfen. anderer Stil der Verhaltensmodellierung: Darstellung von Abläufen durch Austausch von Botschaften ("message passing") zwischen Objekten auch hierbei wieder unterschiedlicher Fokus bei der Modellierung: Sequenzdiagramme: Ablauf steht im Vordergrund Kollaborationsdiagramme: Interaktion steht im Vordergrund last not least: Anwendungsfalldiagramme ("use cases") dienen zur groben Organisation der Interaktion zwischen Akteuren und zu modellierender Anwendung in bestimmten typischen Situationen ("use cases") 2002 Prof. Dr. Rainer Manthey Informatik II 20
Zustandsübergangsdiagramme Quelle: http://www.rational.com/uml/resources/quick/uml_poster.jsp 2002 Prof. Dr. Rainer Manthey Informatik II 21 Sequenzdiagramme Quelle: http://www.rational.com/uml/resources/quick/uml_poster.jsp 2002 Prof. Dr. Rainer Manthey Informatik II 22
Kollaborationsdiagramme Quelle: http://www.rational.com/uml/resources/quick/uml_poster.jsp 2002 Prof. Dr. Rainer Manthey Informatik II 23 Anwendungsfalldiagramme Anwendungsfalldiagramm ("use case diagram"): Quelle: http://ivs.cs.uni-magdeburg.de/~dumke/uml/1.htm 2002 Prof. Dr. Rainer Manthey Informatik II 24
Schlussbemerkung Dieses Kapitel über UML ist aufgrund des aktuellen Streiks eingeschoben worden, um die Möglichkeit zu haben, Stoff für die "Hörwilligen" parat zu haben, der zwar interessant und wissenswert ist, aber nicht zum Kern der Vorlesungsthemen gehört. Die Inhalte dieses Kapitels werden nicht für die Klausur relevant sein. Andererseits sollte man als Informatiker heutzutage UML in den Grundzügen kennen, auch schon im Grundstudium. 2002 Prof. Dr. Rainer Manthey Informatik II 25