Softwaremodellierung und UML
Softwaremodellierung stellt ein System durch Abstraktionen dar, die seine Struktur und sein Verhalten erfassen, und die Unified Modeling Language (UML) ist die Standard-Grafiknotation zur Darstellung solcher Modelle.
Definition
Softwaremodellierung ist die Konstruktion abstrakter Darstellungen eines Softwaresystems zu dessen Analyse, Design und Kommunikation, und UML ist eine standardisierte Allzweck-Modellierungssprache, die einen vereinheitlichten Satz von Diagrammtypen für diese Darstellungen bereitstellt.
Scope
Dieses Thema behandelt Strukturmodelle wie Klassen-, Komponenten- und Bereitstellungsdiagramme; Verhaltensmodelle wie Anwendungsfall-, Sequenz-, Aktivitäts- und Zustandsdiagramme; die Rolle von Modellen in Analyse, Design und Kommunikation; modellgetriebene Entwicklung und Codegenerierung; und den angemessenen Grad an Modellierungsgenauigkeit für ein bestimmtes Projekt.
Core questions
- Welche Aspekte eines Systems werden durch Struktur- im Vergleich zu Verhaltensmodellen erfasst?
- Wie stellen die wichtigsten UML-Diagrammtypen ein Design dar?
- Wie viel Modellierungsgenauigkeit ist für ein bestimmtes Projekt angemessen?
- Wann ist die automatische Codegenerierung aus Modellen sinnvoll?
Key theories
- Mehrere Ansichten eines Systems
- Ein System wird aus komplementären Blickwinkeln modelliert – statische Struktur, Interaktionen, Zustandsverhalten und Bereitstellung – wobei jeder durch geeignete Diagrammtypen erfasst wird, da keine einzelne Ansicht alle relevanten Designinformationen vermittelt.
- Modellgetriebene Entwicklung
- Modelle können als primäre Entwicklungsartefakte dienen, aus denen Implementierungen teilweise oder vollständig durch Transformationen generiert werden, wodurch das Abstraktionsniveau erhöht und das Design direkt an den Code gebunden wird.
Clinical relevance
Modelle machen Designabsichten explizit, unterstützen die Analyse, bevor Code existiert, und bieten eine gemeinsame Sprache innerhalb eines Teams; ihr Wert hängt von der Anwendung des richtigen Modellierungsumfangs ab, da übermäßige oder veraltete Modelle Kosten ohne Nutzen verursachen.
Evidence & guidelines
Die OMG UML-Spezifikation definiert die Standardnotation und -semantik, und verwandte OMG-Standards wie SysML und MOF erweitern die Modellierung auf Systemtechnik und Metamodellierung.
History
UML entstand Mitte der 1990er Jahre aus der Vereinigung der Booch-, OMT- und Objectory-Methoden, wurde 1997 als OMG-Standard angenommen und entwickelte sich über UML 2 weiter; modellgetriebene Ansätze und leichtgewichtige Skizzierung koexistieren mit Debatten darüber, wie viel formale Modellierung sich auszahlt.
Debates
- Schwergewichtige modellgetriebene Entwicklung versus leichtgewichtige Skizzierung
- Es wird kontrovers diskutiert, ob Modelle maßgebliche Artefakte sein sollten, die die Codegenerierung steuern, oder informelle Skizzen zur Kommunikation; die Vision des Modells als Programm verspricht Konsistenz, während der skizzenorientierte Ansatz geringen Overhead und Anpassungsfähigkeit schätzt.
Key figures
- Grady Booch
- James Rumbaugh
- Ivar Jacobson
- Martin Fowler
Related topics
Seminal works
- booch2005
- omg2017uml
- fowler2003
Frequently asked questions
- Ist UML in der agilen Entwicklung noch relevant?
- Ja, wenn auch oft leichter eingesetzt. Agile Teams neigen dazu, UML-Diagramme eher als informelle Skizzen zur Kommunikation und zum Nachdenken über das Design zu verwenden, anstatt als erschöpfende Spezifikationen, wobei sie gerade so viel Modellierung anwenden, wie zur Klärung des jeweiligen Problems erforderlich ist.
- Erfordert Modellierung UML?
- Nein. UML ist die am weitesten standardisierte Notation, aber die Modellierung kann auch andere Notationen oder domänenspezifische Sprachen verwenden; die wesentliche Idee ist die Abstraktion von Struktur und Verhalten, wofür UML eine gut unterstützte Option ist.