Presentation Transcript
Modellierung mit UML 2 :Modellierung mit UML 2 01.07.2008 Folie 1 Modellierung mit UML 2 Marc Giombetti Model-Driven DevelopmentProseminar im Sommersemester 2005
Was ist UML? :Modellierung mit UML 2 01.07.2008 Folie 2 Was ist UML? Die UML (Unified Modeling Language) ist eine von der Object Management Group (OMG) entwickelte Beschreibungsspache um Strukturen und Abläufe in Softwaresystemen zu:
modellieren
dokumentieren
spezifizieren
visualisieren
Sie entstand anfangs durch die Zusammenführung verschiedener Modellierungstechniken, die alle eine hohe Praxisrelevanz hatten:
unified – Eine Sprache für alles. → Breiteres Anwendungsgebiet:
gute Lesbarkeit
viel Semantik
allmögliche Systemaspekte / Sichten
...
Begründer: Boch, Rumbough und Jacobson
Was ist Modellbasierte Entwicklung? :Modellierung mit UML 2 01.07.2008 Folie 3 Was ist Modellbasierte Entwicklung? Unterscheidung:
Modell: vereinfachtes Abbild der Wirklichkeit.
Diagramm: grafische Darstellung von Daten oder Informationen.
Sicht: Gewisse Perspektive auf ein Modell. Stellt nur die für den jeweiligen Standpunkt relevanten Aspekte dar. (→ Abstraktion)
Was ist Modellbasierte Entwicklung? :Modellierung mit UML 2 01.07.2008 Folie 4 Was ist Modellbasierte Entwicklung? Automatisierung bei der Softwareerstellung.
Infrastrukturcode, Teilsysteme oder ganze Anwendungen generativ aus formalen Methoden ableitbar.
Modellierung einer Domäne (z.B Business-Bereich)
Entwicklung ausschließlich unter Verwendung von Operationen auf dem konzeptuellen Produktmodell.
Einige Vorteile:
Stakeholder nehmen im Prozess Teil.
Modellportabilität über Metamodelle.
Macht Komplexität beherrschbar.
Was ist Modellbasierte Entwicklung? :Modellierung mit UML 2 01.07.2008 Folie 5 Was ist Modellbasierte Entwicklung? Die Modellwelt: Modelle sind ein natürlicher Weg um komplexe Vorgänge und Systeme zu verstehen, damit sie dann in die Realität überführt werden können.
Entstehung vieler Modelle, doch
Die Kombination bereitet Schwierigkeiten
Inkonsistenzen
Komplizierter Planungsprozess (→“Unordnung“)
→ Idee: Wichtigste Modellnotationen in einer Sprache strukturiert zusammenführen und vereinigen → UML
Die Manipulation des Modells ist nur mittels Diagrammen möglich.
Die UML Diagramme stellen lediglich eine Sicht auf ein Modell dar.
Diagrammtypen :Modellierung mit UML 2 01.07.2008 Folie 6 Diagrammtypen 13 Diagrammtypen, unterteilt in:
statische Diagramme (Strukturdiagramme)
dynamische Diagramme (Verhaltensdiagramme)
Use-Case-Diagramm :Modellierung mit UML 2 01.07.2008 Folie 7 Use-Case-Diagramm Use-Case-Diagramme (dt: Anwendungsfall-Diagramme) beschreiben die Leistungen des Systems für:
seine Umwelt
Nachbarsysteme
Stakeholder
Beschreibung aus der Sicht eines Aussenstehenden. ( → Black-Box-Sicht)
Oftmals zur ersten Skizzierung eines Projektes verwendet. (→ Hohes Abstraktionsniveau)
einfaches Notationsmittel ( → auch für Laien (z.B. Kunden) intuitiv verständlich))
→ Hauptsächlich Analysemodell
Use-Case-Diagramm - Beispiel :Modellierung mit UML 2 01.07.2008 Folie 8 Use-Case-Diagramm - Beispiel Use-Cases auf einer Einweihungsfeier:
Klassendiagramm :Modellierung mit UML 2 01.07.2008 Folie 9 Klassendiagramm Klassendiagramme beschreiben:
Beziehungen (Schnittstellen, Assoziationen, Abhängigkeiten, Generalisierungen) zwischen Klassen und Typen.
Operationen / Methoden
Attribute
Zur Modellierung der statischen Struktur des Systems (statisches Diagramm).
Bildet die Brücke zu den dynamischen Diagrammen.
Meistverwendetes Diagramm (selten unverzichtbar, Kern der UML).
Ersetzt immer mehr die klassische Entity Relationship Notation.
Darstellung:
Klassendiagramm - Beispiel :Modellierung mit UML 2 01.07.2008 Folie 10 Klassendiagramm - Beispiel
Metamodell zur Überführung eines Analyse- in ein Designmodell :Modellierung mit UML 2 01.07.2008 Folie 11 Metamodell zur Überführung eines Analyse- in ein Designmodell
Codegenerierung :Modellierung mit UML 2 01.07.2008 Folie 12 Codegenerierung Ziel jeder Modellierung ist irgendwann die Umsetzung des Modells in Programmiercode.
Codegenerierung: Überführung eines UML-Modells in Programmiercode einer gewissen Sprache mittels Transformationsregeln.
Die Überführungsregeln ergeben sich aus dem Metamodell der UML als auch aus dem Metamodell der Zielprogrammiersprache.
Überführung meistens mit geeigneten Tools. Ein Tool ist besser je mehr Überführungsregeln es unterstützt (→ Round-Trip Engineering):
Tau/Developer
Poseidon for UML
Codegenerierung – Beispiel :Modellierung mit UML 2 01.07.2008 Folie 13 Codegenerierung – Beispiel
Codegenerierung – Beispiel :Modellierung mit UML 2 01.07.2008 Folie 14 Codegenerierung – Beispiel Java-Code des modellierten Partybeispiels : public abstract class Person {    // Eigenschaften    public String name;    public int alter;    public void trinke(int c) {         // Programmiercode    } }class Partyteilnehmer extends Person {    // Eigenschaften    public Boolean betrunken = false;    public void feiere() {         // Programmiercode    }  } class Partyveranstalter extends Person {    private int budget;    public void zahleRechnung(Euro betrag) {        //Programmiercode    } }  class Gastgeber ...    //Mehrfachvererbung ist in Java nicht darstellbar
Grenzen und Probleme :Modellierung mit UML 2 01.07.2008 Folie 15 Grenzen und Probleme Die Object Constraint Language (OCL) bringt viel Semantik in die Diagramme → Vereinfacht die Überführung in Quellcode, aber:
Überführung eines Modells per „Knopfdruck“ in fertigen Programmiercode ist nicht möglich.
Diagramme müssen interpretationsfrei sein.
Es ist nicht möglich ein leicht verständliches einfaches Diagramm zu haben, das zugleich alle Details enthält.
In der UML 2 Spezifikation ist nicht genau angegeben, wie ein Modell in Programmiercode überführt werden muss. ( → Überführung = Abhängig von UML-Tool)
Fazit :Modellierung mit UML 2 01.07.2008 Folie 16 Fazit Die UML 2 ist eine Sprache mit sehr hoher Praxisrelevanz im Softwareengineering („lingua franca des Softwareengineerings“)
Gelungene Zusammenführung praxisrelevanter und weitverbreiteter Modellierungstechniken.
Keine Methode! – Satz von Notationen zur Formulierung aus einer allgemeinen Sprache.
Entweder einfache, gut lesbare übersichtliche Diagramme, oder präzise komplexe Diagramme die prüfbar und automatisierbar sind.
UML wird der Anforderung nicht ganz gerecht, eine Sprache für alles zu sein, daher entstehen Erweiterungen:
UML-RT (Echtzeitfähigkeit)
xUML
UML Profile
Direkte Quellcodeerzeugung ist nur bedingt möglich. (Rumpf / Dynamik)
Kontakt Informationen :Modellierung mit UML 2 01.07.2008 Folie 17 Kontakt Informationen Marc Giombetti m_giombe@informatik.uni-kl.de Fragen ?
Zusatzfolie: Vom Platform Independent Model (PIM) zum Platform Specific Model (PSM) :Modellierung mit UML 2 01.07.2008 Folie 18 Zusatzfolie: Vom Platform Independent Model (PIM) zum Platform Specific Model (PSM) Problemlösung oftmals gleich; nur die Umsetzung ist variabel. Beispiel:
Die modellierte Party ist immer die Gleiche, aber → Realisierung in Java, C++, C# usw verschieden.
Ein Algorithmus und seine Implementierung in einer Sprache.
Um ein PIM in ein PSM zu überführen, werden zusätzliche Informationen über die Plattform gebraucht.
Grundsatz: Trennung von technologieunabhängigen und technologiebezogenen Notationen und Konzepten. Erspart:
Arbeit, Zeit und Geld bei der Portierung auf andere Plattformen.
Zusatzfolie: Ziele der UML :Modellierung mit UML 2 01.07.2008 Folie 19 Zusatzfolie: Ziele der UML Die wichtigsten Ziele der UML 2 lassen sich in 3 Kategorien aufteilen:
Übersichtlichkeit
Eliminierung verschiedener Modellkonstrukte
Weniger Basiskonzepte, dafür aber
konsequente Wiederverwendung (der Basiskonzepte)
Präzisionssteigerung
UML 2 basiert weitgehend auf der Object Constraint Language (OCL) (Semantiksteigerung)
Einheitliches Meta-Modell
Ausführbarkeit
executable UML (xUML)
Überführung verschiedener Modelle in Programmiercode durch
eindeutige
deterministische
interpretationsfreie
Diagramme
Zusatzfolie: Klassendiagramm - Präzisierung :Modellierung mit UML 2 01.07.2008 Folie 20 Zusatzfolie: Klassendiagramm - Präzisierung Es gibt 2 Arten von Klassendiagrammen
Konzeptuell-analytische Modellierung
abstrakte Sicht auf das System → Übersicht / Verständlichkeit
technische Details sind unwichtig (keine Operationen, keine Schnittstellen usw)
Verwendung: frühe Projektphase
Logische, Design-orientierte Modellierung
sehr hohe Präzision → Detailgenauigkeit
Beinhaltet technische Informationen → Quellcodeerzeugzung
Verwendung: spätere Projektphase
Zusatzfolie: Klassendiagramm - Notation :Modellierung mit UML 2 01.07.2008 Folie 21 Zusatzfolie: Klassendiagramm - Notation Klassendiagramme und die Notation für:
Abhängigkeiten
Assoziationen
Realisierung
Schnittstellen
Notizzettel für Kommentare (keine semantische Wirkung)