Die Unified Modeling Language (UML), zu Deutsch: „ver­ein­heit­lich­te Mo­del­lie­rungs­spra­che“, ist ein Standard zur visuellen Dar­stel­lung von Objekten, Zuständen und Prozessen innerhalb eines Systems. Die Mo­del­lie­rungs­spra­che kann zum einen als Blaupause für ein Projekt dienen und so eine struk­tu­rier­te In­for­ma­ti­ons­ar­chi­tek­tur ge­währ­leis­ten; zum anderen hilft sie Ent­wick­lern, die Sys­tem­be­schrei­bung für Fach­frem­de nach­voll­zieh­bar dar­zu­stel­len. UML findet haupt­säch­lich Anwendung in der ob­jekt­ori­en­tier­ten Software-Ent­wick­lung. Durch Er­wei­te­run­gen des Standards in der Version 2.0 eignet er sich auch für die Dar­stel­lung von Ge­schäfts­pro­zes­sen.

Ent­ste­hung der Unified Modeling Language

Bevor die UML Einzug in die Software-Ent­wick­lung hielt, wuchs das Feld der ob­jekt­ori­en­tier­ten Pro­gram­mie­rung (OOP). Dieser Pro­gram­mier­stil basiert auf dem Konzept, dass alles ein Objekt ist: Die Bausteine eines Programms sind Objekte, die mit­ein­an­der in­ter­agie­ren. Die Nach­rich­ten, die zwischen den Be­stand­tei­len hin und her gesendet werden, bestehen ebenso aus Objekten. Jedes einzelne Objekt steht ex­em­pla­risch für seine über­ge­ord­ne­te Klasse. Die Klasse selbst agiert auch als Objekt und bestimmt zudem das Verhalten der Ob­jekt­in­stan­zen, die sie be­inhal­tet. Objekte bestehen aus Daten und Code. Die Daten ordnet das Objekt in Felder, auch Attribute genannt. Der Code bestimmt deren Ver­fah­rens­wei­se bzw. die Methode.

Vom Ende der 1980er Jahre bis hinein in die 1990er Jahre entstand eine Vielzahl von Methoden und Sprachen zur mo­dell­haf­ten Dar­stel­lung von ob­jekt­ori­en­tier­ter Pro­gram­mie­rung. Die Folge war eine un­über­sicht­li­che Fülle an un­ter­ein­an­der kaum ver­gleich­ba­ren Methoden. Um diese zu ver­ein­heit­li­chen, ent­schlos­sen sich die drei Ent­wick­ler James Rumbaugh, Grady Booch und Ivar Jacobson dazu, mehrere be­stehen­de Sprachen in einem ge­mein­sa­men Standard zu­sam­men­zu­füh­ren.

Die drei hatten bereits jeweils eigene ob­jekt­ori­en­tier­te Software-Ent­wick­lungs-Methoden kreiert:

  • die Booch-Methode
  • die Object-Modeling-Technik (OMT)
  • die Object-Oriented Software-En­gi­nee­ring-Methode (OOSE)

Als Mo­del­lie­rungs­spra­che sollte UML die Semantik bei der Dar­stel­lung dieser Methoden festlegen. Unter dem Namen „UML Partners“ ar­bei­te­ten die Ent­wick­ler ab 1996 mit einem Team an der Fer­tig­stel­lung von UML. An­schlie­ßend übergaben sie es an die Object Ma­nage­ment Group (OMG), die wiederum 1997 die Unified Modeling Language in der Version 1.1 als Standard einführte.

Damit noch nicht zu­frie­den­ge­stellt, gründeten die Ent­wick­ler eine Task Force, die die Sprache über mehrere Versionen hinweg ver­bes­sern sollte. Be­stehen­de Kri­tik­punk­te waren u. a. eine unpräzise, unnötig komplexe Semantik, eine mangelnde An­pass­bar­keit und eine un­ge­nü­gen­de Stan­dar­di­sie­rung. Deshalb wurde eine größer angelegte Über­ar­bei­tung vor­ge­nom­men. Das Ergebnis war schließ­lich UML 2.0, das 2005 den neuen Standard setzte. Die Version 2.4.1 bildet die Grundlage für die ISO-Nor­mie­rung 19505-1 (In­fra­struk­tur) und 19505-2 (Su­per­struk­tur) von 2012. Die UML-Version 2.5.1 erschien im Dezember 2017.

UML: Wichtige Begriffe

