Modellierung Mit UML - Uni-tuebingen.de

Transcription

Modellierung mit UMLJonathan Brachthäuser (mit Folien von Theo Doukas)10. Mai 2017

Die Folien orientieren sich u.a. am Kurs Software Engineering vonHans-Werner Six und Mario Winter.

Einordnung

Anforderungen und Designs kommunizierenUnified Modeling Language (UML)Strukturelle Modellierung: Objekt- und nAggregationenGeneralisierung und InterfacesWeitere tionsdiagrammZustandsdiagramm

Literatur

Wie kommunizieren wir Anforderungen und Designs?Beispiele (für Notationsarten)I(textuelle) ProgrammiersprachenImathematische FormelnIinformeller TextIinformelle graphische Darstellungen (z.B. grafische ad-hocNotation an der Tafel)Iformelle graphische Modellierungssprachen (z.B. UML)Die Wahl der Notation beeinflusst u.a.IEffektivität und Effizienz der KommunikationIDie Art wie über ein Problem nachgedacht wird und denProblemlösungsvorgang selbst

Cognitive Dimensions FrameworkWie wählt man geeignete Notationen aus?I“Cognitive Dimensions Framework” (Green & Petre, 1996)IBietet Vokabular und Konzepte zur Evaluation von NotationenBeispiele (für Kognitive Dimensionen)IAbstraction GradientICloseness of ie Dimensionen können genutzt werden, um einzuschätzen, obeine Notation für einen gewissen Einsatz geeignet ist.

Abstraction GradientGrad, zu dem eine Notation Abstraktion unterstütztIGruppierung von Elementen,die als ein Elementverstanden / behandeltwerden könnenIErmöglicht Detailsvorrübergehend zu ignorierenund Zusammenhänge zuerkennen

Closeness of MappingIIProgrammieren als “mapping” zwischen Problem Domäneund ProgrammNotation sollte möglichst nah an Problem Domäne sein:IIminimale Anzahl an lexikalischer Konzepte pro Konzept ausder Problem DomäneOperationen im Programm sollten Operationen aus derProblem Domäne entsprechen

ConsistencyIGrad an Widerspruchsfreiheit der einzelnen NotationselementeIHier: Wie gut kann ein Nutzer mit partiellem Wissen über dieNotation den Rest der Notation erschließen?IKonsistenz kann innerhalb einer Notation bewertet werden,aber auch zwischen NotationenIu. A. Motivation für Standards: Ein Standard hilft dem Lesersich auf Bekanntes zu verlassen und den Rest zu erschließen

Diffuseness / TersenessIBestimmt durch Anzahl an lexikalischer NotationselementeIIn der Bewertung von Programmiersprachen informell häufigbezeichnet als “Syntactic Noise”I“Closeness of Mapping” und “Diffuseness” beeinflussen sichgegenseitig

Error-pronenessIBeschreibt wie Fehleranfällig / Fehlertolerant die Notation istIFehlerproportionalität: Führen kleine fehlerhafte Änderungenzu kleinen Unterschieden in der Bedeutung?IKönnen Fehler einfach identifiziert werden?

Was ist UML?UML ist eine standardisierte, graphische Modellierungssprache,ausgelegt für die Objekt Orientierte Modellierung vonSoftwaresystemen.IFormal: Jedes Sprachelement hat eine definierte BedeutungIUmfassend: UML kann verwendet werden, um die meistenAspekte eines Systems zu modellierenIPräzise: Die Lexeme / atomaren Elemente der Sprache sindeinfache Formen und SymboleIPraktisch Motiviert: UML fasst Erfahrungen aus mehrerenJahrzehnten Modellierungspraxis zusammenIStandardisiert: Offener Standard (794 Seiten in Version 2.5),die wichtigsten Konzepte sind den meisten Entwicklernbekannt

Bedeutungsebenen in UML

