Die Unified Modeling Language (UML) ist eine von der Object Management Group (OMG) entwickelte und standardisierte Sprache für die Modellierung von Software und anderen Systemen. Im Sinne einer Sprache definiert die UML dabei Bezeichner für die meisten Begriffe, die für die Modellierung wichtig sind, und legt mögliche Beziehungen zwischen diesen Begriffen fest. Die UML definiert weiter grafische Notationen für diese Begriffe und für Modelle von statischen Strukturen und von dynamischen Abläufen, die man mit diesen Begriffen formulieren kann.
Die UML ist heute eine der dominierenden Sprachen für die Modellierung von betrieblichen Anwendungssystemen (Softwaresystemen). Der erste Kontakt zur UML besteht häufig darin, dass Diagramme der UML im Rahmen von Softwareprojekten zu erstellen, zu verstehen oder zu beurteilen sind:
Die graphische Notation ist jedoch nur ein Aspekt, der durch die UML geregelt wird. Die UML legt in erster Linie fest, mit welchen Begriffen und welchen Beziehungen zwischen diesen Begriffen sogenannte Modelle spezifiziert werden - Diagramme der UML zeigen nur eine graphische Sicht auf Ausschnitte dieser Modelle. Die UML schlägt weiter ein Format vor, in dem Modelle und Diagramme zwischen Werkzeugen ausgetauscht werden können.
Als Resultat dieser Bemühungen entstand die UML. Die Standardisierung, Pflege und Weiterentwicklung der Sprache wurde an OMG übergeben, die die Sprache am 19. November 1997 als Standard akzeptierte.
Ein Jahr später, im September 2000, bat die OMG ihre Mitglieder und weitere interessierte Kreise um Vorschläge für die UML2. Gemäß der neu für die UML2 definierten Architektur hat die OMG drei Requests For Proposals (RFP) publiziert, einen UML 2.0 Infrastructure RFP, einen UML 2.0 Superstructure RFP und einen UML 2.0 OCL RFP. Wer Vorschläge einreichen wollte, hatte dazu ungefähr ein weiteres Jahr Zeit.
In einer ersten Runde haben verschiedene Gruppen und Einzelpersonen Entwürfe eingereicht, darunter Gruppen mit den Namen 3C, U2 und U2P. Mitte 2002 lagen von diesen Konsortien mehrmals überarbeitete und konsolidierte Antworten auf einzelne Request for proposals vor. Erst im Oktober 2002 konnten dann am Treffen der zuständigen Arbeitsgruppe in Helsinki alle Vorschläge für die UML 2.0 Infrastructure und die UML 2.0 Superstructure präsentiert werden. Einen Termin für eine weitere überarbeitete Version der Vorschläge legte die Arbeitsgruppe auf Anfang Januar 2003 fest. Die Hauptschwierigkeit bestand nun darin, die unterschiedlichen Entwürfe zu einer Spezifikation zu verschmelzen. Einerseits wurde zum Teil Kritik laut, dass sich die unterschiedlichen Philosophien in den eingereichten Vorschlägen nur schwerlich würden bereinigen lassen, andererseits reichte im Januar 2003 ein neues Konsortium unter dem Namen 4M einen Vorschlag (UML4MDA) ein, der die Differenzen zwischen den bisherigen Spezifikationen zu überbrücken versuchte.
Im März 2003 empfahl die zuständige Arbeitsgruppe die Vorschläge des Konsortiums U2 für die UML 2.0 Infrastructure und für die UML 2.0 OCL zur Freigabe, im Mai dann auch die UML 2.0 Superstructure des gleichen Konsortiums, so dass ab Juni 2003 drei Finalization Task Forces der OMG die Arbeit aufnehmen konnten, um die Teilspezifikationen abzuschließen. Die Task Forces konnten ihre Arbeit jedoch nicht wie geplant bis im April 2004 abschließen und gründeten deshalb gleich anschließend eine zweite Finalization Task Force, die die verbleibenden Probleme bis im September 2004 lösen sollte.
Im September 2004 konnten schließlich alle Finalization Task Forces ihre Arbeit beenden. Für die UML 2.0 OCL und die UML 2.0 Infrastructure lagen damit endgültig abgenommene Dokumente (Final Adopted Specification) vor. Nur bei der UML 2.0 Superstructure schien sich dieser letzte Schritt noch etwas zu verzögern: im März 2005 bot der OMG-Webauftritt weiterhin nur ein temporäres Dokument mit der informellen Bezeichnung UML 2.0 Superstructure FTF convenience document zum Herunterladen an.
Anfang 2005 war deshalb noch unklar, ob nun die UML2 als Ganzes oder nur Teile davon freigegeben waren. Jedenfalls nahm eine neu gebildete Revision Task Force sofort die Arbeit auf, um Fehler zu korrigieren, Lücken zu schließen und die UML 2.1 vorzubereiten. Die Gruppe publizierte im April 2006 die UML 2.1 Superstructure.
Ab Mai 2006 nahm eine weitere Revision Task Force die Arbeit auf, mit dem Ziel, im Dezember 2006 die UML in der Version 2.2 vorlegen zu können.
Ein weiterer, vierter Teil beschäftigt sich nicht mit dem semantischen Modell der UML sondern spezifiziert das Layout der Diagramme. Dieses Dokument trägt den Titel UML 2.0 Diagram Interchange und ist eine Neuerung in der UML 2.0: die UML 1.x kannte kein standardisiertes Format, mit dem das Layout von Diagrammen zwischen unterschiedlichen Werkzeugen ausgetauscht werden konnte. Die semantischen Informationen in einem UML-Modell konnte ein Werkzeug auch bisher an ein anderes Werkzeug übergeben, das Aussehen der Diagramme, das heißt die Positionen und Größe einzelner Diagrammelemente, ging dabei aber verloren. Diagram Interchange (DI) soll dieses Manko beseitigen.
Mit der Meta-Object Facility (MOF) werden Modellelemente der UML2 spezifiziert und dadurch z.B. mit dem Format Meta Interchange XMI austauschbar. Die UML ist dazu in vier Schichten M0 bis M3 gegliedert. Die bereits erwähnte MOF (M3) stellt eine der vier Schichten dar. Es ist die Metasprache der Metasprache der UML2 und beinhaltet die grundlegenden Elemente der UML2. Die Metasprache der UML2 (M2) spezifiziert die grundlegenden Elemente der UML2 mit deren Eigenschaften. Die in der Praxis verwendete UML2 befindet sich auf der Ebene M1. Hiermit werden die realen Objekte der M0 Schicht, also die Realität, dargestellt.
Wie in der UML2.0, war auch die UML1.x auf der dritten von vier Metamodellierungsebenen eingeordnet. Zur UML 1.x besteht jedoch ein wesentlicher Unterschied: die auf diesen vier Ebenen verwendeten Modellierungssprachen, besonders die Sprachen auf den Ebenen M2 und M3, teilen sich die gemeinsame Spracheinheit der Infrastrukturbibliothek (InfrastructureLibrary). Sie wird in der UML 2.0 Infrastructure definiert und bildet einen Kern der grundlegenden Modellierungselemente, der sowohl in der UML 2.0 Infrastructure, als auch in der UML 2.0 Superstructure und in der MOF 2.0 eingesetzt wird.
Auf einer dritten Stufe sind die meisten Spracheinheiten in mehrere Schichten (engl. Compliance Level) gegliedert. Die unterste Schicht umfasst jeweils die einfachsten und am häufigsten verwendeten Modellierungselemente, während höhere Schichten zunehmend komplexere Modellierungselemente einführen. Die Spracheinheit Aktivitäten umfasst beispielsweise FundamentalActivities als unterste Schicht und darauf aufbauend die Schicht BasicActivities. FundamentalActivities definiert zunächst nur, dass Aktivitäten strukturell aus hierarchisch geschachtelten Gruppen von Aktionen bestehen. BasicActivities erweitert dieses Gerüst um Kanten und weitere Hilfsknoten zu einem Graphen, den man in der UML2 dann visuell als Aktivitätsdiagramme darstellt.
Die UML2 definiert in dieser Spracheinheit mehrere Gruppen von grundlegenden Aktionen, siehe Aktion.
Aktivitäten haben die Struktur eines Graphen. Knoten stellen Aktionen sowie Punkte, an denen die Flüsse zwischen den Aktionen kontrolliert werden, dar; Kanten stehen für Objekt- und Kontrollflüsse. Die Aufgabe des Sprachpakets Aktivitäten ist es, alle Typen von Knoten und Kanten zu definieren, die für die Modellierung von Aktivitäten benötigt werden.
Knoten werden in Objekt- und Kontrollknoten unterschieden, Kanten analog dazu in Objekt- und Kontrollflüsse.
Komplexere Aktivitäten können verschachtelt und mit Kontrollstrukturen modularisiert werden.
Graphisch werden Aktivitäten in Aktivitätsdiagrammen modelliert.
Die Spracheinheit Allgemeines Verhalten umfasst die allgemeinen Modellelemente für die Spezifikation des Verhaltens eines mit der UML2 modellierten Systems. Hier sind die Modellelemente zusammengefasst, die für die Spezifikation von Aktivitäten, Interaktionen oder Zustandsautomaten benötigt werden.
Die Spracheinheit definiert die Gemeinsamkeiten jeder Verhaltensbeschreibung und dass eine aktive Klasse ein eigenes Verhalten haben kann. Verhalten in einem System, das mit der UML2 modelliert ist, startet immer aufgrund von diskreten Ereignissen. Dieses Sprachpaket definiert, welche Arten von Ereignissen die UML2 unterstützt.
Die Behandlung der Zeit wird ebenfalls weitgehend in diesem Sprachpaket geregelt. Es definiert Metaklassen für die Beobachtung der Zeit (TimeObservationAction), für die Notation von Zeitausdrücken (TimeExpression), für die Definition von Zeitintervallen (TimeInterval) sowie für das Konzept einer zeitlichen Dauer (Duration).
Graphisch werden Anwendungsfälle in Anwendungsfalldiagrammen dargestellt.
Die Spracheinheit Informationsflüsse, die in der UML2 neu eingeführt wurde, stellt Modellelemente zur Verfügung, um diese Situation zu verbessern. Sie bietet die Modellelemente Informationseinheit und Informationsfluss an, mit denen ein Modellierer Informationsflüsse in einem System auf hoher Abstraktionsstufe festhalten kann.
Informationsflüsse können dabei eine Vielzahl von anderen Modellelementen der UML2 verbinden, insbesondere Klassen, Anwendungsfälle, Ausprägungsspezifikationen, Akteure, Schnittstellen, Ports und noch einige mehr.
Die UML2 gibt keinen Diagrammtyp für Informationsflüsse vor. Die graphische Notation für Informationsflüsse und Informationseinheiten kann in allen Strukturdiagrammen vorkommen.
Wer Interaktionen modelliert, geht davon aus, dass das modellierte System aus einem Netzwerk von Objekten besteht, die untereinander Meldungen austauschen. Schickt ein Objekt einem anderen Objekt eine Meldung, kann man zwei Ereignisauftritte identifizieren: erstens das Auftreten eines Meldungsereignisses, wenn die Meldung vom ersten Objekt abgeschickt wird sowie zweitens eines Meldungsereignisses, wenn die Meldung beim zweiten Objekt ankommt. Weitere Ereignisse treten auf, wenn eine Aktion oder ein anderes Verhalten im Kontext eines Objekts beginnt oder endet. Eine Spur (trace) bezeichnet eine Folge von solchen Ereignissen. Interaktionen spezifizieren nun ein Verhalten als zwei Mengen von Spuren, einer Menge gültiger und einer Menge ungültiger Spuren.
Damit ist präziser gesagt, was wir meinen, wenn wir von Interaktionen sprechen: die Bedeutung (Semantik) einer Interaktion ist durch Mengen von Spuren gegeben. Modelliert werden Interaktionen jedoch als Mengen von Lebenslinien, auf denen Aktionen und andere Verhaltensweisen ablaufen und zwischen denen Nachrichten ausgetauscht werden.
Interaktionen modelliert man graphisch in Kommunikationsdiagrammen, in Sequenzdiagrammen oder in Zeitverlaufsdiagrammen.
Diese Spracheinheit enthält vier Unterpakete. Das Unterpaket Kernel umfasst zentrale Modellierungselemente, die aus der UML 2.0 Infrastructure wiederverwendet werden. Dazu gehören die Klasse, die Ausprägungsspezifikation, der Namensraum, das Paket, das Attribut, die Assoziation, die Abhängigkeitsbeziehung, der Paketimport, die Paketverschmelzung und die Generalisierung. Das zweite Unterpaket, AssociationClasses, umfasst die Definition von Assoziationsklassen. Interfaces, das dritte Unterpaket, stellt die Definition von Schnittstellen bereit. Schließlich deklariert das Unterpaket PowerTypes Modellelemente für die sogenannten PowerTypes.
Elemente aus dieser Spracheinheit werden meistens in Klassendiagrammen, Objektdiagrammen und Paketdiagrammen dargestellt.
Das wichtigste Element ist die Komponente, die eine innere Struktur gegen außen abgrenzt. Die Spezifikation einer Komponente deklariert vor allem den von außen sichtbaren Rand und definiert damit eine Black Box-Sicht auf die Komponente. Sichtbar sind eine Menge von angebotenen und erforderlichen Schnittstellen sowie allenfalls eine Menge von Ports.
Die Spracheinheit umfasst ferner den Delegations- und den Kompositionskonnektor. Der Delegationskonnektor verbindet Ports auf der Hülle einer Komponente mit Elementen im Innern der Komponente. Der Kompositionskonnektor verbindet angebotene Schnittstellen einer Komponente mit benötigten Schnittstellen einer anderen Komponente.
Die Elemente dieser Spracheinheit werden meistens in Komponentendiagrammen, zum Teil aber auch in Klassendiagrammen oder Verteilungsdiagrammen dargestellt.
Elemente aus dieser Spracheinheit werden meistens in Kompositionsstrukturdiagrammen dargestellt.
Die UML2 umfasst in ihren Spracheinheiten verschiedene Möglichkeiten für die Modellierung der Struktur und des Verhaltens eines Systems, muss dabei aber auf einer generischen Ebene bleiben. Sie verwendet zum Beispiel die generischen Begriffe Aktivität oder Artefakt und kennt den spezifischen Begriff Geschäftsprozess aus der Geschäftsmodellierung oder Enterprise Java Beans der Java-Plattform nicht. Falls diese Begriffe in der Modellierung benötigt werden, müssen sie über den Erweiterungsmechanismus der Profile zur UML2 hinzugefügt werden. Auch spezielle Notationen, zum Beispiel eine realistischere Zeichnung anstelle des Strichmännchens, das einen Akteur darstellt, können der UML2 mit Hilfe der Profile hinzugefügt werden. Weiter können Profile Lücken in der Definition der Semantik der UML2 schließen, die dort absichtlich für spezifische Einsatzgebiete offen gelassen wurden (engl. semantic variation points). Schließlich können Profile Einschränkungen definieren, um die Art und Weise zu beschränken, wie ein Element aus der UML2 verwendet wird.
Mit Hilfe des Erweiterungsmechanismus der Profile kann das Metamodell der UML2 jedoch nicht beliebig angepasst werden. So können zum Beispiel keine Elemente aus dem Metamodell der UML2 entfernt, keine Einschränkungen aufgehoben und keine echten neuen Metaklassen, sondern nur Erweiterungen (Stereotypen) von bestehenden Metaklassen, deklariert werden.
Die Spracheinheit definiert zunächst das Konzept eines Profils. Ein Profil ist eine Sammlung von Stereotypen, und definiert die eigentliche Erweiterung. Ein Profil ist ein Paket und wird auf andere Pakete angewendet, womit die Erweiterung, die das Profil definiert, für das entsprechende Paket gilt.
Die UML2 kennt keinen speziellen Diagrammtyp für Profile. Die graphischen Notationen für Elemente aus dieser Spracheinheit kommen sowohl in Paketdiagrammen als auch in Klassendiagrammen vor.
Elemente aus dieser Spracheinheit werden normalerweise in Verteilungsdiagrammen dargestellt.
Die UML2 setzt Zustandsautomaten in erster Linie für die Spezifikation des Verhaltens eines Systems ein. So kann man ein Zustandsautomat zum Beispiel das Verhalten der Instanzen einer aktiven Klasse modellieren. Zusätzlich können Zustandautomaten aber auch eingesetzt werden, um eine zulässige Nutzung einer Schnittstelle oder eines Ports zu spezifizieren. Der Zustandsautomat modelliert dabei zum Beispiel, in welcher Reihenfolge Operationen einer Schnittstelle aufgerufen werden dürfen. Im ersten Fall spricht man von einem Verhaltenszustandsautomaten, im zweiten von einem Protokollzustandsautomaten.
Zustandsautomaten werden graphisch in Zustandsdiagrammen dargestellt.
Dazu kommen sieben Verhaltensdiagramme:
Die Grenzen zwischen den dreizehn Diagrammtypen verlaufen weniger scharf, als diese Klassifizierung vermuten lässt. Die UML2 verbietet nicht, dass ein Diagramm graphische Elemente enthalten darf, die eigentlich zu unterschiedlichen Diagrammtypen gehören. Es ist sogar denkbar, dass Elemente aus einem Strukturdiagramm und aus einem Verhaltensdiagramm auf dem gleichen Diagramm dargestellt werden, wenn damit eine besonders treffende Aussage zu einem Modell erreicht wird.
Die UML2 geht aber in anderer Hinsicht weit formaler mit Diagrammen um als die UML 1.4. Neu definiert die UML2 unter dem Namen UML 2.0 Diagram Interchange ein Austauschformat für Diagramme, so dass unterschiedliche Werkzeuge, mit denen Modelle basierend auf der UML2 erstellt werden, die Diagramme austauschen und wiederverwenden können. In der UML 1.x war das nur für die Repository-Modelle hinter den Diagrammen möglich, aber nicht für die eigentlichen Diagramme.
Für die UML-Versionen 1.x sah das Format keine Möglichkeit vor, Diagramme in einem standardisierten Format auszutauschen, was von vielen Anwendern der UML als wesentliche Lücke wahrgenommen wurde. Parallel zur Entwicklung der UML2 hat die OMG deshalb auch das standardisierte Austauschformat XMI überarbeitet. Unter anderem wurde die beschriebene Lücke geschlossen, indem die Spezifikation unter dem Namen UML 2.0 Diagram Interchange um ein Format für den Austausch von Diagrammen erweitert wurde.
Ein Austausch mit anderen Modellierungssprachen ist auch mittels Modell- zu Modell-Transformation möglich. Hierzu hat die OMG den Standard MOF QVT definiert. Im Gegensatz zu einem reinen Austauschformat, kann eine Transformation auch eine eigene Semantik enthalten. So kann zum Beispiel festgelegt werden wie ein Klassenmodell auf ein ER-Modell abzubilden ist. Die damit einhergehende Flexibilität ist insbesondere auch beim Austausch zwischen Werkzeugen nützlich, da verschiedene Anbieter praktisch immer auch individuelle Varianten des UML-Metamodells haben.
UML | Objektorientierte Programmierung
UML | Unified Modeling Language | UML | Unified Modeling Language | UML | Lenguaje Unificado de Modelado | Unified Modeling Language | UML-mallinnus | Unified Modeling Language | Linguaxe Unificada de Modelado | UML | Unified Modeling Language | 統一モデリング言語 | Unified Modeling Language | Unified Modeling Language | UML | UML | UML | UML | Unified Modeling Language | Unified Modelling Language | UML | UML | Ngôn ngữ mô hình hóa thống nhất | 统一建模语言
This article is licensed under the GNU Free Documentation License.
It uses material from the
"Unified Modeling Language".
Home Page • arts • business • computers • games • health • hospitals • home • kids & teens • news • physicians • recreation• reference • regional • science • shopping • society • sports • world