Die Unified Modeling Language wird von einigen als Lingua franca unter den Mo­del­lie­rungs­spra­chen be­zeich­net. Wie eingangs erwähnt, ver­deut­licht die UML durch visuelle Dar­stel­lung die Zustände von und In­ter­ak­tio­nen zwischen Objekten innerhalb eines Systems. Ihre weite Ver­brei­tung verdankt sie mög­li­cher­wei­se dem großen Einfluss der OMG-Mit­glie­der (u. a. IBM, Microsoft und HP). Die struk­tu­rier­te Semantik trägt ihr Übriges dazu bei. Mit UML-Dia­gram­men stellen Sie folgende Sys­tem­be­stand­tei­le dar:

  • einzelne Objekte (grund­le­gen­de Be­stand­tei­le)
  • Klassen (fasst Elemente mit gleichen Ei­gen­schaf­ten zusammen)
  • Be­zie­hun­gen zwischen Objekten (Hier­ar­chie und Verhalten/Kom­mu­ni­ka­ti­on zwischen Objekten)
  • Aktivität (komplexe Kom­bi­na­ti­on von Aktionen/Ver­hal­tens­bau­stei­nen)
  • In­ter­ak­tio­nen zwischen Objekten und Schnitt­stel­len

Me­ta­mo­del­lie­rung

UML 2.0 legt Sprach­ein­hei­ten fest, die auf ver­schie­de­nen Ebenen agieren. Mit diesen drücken Sie die Struktur und das Verhalten eines Systems aus. Einige Elemente nutzt die Mo­del­lie­rungs­spra­che, um sich selbst zu de­fi­nie­ren. Die Meta-Mo­del­lie­rung umfasst alle Elemente von UML, auch solche, die UML selbst be­schrei­ben. Dafür nutzt es vier hier­ar­chisch an­ge­ord­ne­te Ebenen (M0 bis M3).

Die Meta-Metaebene M3 spe­zi­fi­ziert die Metadaten der Mo­del­lie­rungs­spra­che und deren Zu­sam­men­hän­ge mithilfe der Meta Object Facility (MOF). Sie definiert das Me­ta­mo­dell. Zudem befähigt Sie den Metadaten-Transfer. Das von der OMG de­fi­nier­te Format XMI ist ein prak­ti­sches Tool, um ob­jekt­ori­en­tier­te Daten auf Meta-Metaebene zwischen Ent­wick­lungs­tools zu teilen. Die Object Cons­traint Language (OCL), eine de­kla­ra­ti­ve Pro­gram­mier­spra­che, ergänzt UML und reguliert Rand­be­din­gun­gen der je­wei­li­gen Mo­del­lie­rung. Als Text­spra­che wirkt sie jedoch nur un­ter­stüt­zend, statt selbst für Mo­del­lie­rung zur Verfügung zu stehen.

Die obere Grafik zeigt die Me­ta­mo­del­lie­rung von UML 2.0. Ebene M0 ist die grund­le­gen­de Ebene. Sie stellt konkrete, reale Objekte und einzelne Da­ten­sät­ze dar – z. B. ein Objekt oder eine Kom­po­nen­te. Ebene M1 umfasst alle Modelle, die die Daten der Ebene M0 be­schrei­ben und struk­tu­rie­ren. Das sind UML-Diagramme wie das Ak­ti­vi­täts­dia­gramm oder das Pa­ket­dia­gramm (weiter unten erklärt). Um den Aufbau dieser Modelle zu de­fi­nie­ren, legen Me­ta­mo­del­le der Ebene M2 die Spe­zi­fi­ka­tio­nen und Semantik der Mo­dell­ele­men­te fest. Wollen Sie ein ver­ständ­li­ches UML-Diagramm erstellen, müssen Sie das Me­ta­mo­dell UML mit seinen Regeln kennen. Die höchste Ebene, M3, ist ein Me­ta­mo­dell des Me­ta­mo­dells. Die erwähnte Meta Object Facility arbeitet auf einer abs­trak­ten Ebene, die Me­ta­mo­del­le definiert. Diese Ebene definiert sich selbst, da sonst weitere, über­ge­ord­ne­te Meta-Ebenen ent­stün­den.

Sprach­ein­hei­ten

UML (Ebene M2) legt die Regeln für seine eigene Semantik fest. Die Sprach­ein­hei­ten sind Begriffe, die in der UML 2.0 Su­per­s­truc­tu­re definiert werden. Das er­mög­licht eine formale Dar­stel­lung, die alle Be­tei­lig­ten verstehen können. Sprach­ein­hei­ten, im Eng­li­schen language units, abs­tra­hie­ren ähnlich auf­ge­bau­te und funk­tio­nie­ren­de Objekte und Prozesse und geben ihnen eine visuell dar­stell­ba­re Form. Je nach Hier­ar­chie-Ebene innerhalb des Modells über­neh­men Elemente weiter spe­zia­li­sier­te Aufgaben oder de­fi­nie­ren andere Elemente näher.