Diagrammarten in dieser VorlesungStrukturelle ModellierungIKlassendiagramm (Class Diagram)IObjektdiagramm (Object m (Interaction Diagram, früher SequenceDiagram)IZustandsdiagramm (State Diagram)

Was sind Objekte?IPhilosophie: “(Materieller oder gedachter) Gegenstand derBetrachtung, mit bestimmten Eigenschaften (Aussehen,Verhalten) ausgestattet”.IOOP: Wir betrachten keine realen Objekte, sondern nur dieModellierung solcher Objekte.IDie Modellierung fokussiert auf die wichtigen(beobachtbaren) Eigenschaften des Objektes.IGenau die im Kontext benötigten Eigenschaften werdenbetrachtet, darüber hinausgehende gibt es nicht.

Graphische Darstellung von ObjektenIDarstellung eines Objekts als Rechteck. Name des Objekteswird unterstrichen.ObjektnameIObjekte sind Instanzen von Klassen. Darstellung erfolgt durchAnnotation des Klassennamens nach einem Doppelpunkt.Objektname : KlassennameIObjektnamen können weggelassen werden.: Klassenname

Objekte mit EigenschaftenAttributeIObjekteigenschaften heißen “Attribute”.IAttribute bestimmen den Zustand des Objektes.BeispielMyPorschecolor “red”seats 2mileage 123456driver “Markus”Idriver ist hier ein (einfaches) Attribut. Wir können den Fahrerselber aber auch als Objekt modellieren.

Assoziationen (Verbindungen) zwischen ObjektenBeispielMarkusage 25driversLicense “B”MyPorschesitsIncolor “red”seats 2mileage 123456DarstellungINamen von Assoziationen zwischen Objekten (optional)werden unterstrichen.IAssoziationen können gerichtet sein, wie hier im Beispiel.IB bedeutet:Richtung: AA “kennt” B und kann Dienste von B aufrufen.

Klassen von ObjektenDefinitionIKlasse Menge von Objekten mit denselben Attributen undidentischem Verhalten.IDas Verhalten von Objekten wird durch die bereitgestelltenOperationen (oder Dienste) bestimmt.IDie von der Klasse beschriebenen Objekte heißen Instanzender Klasse.

KlassendiagrammeEin KlassendiagrammIIzeigt die statische Struktur eines Systemsbildet die Grundlage für ObjektdiagrammeIIIKlassen können zu Objekten instanziiert werdenAssoziationen zwischen Klassen können zu konkretenAssoziationen zwischen Objekten instanziiert werdenObjektdiagramme als Instanzen von Klassendiagrammenmüssen die modellierten Randbedingungen im Klassendiagram(z.B. Multiplizitäten) einhalten

Darstellung von EngineRunning()shiftGearTo(gearNumber)Darstellung von KlassenIDreigeteilt: Name, Attribute, Operationen.IOptional: weitere Angaben für Attribute und Operationen,z.B. Sichtbarkeit (public/private) und Typen. Dazu spätermehr.

AssoziationenBeispielCar*owner0,1PersonIJedes Auto hat höchstens eine Person als Besitzer.IJede Person kann beliebig viele Autos besitzen.MultiplizitätenI1: genau eine verbundene Instanz,I*: beliebig viele verbundene Instanzen (evtl. keine),I0,1: höchstens eine verbundene Instanz,I1.*: mindestens eine verbundene Instanz.

Gerichtete AssoziationenAuch Assoziationen können gerichtet sein, sie heißen edeutet: zu jedem Auto lässt sich der Besitzer feststellen.IImpliziert: Die Klasse Car enthält eine Operation, die einObjekt der Klasse Person zurückgibt, z.B. getOwner().

Assoziationen mit AttributenAssoziationen können selbst als Klassen modelliert werden und mitAttributen ausgestattet werden.BeispielCar*ownerperson*Ownershipfrom: Dateto: DateIEinem Auto werden nun beliebig viele Besitzer zugeordnet.IJeder Besitz ist durch ein Zeitintervall (from . . . to) zusätzlichgekennzeichnet.

AggregationHierarchie auf verbundenen InstanzenITeil-Ganzes-VerhältnisIGanzes-Instanz hat “Verantwortung” für die Teil-Instanzen.IZerstören der Ganzes-Instanz erfordert Strategie für Umgangmit -ausgefüllte Raute am Ganzes-Ende.Student

KompositionBesondere Art der AggregationTeil-Instanzen . . .Idürfen nur von Operationen der Ganzes-Klasse entferntwerdenIdürfen nicht Teil anderer Kompositionen seinIwerden beim Zerstören der Ganzes-Instanz automatisch(kaskadierend) mit zerstört.BeispielCarI1tiresAusgefüllte Raute am Ganzes-Ende.4Tire

GeneralisierungBeziehung zwischen allgemeiner und spezieller KlasseIAlles, was für eine Instanz der allgemeinen Klasse (Oberklasse)zutrifft, gilt auch für die spezielle Klasse (Unterklasse).IAlles Attribute, Operationen, -ausgefülltes Dreieck und durchgezogene LinieIImpliziert häufig in Code:class Unterklasse extends Oberklasse {}

tuierbarkeitsprinzipIJedes Vorkommen einer Instanz der Oberklasse (inSpezifikation, Quelltext oder Programm) kann durch eineInstanz der Unterklasse ersetzt werden.

Abstrakte Klassen und InterfacesDrei Arten von KlassenIIReguläre Klassen: sämtliche Operationen sind implementiertAbstrakte Klassen:IIIfür mindestens eine Operation wird keine Impl. angegebenhaben keine InstanzenInterfaces:IIIbesitzen keine Attributeimplementieren keine Operationensind höchstens Ziel einseitig navigierbarer Interface

aceNameoperation()KlasseIvgl. Generalisierung: “operation()” (zwischen Klassen).Alternative (einfache) DarstellungKlasseInterfaceNameoperation()

Klassenattribute und -operationenSemantikIKlassenattribut: Statisches Attribut, zugehörig zur Klasse,nicht zu den Instanzen der Klasse.IKlassenoperation: Statische Operation, welche nicht imKontext einer bestimmten Instanz, sondern im Kontext derKlasse ausgeführt bute und -operationen werden unterstrichen.

Sichtbarkeit und TypenBeispielCar- mileage: int getMileage() : int shiftGearTo(in gearNumber : int) : voidNotationISichtbarkeit: public ( ), private (-), protected (#), packageIÜbergabeart: in, out, inoutITypen: primitive Typen und Namen von Klassen undInterfacesDiese Elemente sind optional und dürfen weggelassen werden.

age startEngine()TruckloadCapacity openRoof()NutzungIGruppierung von ModellierungselementenISichtbarkeitsgrenzen (public package private)

Beispiel Klassendiagramm: Abstrakte Syntax von UML

VerhaltensmodellierungWir betrachten hier zwei Arten von Diagrammen:IInteraktionsdiagramm: Ablauf von Anwendungsfällen;Austausch von Nachrichten zwischen Objekten.IZustandsdiagramm: Zustandsorientiertes Verhalten;Zusammenspiel von Zuständen und Operationen.BemerkungIUML kennt noch andere Formen der laborationsdiagramm

()Austausch von Nachrichten zwischen ObjektenIObjekte und Lebenslininen (gestrichelt)IZeitachse: von oben nach untenI:Driverbedeutet: Objekt vom Typ DriverIPfeil in Richtung der Nachricht(synchrone Nachricht: ausgefülltes Dreieck)IAktivierungsbalken: Objekt führt Operation aus

ne()start()DarstellungI“”: synchrone Nachricht, Aufrufer wartet auf RückkehrI“”: Rückkehr nach OperationsabschlussI“”: asynchrone Nachricht, nur an aktives ObjektI“ :Engine ”: aktives Objekt (dicker Rahmen), besitzt eigeneAblaufkontrolle (Thread)

lfDiagnose()checkOil()start()IKlasse Auto: startEngine() ruft selfDiagnose() auf sich selbstauf.IDie Operation selfDiagnose() kann selbst weitere Operationenaufrufen (hier: Engine.checkOil()).

ZustandsdiagrammZustand eines ObjektsIZustand: zu jedem Zeitpunkt gegeben durch Attributwerteund Verbindungen mit anderen Objekten.IIm Zustandsdiagramm werden aber gewöhnlich viel wenigerZustände unterschieden als es Kombinationen vonAttributwerten gibt.BeispielI (Zustand: Wasser ist flüssig) Alle Kombinationen von Attributwerten mit 0 T 100ModellierungIEigenschaften außer acht lassen, die das Verhalten nichtbeeinflussen.

Zustände und ÜbergängeBeispielStartEngine offEngine runningStopIStart und Stop bezeichnet Ereignisse, dieZustandsübergänge auslösen.Arten von EreignissenIAufrufereignis: Empfang einer Nachricht ( Ausführungeiner Operation)IÄnderungsereignis: Änderung von Umgebungsbedingungen,z.B. Zuständen anderer ObjekteIZeitereignis: z.B. Ablauf eines Timers

Wächter, Entry/Exit-Aktionen, Initial-/TerminalzustandBeispiel (einfaches Getriebe: Nur Hoch- und Runterschalten)Reverseentry / Rearlight onexit / Rearlight offShift down[Not moving]Shift downNo GearShift up1. GearShift upISchalten in Rückwärtsgang nur bei stehendem Wagen(Wächterbedingung)IEingangsaktion beim Erreichen (entry) und Ausgangsaktionbeim Verlassen (exit) des ZustandsI: Initialzustand (keine eingehenden Transitionen),:Terminalzustand (keine ausgehenden Transitionen)

Zusammengesetzte Zustände, UnterzuständeBeispiel (automatisches Getriebe)Shift RNo GearShift VReverseShift RShift LForwardShift upCar stops1. GearShift up2. GearShift down3. GearShift downForward ist zusammengesetzter Zustand. Übergang.Iendet auf Kontur endet auf Unter-InitialzustandIgeht von Kontur aus verbindet alle Unterzust. (außer )Ivon Kontur zu Unterzust.: bei Eintritt des Ereignisses

UML ist eine standardisierte, graphische Modellierungssprache, ausgelegt f ur die Objekt Orientierte Modellierung von Softwaresystemen. I Formal: Jedes Sprachelement hat eine de nierte Bedeutung I Umfassend: UML kann verwendet werden, um die meisten Aspekte eines Systems zu modellieren I Pr azise : Die Lexeme / atomaren Elemente der Sprache sind einfache Formen und Symbole I Praktisch .File Size: 1MBPage Count: 43