Klasse: Als Sprach­ein­heit sind Klassen ein Kern­aspekt von UML. Sie de­fi­nie­ren, was eine Klasse ausmacht und wie Klassen mit­ein­an­der in­ter­agie­ren. Diese language unit hat vier Ebenen, die von simplen Elementen bis zu kom­ple­xe­ren Be­zie­hun­gen reichen:

  • Kernel (be­schreibt Elemente aus der UML 2.0 In­fra­struc­tu­re wie Paket, Na­mens­raum, Attribut etc.)
  • As­so­cia­tion­Clas­ses (definiert As­so­zia­ti­ons­klas­sen)
  • In­ter­faces (definiert Schnitt­stel­len)
  • Power­ty­pes (Klasse, deren Instanzen Sub­klas­sen innerhalb dieser Klasse sind)

Kom­po­nen­te: Kom­po­nen­ten sind Be­stand­tei­le, die ihren Inhalt vom äußeren System abgrenzen. Nur durch Schnitt­stel­len oder Ports besteht eine Ver­bin­dung nach außen. Ein Kom­po­si­ti­ons­kon­nek­tor stellt über die Schnitt­stel­le eine Ver­bin­dung mit einer anderen Kom­po­nen­te her. Der De­le­ga­ti­ons­kon­nek­tor verknüpft innere Elemente mit einer Schnitt­stel­le an der Au­ßen­gren­ze. Kom­po­nen­ten sind modular aufgebaut und aus­tausch­bar.

Kom­po­si­ti­ons­struk­tur: Die Sprach­ein­heit Kom­po­si­ti­ons­struk­tur be­schreibt Elemente, die wie Kom­po­nen­ten nach innen und außen ab­ge­schirmt sind. Nur Ports verbinden den Inhalt mit dem äußeren System. Die so­ge­nann­ten ge­kap­sel­ten Clas­si­fier setzen sich aus Elementen, den Parts, zusammen. Parts kom­mu­ni­zie­ren über Kon­nek­to­ren.

Profil: Ein Profil kon­fi­gu­riert UML 2.0 für bestimmte Be­dürf­nis­se. Abstrakte Begriffe wie Aktivität oder Objekt müssen für manche Projekte spe­zi­fi­ziert werden, um das Ver­ständ­nis zu erhöhen. Stel­len­wei­se locker gesetzte Semantik und No­ta­tio­nen passen Sie mit einem Profil an.

Modell: Das Modell umfasst alle Elemente, die dazu nötig sind, eine spe­zi­fi­sche Sicht auf Struktur oder Verhalten eines Systems dar­zu­stel­len. Dazu gehören auch externe Einflüsse wie Akteure.

Aktion: Wenn es darum geht, Verhalten dar­zu­stel­len, sind Aktionen von zentraler Bedeutung. Sie nehmen Werte über Ein­ga­be­pins auf und geben sie an Aus­ga­be­pins aus. Das sind die the­ma­ti­schen Gruppen, die UML für Aktionen festsetzt:

  • Objekte ma­ni­pu­lie­ren
  • Ob­jekt­be­zie­hun­gen ma­ni­pu­lie­ren
  • Struk­tur­merk­ma­le ma­ni­pu­lie­ren
  • Aufruf-Aktionen
  • Werte erzeugen
  • Aktionen auf Objekten
  • Empfangen von Er­eig­nis­sen

Verhalten: Die Sprach­ein­heit Verhalten bzw. Ver­hal­tens­be­schrei­bung meint die Mo­del­lie­rung von dy­na­mi­schen Aspekten innerhalb eines Systems. Sie umfasst drei Spe­zi­fi­ka­tio­nen:

  • Aktivität: Aktionen in­ter­agie­ren durch Daten- und Kon­troll­flüs­se. Dadurch ergibt sich ein komplexes System von Ver­hal­tens­wei­sen – die Ak­ti­vi­tä­ten.
     
  • In­ter­ak­ti­on: Dieses Me­ta­mo­dell be­schreibt, wie Nach­rich­ten­flüs­se zwischen Objekten aus­ge­tauscht werden, wann eine Nachricht an welches Objekt gesendet wird und welche anderen Elemente dadurch be­ein­flusst werden.
     
  • Zu­stands­au­to­ma­ten: In einem Zu­stands­dia­gramm mo­del­liert dieses Me­ta­mo­dell Zustände (Si­tua­tio­nen mit un­ver­än­der­ba­ren Ei­gen­schaf­ten) sowie Pseudo-Zustände (Zustände ohne Wer­te­be­le­gung) und deren Übergänge. Objekte in einem Zustand können Aktionen bzw. Ak­ti­vi­tä­ten zu­ge­ord­net werden.

Ver­tei­lung: Ein Netzwerk besteht aus Objekten, die mit­ein­an­der in Maschen verbunden sind. Ein spe­zi­el­ler An­wen­dungs­fall besteht, wenn diese Elemente lauf­fä­hi­ge Software bzw. Artefakte dar­stel­len. Diese Artefakte laufen auf Aus­füh­rungs­um­ge­bun­gen oder Geräten, die UML 2.0 als Knoten ka­te­go­ri­siert. Das Artefakt steht daher in Ab­hän­gig­keit zum Knoten. Die Ver­tei­lung stellt diese Ab­hän­gig­keits­be­zie­hung dar, die bei der In­stal­la­ti­on entsteht.

An­wen­dungs­fall: Der An­wen­dungs­fall (als Sprach­ein­heit) stellt Sys­tem­an­for­de­run­gen dar. Der Akteur (eine Person oder ein System) ist ein Element, das be­schreibt, wer oder was eine bestimmte Aktivität mithilfe des Systems ausführen soll. Das System kann auch eine Klasse oder Kom­po­nen­te sein und wird daher als Subjekt be­schrie­ben. Der An­wen­dungs­fall (als Mo­dell­ele­ment) teilt lediglich mit, dass ein genanntes, nach außen für Akteure sicht­ba­res Verhalten erwartet wird. Die genauen Aktionen stellt es nor­ma­ler­wei­se nicht dar. Innerhalb einer Ver­hal­tens­be­schrei­bung ordnet die Mo­del­lie­rung die de­tail­lier­ten An­for­de­run­gen dem An­wen­dungs­fall zu.

In­for­ma­ti­ons­flüs­se: Diese UML-Sprach­ein­heit be­schreibt die Elemente In­for­ma­ti­ons­ein­heit und In­for­ma­ti­ons­fluss. Diese Mo­dell­ele­men­te abs­tra­hie­ren Techniken zur Ver­hal­tens­be­schrei­bung, die sehr de­tail­ori­en­tiert sein können, wie Ak­ti­vi­tä­ten oder In­ter­ak­tio­nen. Diese ver­ein­fach­te Dar­stel­lung erlaubt den uni­ver­sel­len Einsatz dieser Mo­del­lie­rungs­ele­men­te in allen UML-Dia­gramm­ty­pen. Die In­for­ma­ti­ons­ein­heit wird daher, im Gegensatz zur Klasse, nie näher durch Attribute be­schrie­ben oder in Methoden ein­ge­bun­den. Der In­for­ma­ti­ons­fluss verbindet deshalb auch alle möglichen Elemente, die ir­gend­ei­ne Art von In­for­ma­tio­nen mit­ein­an­der aus­tau­schen.

UML-Diagramme: Ein­satz­be­rei­che und kurze Ein­füh­rung

Die Mo­del­lie­rungs­spra­che setzt 14 Dia­gramm­ty­pen fest, die sich in zwei Ka­te­go­rien aufteilen. Die Haupt­ka­te­go­rien Struktur und Verhalten stehen für die grund­le­gen­den Konzepte, die die UML-Diagramme dar­stel­len. Innerhalb der Gruppe der Ver­hal­tens­dia­gram­me spe­zi­fi­ziert UML die Un­ter­ka­te­go­rie der In­ter­ak­ti­ons­dia­gram­me. Eine vierte Teil­spe­zi­fi­ka­ti­on existiert seit UML 2.0. Sie legt die Ge­stal­tung der Mo­dell­dia­gram­me fest.

Struk­tur­dia­gram­me

Struk­tur­dia­gram­me stellen die einzelnen Elemente in einem System dar. Deshalb eignen sie sich besonders für die Dar­stel­lung von Software-Ar­chi­tek­tur. Die statische Dar­stel­lung stellt keine Ver­än­de­rung dar, sondern Zustände und Ab­hän­gig­kei­ten zu einem be­stimm­ten Zeitpunkt. Die einzelnen Elemente, oder Objekte, stehen in Beziehung zu einander. So gehört ein Objekt z. B. in eine Klasse. Weitere Be­stand­tei­le sind Rech­ner­kno­ten oder Artefakte – ein Artefakt stellt ein Ergebnis dar, bei­spiels­wei­se eine fertige Script-Datei.

UML-Diagramme dieser Kategorie stellen ein ganzes System oder eine Teil­struk­tur dar. Letzteres hilft bei­spiels­wei­se dabei, die Struktur de­tail­liert zu ver­deut­li­chen. Unter UML 2.x ordnet die Sprache der Kategorie Struktur sieben Dia­gramm­ty­pen zu:

  • Klas­sen­dia­gramm: Weisen Objekte ein ge­mein­sa­mes Verhalten oder die gleiche Struktur auf, kann man sie klas­si­fi­zie­ren bzw. einer Klasse zuordnen. Die Klasse ist somit ein ver­ein­fa­chen­des, zu­sam­men­fas­sen­des Element (Abs­trak­ti­on) zur visuellen Dar­stel­lung. Klassen und Objekte werden mit­ein­an­der und un­ter­ein­an­der durch Schnitt­stel­len verbunden. All diese Be­stand­tei­le sowie deren Be­zie­hun­gen zu­ein­an­der stellt das Klas­sen­dia­gramm dar. Eine Klasse stellt das Diagramm mit einem Rechteck dar. Darin steht der Name der Klasse in fetter Schrift, wie unten zu sehen.
  • Ob­jekt­dia­gramm: Das Ob­jekt­dia­gramm hat einen ähnlichen Aufbau wie das Klas­sen­dia­gramm. Dort, wo im Klas­sen­dia­gramm der Name steht (siehe oben: Person), gibt das Ob­jekt­dia­gramm den In­stanz­na­men zusammen mit dem Clas­si­fier-/Ka­te­go­rie­na­men an. Laut Spe­zi­fi­ka­ti­on un­ter­streicht man diese (z. B.: Helga:Person)
     
  • Kom­po­nen­ten­dia­gramm: Eine Kom­po­nen­te ist ein gegen das äußere System ab­ge­schot­te­tes Modul, das über de­fi­nier­te Schnitt­stel­len mit anderen Kom­po­nen­ten in­ter­agiert. Es ist eine Unterform der Klasse. Daher de­fi­nie­ren struk­tu­rel­le Merkmale wie Ope­ra­tio­nen und Attribute die Kom­po­nen­te näher. Die Kom­po­nen­te um­schließt mehrere Be­stand­tei­le. Das können wieder Kom­po­nen­ten sein, aber auch Klassen, Sub­sys­te­me oder Parts. Bei der Mo­del­lie­rung gibt es zwei Dar­stel­lungs­mög­lich­kei­ten, je nach Bedarf: die Black-Box-Sicht (Inhalt ist versteckt) und die White-Box-Sicht (Inhalt ist sichtbar).
  • Kom­po­si­ti­ons­struk­tur­dia­gramm: Objekte gehören zu Klassen. Diese wiederum können auch klas­si­fi­ziert werden. Diese Me­ta­klas­sen nennt man in UML Klas­si­fi­zie­rer. Das Kom­po­si­ti­ons­struk­tur­dia­gramm stellt die Parts und Kon­nek­to­ren eines Klas­si­fi­zie­rers dar. Parts sind immer Be­stand­teil des Ganzen, auch wenn sie nicht not­wen­di­ger­wei­se zur Kom­plet­tie­rung des Klas­si­fi­zie­rers nötig sind. Kon­nek­to­ren sind die Ver­bin­dun­gen zwischen Parts. Merkmale oder Dienste, die Kom­po­nen­ten außerhalb des Clas­si­fiers benötigen, senden Parts über eine Schnitt­stel­le.

  • Pa­ket­dia­gramm: Ein Paket (package) fasst Elemente wie Schnitt­stel­len oder Klassen in einem Na­mens­raum zusammen. Pakete können zudem mit anderen Paketen ver­schmel­zen (package merge), diese im­por­tie­ren (package import) oder andere Pakete enthalten (Un­ter­pa­ke­te). Pakete gliedern Dia­gramm­in­hal­te hier­ar­chisch wie in einem Baum­dia­gramm. Anwendung findet das Pa­ket­dia­gramm z. B. im Me­ta­mo­dell von UML 2. In Software-Systemen stellt es die Teil­be­rei­che modular dar. Laut Spe­zi­fi­ka­ti­on besteht ein Paket aus einem Kopf und einem In­halts­be­reich.

Hinweis

Ein Na­mens­raum ist ein Element des UML-2-Me­ta­mo­dells. Be­stand­tei­le müssen einen Namen tragen und eines der folgenden Sicht­bar­keits­at­tri­bu­te besitzen: package, private, protected oder public. Das Paket ist ein Spe­zi­al­fall des Na­mens­raums.

  • Ver­tei­lungs­dia­gramm: Das Ver­tei­lungs­dia­gramm mo­del­liert die physische Ver­tei­lung von Ar­te­fak­ten auf Knoten. Knoten (nodes) sind entweder Hardware (device nodes), die einen Speicher be­reit­stel­len kann, oder Software (execution en­vi­ron­ment nodes), die eine Umgebung für die Aus­füh­rung von Prozessen anbietet. Sie werden als drei­di­men­sio­na­ler Quader ab­ge­bil­det. Artefakte zeichnen Sie als Rechtecke. Darin steht der Dateiname. Um es von einer Klasse zu un­ter­schei­den, fügen Sie das Stereotyp <<artefact>> hinzu. Das Diagramm eignet sich zur Dar­stel­lung von Ab­hän­gig­kei­ten zwischen Knoten und Ar­te­fak­ten, so­ge­nann­ten Ver­tei­lungs­be­zie­hun­gen.

  • Pro­fil­dia­gramm: Pro­fil­dia­gram­me verwendet man auf dem Level des Me­ta­mo­dells. Sie dienen dazu, Klassen ein Stereotyp oder Paketen ein Profil zu­zu­ord­nen. Auf der Meta-Ebene haben Sie somit die Mög­lich­keit, das Modell für eine andere Plattform oder Domain an­zu­pas­sen. Wenn Sie bei­spiels­wei­se die UML-Semantik innerhalb eines Profils ein­schrän­ken, vererbt es die Spe­zi­fi­ka­tio­nen an die un­ter­ge­ord­ne­ten Klassen weiter.

Ver­hal­tens­dia­gram­me

Ver­hal­tens­dia­gram­me (be­ha­vi­oral diagrams) decken die rest­li­chen Spe­zi­fi­ka­tio­nen unter UML ab. Im Gegensatz zu Struk­tur­dia­gram­men sind sie nicht statisch, sondern bilden Prozesse und dy­na­mi­sche Si­tua­tio­nen ab. Zu den Ver­hal­tens­dia­gram­men gehören auch die In­ter­ak­ti­ons­dia­gram­me (s. u.).

  • An­wen­dungs­fall­dia­gramm: Das An­wen­dungs­fall­dia­gramm (use case diagram) stellt dar, welche Ver­hal­tens­wei­se von einem System später erwartet wird. Diese Mo­del­lie­rung eignet sich nicht nur für Software-Systeme, sondern bei­spiels­wei­se auch für erwartete Abläufe bei Ge­schäfts­ver­hält­nis­sen. Der An­wen­dungs­fall in­vol­viert einen Akteur (Mensch oder System) mit einem Ziel. Das Diagramm trägt nor­ma­ler­wei­se das Ziel als Namen. Die ver­schie­de­nen An­wen­dungs­fäl­le innerhalb des Systems erfüllen das Ziel des Akteurs.

    Das An­wen­dungs­fall­dia­gramm stellt UML mit einem Rechteck mit dem Label use case dar. Der Absender ist der Akteur (dieser wird, wie oben, als Strich­männ­chen dar­ge­stellt, auch wenn es sich um ein System handelt). Den Akteur verbindet ein Ab­hän­gig­keits­ver­hält­nis (als Strich dar­ge­stellt) mit dem An­wen­dungs­fall (Ellipse mit Label) innerhalb eines Systems (Rechteck mit Label <<system>> und Name des Systems).
  • Ak­ti­vi­täts­dia­gramm: Ak­ti­vi­tä­ten bestehen aus einem Geflecht von Aktionen, die durch Daten- und Kon­troll­flüs­se mit­ein­an­der in Bezug stehen. Während das An­wen­dungs­fall­dia­gramm Sys­tem­vor­aus­set­zun­gen darstellt, zeigt das Ak­ti­vi­täts­dia­gramm, wie diese An­wen­dungs­fäl­le ablaufen. In dieser Art von Diagramm spielt bei­spiels­wei­se das Token eine Rolle: Es ist bei par­al­le­len Prozessen ein Marker dafür, welcher der Prozesse prio­ri­siert wird und somit Res­sour­cen (z. B. Ar­beits­spei­cher) erhält.
     
  • Zu­stands­au­to­ma­ten­dia­gramm: Ein Zu­stands­au­to­mat, auch endlicher Automat genannt, stellt eine endliche Menge von Zuständen in einem System dar. Wird im System eine fest­ge­setz­te Bedingung erfüllt (ein Trigger ausgelöst), tritt eine kor­re­spon­die­ren­de Situation ein. Diese kann Ak­ti­vi­tä­ten oder In­ter­ak­tio­nen umfassen. Unter UML 2.0 stellt ein Zustand diese Situation dar. Zustände werden als Knoten (engl.: vertices) angesehen und als Rechtecke mit ab­ge­run­de­ten Ecken dar­ge­stellt. Zudem mo­del­liert das Zu­stands­au­to­ma­ten­dia­gramm die Übergänge (engl.: tran­si­ti­ons) von einem Zustand (Quell­kno­ten) in den anderen (Ziel­kno­ten). Zu­stands­über­gän­ge mo­del­liert UML als Kanten. Aktionen bilden den letzten Grund­pfei­ler. Sie ordnen dem Zustand Ver­hal­tens­spe­zi­fi­ka­tio­nen zu.

Verhalten ist an bestimmte Si­tua­tio­nen oder Er­eig­nis­se geknüpft. Das UML-Diagramm Zu­stands­au­to­mat kennt 4 Spe­zi­fi­ka­tio­nen:

  • Ein­gangs­ver­hal­ten (entry behavior)
  • Verhalten im Zustand (do­Ac­ti­vi­ty)
  • Verhalten, das im Fall eines Er­eig­nis­ses eintritt (event behavior)
  • Aus­gangs­ver­hal­ten (exit behavior)

Außerdem kann ein Zustand un­ter­bro­chen und an gleicher Stelle fort­ge­führt werden. Diese Ei­gen­schaft nennt sich History-Zustand.

In­ter­ak­ti­ons­dia­gram­me

In­ter­ak­ti­ons­dia­gram­me sind eine Unterart der Ver­hal­tens­dia­gram­me. Somit bilden auch sie dy­na­mi­sche Si­tua­tio­nen ab. Im Spe­zi­el­len eignen sie sich zur Mo­del­lie­rung von Verhalten, bei dem Elemente In­for­ma­tio­nen aus­tau­schen. Die Diagramme de­fi­nie­ren die Rolle der in­vol­vier­ten Objekte. Außerdem benennen und prio­ri­sie­ren sie die Nach­rich­ten, die zwischen den Objekten hin- und her­ge­sen­det werden. In­ter­ak­ti­ons­dia­gram­me stellen zudem dar, wie diese Nach­rich­ten Ver­hal­tens­ele­men­te be­ein­flus­sen. Sie können bei­spiels­wei­se Ak­ti­vi­tä­ten starten oder anhalten.

  • Se­quenz­dia­gram­me: Als In­ter­ak­ti­ons­dia­gramm stellt das Se­quenz­dia­gramm den Nach­rich­ten­aus­tausch zwischen Objekten dar. Diese Objekte mo­del­liert der UML-Dia­gramm­typ als so­ge­nann­te Le­bens­li­nie. In diesem Sinne hat es Ähn­lich­keit mit anderen Ver­hal­tens­dia­gram­men wie dem Ak­ti­vi­täts­dia­gramm. Im Gegensatz zu diesen nutzt man das Se­quenz­dia­gramm aber nicht, um eine weite Übersicht über das Verhalten eines Systems zu bekommen, sondern um ein mögliches Verhalten unter vielen de­tail­liert dar­zu­stel­len. Dabei schreibt es eine Chro­no­lo­gie vor. Eine ge­stri­chel­te Linie stellt den Zeit­ver­lauf dar.

    UML 2.0 stellt synchrone Nach­rich­ten (UML: Pfeil mit gefüllter Spitze) und asyn­chro­ne Nach­rich­ten (UML: Pfeil mit offener Spitze) dar. Synchrone Nach­rich­ten sind solche, die so lange einen Kanal blo­ckie­ren, bis sie eine Antwort vom Ziel­ob­jekt bekommen. Sie bestimmen Ver­hal­tens­merk­ma­le in Form von syn­chro­nen Ope­ra­tio­nen. Asyn­chro­ne Nach­rich­ten kon­trol­lie­ren das rufende Quell­ob­jekt. Zu ihnen gehören sowohl asyn­chro­ne Ope­ra­tio­nen als auch Signale (zwischen Aktionen gesendete Da­ten­pa­ke­te).
  • Kom­mu­ni­ka­ti­ons­dia­gramm: Ähnlich wie beim Se­quenz­dia­gramm mo­del­liert das Kom­mu­ni­ka­ti­ons­dia­gramm einen Nach­rich­ten­trans­fer. Auch hier werden Le­bens­li­ni­en verwendet. Jedoch verwendet dieses UML-Diagramm für die zeitliche Abfolge keine ge­stri­chel­ten Linien, sondern num­me­riert die Sequenzen mit Zahlen und Buch­sta­ben. Diese so­ge­nann­ten Se­quenz­ter­me befinden sich über einem Pfeil, dessen Spitze in Richtung Empfänger zeigt. Zahlen stehen für die Rei­hen­fol­ge, in der Nach­rich­ten versendet werden, Buch­sta­ben für die hier­ar­chi­sche Ebene (wie in der Abbildung unten zu sehen).
  • Zeit­ver­laufs­dia­gramm: Das Zeit­ver­laufs­dia­gramm er­mög­licht es, das Verhalten von Systemen unter dem Aspekt der zeit­li­chen Se­quen­zie­rung de­tail­liert auf­zu­zei­gen. Echt­zeit­sys­te­me bei­spiels­wei­se müssen innerhalb einer be­stimm­ten Zeit gewisse Prozesse abwickeln. Um die zeitliche Ebene besser dar­stel­len zu können, mo­del­liert UML 2.0 das Zeit­ver­laufs­dia­gramm (engl.: timing diagram) als zwei­di­men­sio­na­les Diagramm mit einer x- und einer y-Achse. Bei dieser Unterform des Se­quenz­dia­gramms liegen die Ob­jekt­zu­stän­de auf der y-Achse und die ihnen zu­ge­schrie­be­nen Zeit­se­quen­zen laufen entlang der y-Achse.

  • In­ter­ak­ti­ons­über­sichts­dia­gramm: Das in UML 2.0 neu hin­zu­ge­füg­te In­ter­ak­ti­ons­über­sichts­dia­gramm hilft dabei, ein sehr komplexes System zunächst in einem groben Schema dar­zu­stel­len, wenn ein normales In­ter­ak­ti­ons­dia­gramm sonst zu un­über­sicht­lich wird. Für die de­tail­lier­te Dar­stel­lung eignet sich bei­spiels­wei­se ein Se­quenz­dia­gramm. Das UML-Diagramm wird ähnlich dem Ak­ti­vi­täts­dia­gramm mit Knoten dar­ge­stellt. Es stellt Kon­troll­flüs­se zwischen In­ter­ak­tio­nen dar. Der Un­ter­schied zum Ak­ti­vi­täts­dia­gramm besteht darin, dass innerhalb von Knoten, die für Ak­ti­vi­tä­ten stehen, ein ganzes In­ter­ak­ti­ons­dia­gramm ver­schach­telt sein kann. Diese Ver­schach­te­lun­gen können direkt im Diagramm gezeigt werden (inline) oder man verweist (Schlüs­sel­wort: ref, von engl.: reference) auf das Modell, das an anderer Stelle de­tail­liert dar­ge­stellt ist.

UML-Diagramme: Eine Übersicht

Die folgende Übersicht zeigt über­ge­ord­ne­te Ka­te­go­rien und An­wen­dungs­mög­lich­kei­ten der einzelnen Dia­gramm­ty­pen in Kurzform. Wenn Sie ein mo­dell­ori­en­tier­tes Software-System, einen An­wen­dungs­fall in der Wirt­schaft o. Ä. visuell dar­stel­len wollen, sollten Sie laut Emp­feh­lung der UML-Task-Force vorher einen der UML-Dia­gramm­ty­pen wählen. Erst dann lohnt es sich, eines der vielen UML-Tools zu wählen, da diese häufig eine gewisse Methode vor­schrei­ben. Dann erstellen Sie das UML-Diagramm.

Kategorie Dia­gramm­typ Ver­wen­dung
Struktur Klas­sen­dia­gramm Klassen vi­sua­li­sie­ren
Ob­jekt­dia­gramm Sys­tem­zu­stand in einem be­stimm­ten Moment
Kom­po­nen­ten­dia­gramm Kom­po­nen­ten struk­tu­rie­ren und Ab­hän­gig­kei­ten aufzeigen
Kom­po­si­ti­ons­struk­tur­dia­gramm Kom­po­nen­ten oder Klassen in ihre Be­stand­tei­le aufteilen und deren Be­zie­hun­gen ver­deut­li­chen
Pa­ket­dia­gramm Fasst Klassen in Pakete zusammen, stellt Pa­ket­hier­ar­chie und -struktur dar
Ver­tei­lungs­dia­gramm Ver­tei­lung von Kom­po­nen­ten auf Rech­ner­kno­ten
Pro­fil­dia­gramm Ver­an­schau­licht Ver­wen­dungs­zu­sam­men­hän­ge durch Ste­reo­ty­pe, Rand­be­din­gun­gen etc.
Verhalten An­wen­dungs­fall­dia­gramm Stellt diverse An­wen­dungs­fäl­le dar
Ak­ti­vi­täts­dia­gramm Be­schreibt das Verhalten ver­schie­de­ner (par­al­le­ler) Abläufe in einem System
Zu­stands­au­to­ma­ten­dia­gramm Do­ku­men­tiert, wie ein Objekt von einem Zustand durch ein Ereignis in einen anderen Zustand versetzt wird
Verhalten: In­ter­ak­ti­on Se­quenz­dia­gramm Zeit­li­cher Ablauf von In­ter­ak­tio­nen zwischen Objekten
Kom­mu­ni­ka­ti­ons­dia­gramm Rol­len­ver­tei­lung von Objekten innerhalb einer In­ter­ak­ti­on
Zeit­ver­laufs­dia­gramm Zeitliche Ein­gren­zung für Er­eig­nis­se, die zu einem Zu­stands­wech­sel führen
In­ter­ak­ti­ons­über­sichts­dia­gramm Sequenzen und Ak­ti­vi­tä­ten in­ter­agie­ren
Tipp

Die Object Modeling Group vergibt UML-Zer­ti­fi­ka­te. Wenn Sie Ihr Know-how dies­be­züg­lich vertiefen wollen, in­for­mie­ren Sie sich über UML-Tutorials auf der Task-Force-Website.

Zum Hauptmenü