UML-Einführung und -Tools
- =========================
- Stefan Schwarzer
- 2010-09-21
- Einführung
- bin kein UML-Experte!
- eher Einäugiger unter Blinden
- oder Einäugiger unter Einäugigen? :-)
- aber Erfahrung mit UML in Projekten, hauptsächlich
- Klassendiagramme
- Zustandsdiagramme
- standardisierte grafische Notation für SW-Design
- primär für OOA/OOD/OOP
- existiert seit 1997
- aktuelle Version: 2.3
- Dokumentation
- flüchtig
- zum Beispiel Design-Diskussionen am Whiteboard
- persistent
- aufgehoben als SW-Dokomentation
- kann wie jede Dokumentation leicht veralten
- 13 Diagrammtypen
- Anwendungsfalldiagramm (use case diagram)
- Klassendiagramm (class diagram)
- Zustandsdiagramm (state machine diagram)
- Aktivitätsdiagramm (activity diagram)
- auch für andere Abläufe als in Programmen
- Sequenzdiagramm (sequence diagram)
- ...
- Beispiel Klassendiagramm
- Klassen
- Name
- Attribute
- Methoden
- Vererbung
- Schnittstellen
- Implementierung
- Nutzung
- Assoziationen
- Aggregation
- Komposition
- Multiplizität
- viele Bücher, zum Beispiel
- "UML konzentriert" von Martin Fowler und Kendall Scott
- "UML 2 kompakt" von Heide Balzert
- "Analyse und Design mit UML 2.3: Objektorientierte Softwareentwicklung" von Bernd Oestereich und Stefan Bremer
- viele Websites
- engl. und deutsche Wikipedia-Artikel
- Einführungen
- http://www.highscore.de/uml/
- http://www.sparxsystems.com/uml-tutorial.html
- http://www.sparxsystems.com/resources/tutorial/uml_tutorial2.html
- http://www.sparxsystems.com/resources/uml2_tutorial/
- Referenzen
- http://www.holub.com/goodies/uml/
- http://www.oose.de/downloads/uml-2-Notationsuebersicht-oose.de.pdf
- Kritik
- http://queue.acm.org/detail.cfm?id=984495
- http://archive.eiffel.com/doc/manuals/technology/bmarticles/uml/page.html
- Anwendung
- Am nützlichsten sind die oben genannten Diagramme
- Anwendungsfalldiagramm (use case diagram)
- Klassendiagramm (class diagram)
- Zustandsdiagramm (state machine diagram)
- Aktivitätsdiagramm (activity diagram)
- Sequenzdiagramm (sequence diagram)
- nur so viel verwenden wie nötig - Diagramme nicht überladen
- es müssen nicht alle Attribute/Methoden gelistet werden
- insbes. nicht die internen
- Mapping UML <-> Programmiersprache nicht perfekt, insbes. bzgl. Python
- dynamisch erzeugte Attribute (Regelfall) in Klassendiagramm angeben
- Datentypen angeben, auch wenn sie in Python prinzipiell flexibel sind
- Datentypen mit dem nötigen Detaillierungsgrad angeben
- "Liste" vs. "Liste von ..."
- oder wie in C++ "list"
- durch Duck Typing gegebene gemeinsame Schnittstellen evtl. mit modellieren, um Semantik im Diagramm wiederzufinden
- als Interfaces
- als Klasse mit eigenem "Stereotyp", bzpw. «model»
- Tools
- Auswahlkriterien
- Betriebssystem-Unterstützung
- viele Tools sind in Java entwickelt und laufen auch unter Linux
- normalerweise mit "java -jar " starten
- beste Tool-Unterstützung unter Windows
- einfache Bedienbarkeit
- Komplexität führt dazu, dass das Tool nicht genutzt wird
- Ausfüllen eines Dialogs für jedes Attribut/Methode bremst aus
- besser: Eingabe von Freitext, ggf. geparst
- UML-Standard (1.x oder 2.x?)
- abhängig von Projektanforderungen
- Tipp: UML 2, aber nur nötige Notation nutzen
- Tools in einer bestimmten Version unterstützen normalerweise nur 1.x oder 2.x, nicht beides gleichzeitig
- Daten-Export
- theoretisch gibt es Tool-übergreifende Standards
- XMI XML Metadata Interchange
- UXF UML eXchange Format
- XMI-Support ist weiter verbreitet, ist aber oft nicht so portabel wie erwartet
- UXF ist das später eingeführte aber einfachere Format
- Code in Modell konvertieren oder aus Modell erzeugen
- oft nur Java-Support
- evtl. noch C++ und/oder C#
- Wenn ein Tool beides kann, heißt das nicht automatisch, dass es Roundtrip-fähig ist!
- Zur Bedienung
- üblicherweise mehrere Bildschirmbereiche
- logische Struktur (Klassen etc.)
- gibt es nur einmal je Projekt
- normalerweise ein Baum
- Diagramme
- optional mehrere je Projekt
- angezeigte Objekte aus der logischen Struktur
- ggf. weitere Bildschirmbereiche
- Eigenschaften des gerade ausgewählten Objekts
- Design-Kritiken
- TODO-Liste
- Open Source
- ArgoUML
- http://argouml.tigris.org/
- gibt es schon lange
- überladenes UI
- kein Undo :-(
- VioletUML
- http://alexdp.free.fr/violetumleditor/page.php
- maximaler Schnuckelfaktor :-)
- leicht zu bedienen
- aber auch keine riesige Funktionalität
- für Gelegenheitsnutzer wahrscheinlich die beste Wahl
- UMLet
- http://www.umlet.com/
- zweitgrößter Schnuckelfaktor
- Diagrammknoten lassen sich in Wiki-Syntax beschreiben
- interessantes Bedienkonzept
- lästig: beim Vertauschen zweier Kästchen laufen Verbindungen durch beide hindurch
- Umbrello
- http://uml.sourceforge.net/
- gibt es schon länger
- ansprechende GUI
- aber Extra-Dialoge für Attribute/Methoden
- kann Python-Code sowohl einlesen als auch erzeugen
- aber kein Roundtrip!
- Bouml
- http://bouml.free.fr/
- viele Funktionen
- unübersichtliches UI
- zahlreiche Einstellungen
- Extra-Dialoge für Attribute/Methoden anzuzeigen
- kann Python-Code erzeugen
- Topcased
- http://www.topcased.org/
- Eclipse-basiert
- umfangreich - Download ca. 280 MB
- und andere
- Pyreverse
- http://pypi.python.org/pypi/pyreverse/
- Bestandteil von PyLint
- erzeugt Paket- und Klassendiagramme
- als Dot (GraphViz), PNG, ...
- leider nicht als XMI oder UXF
- hat noch Bugs
- scheitert zum Beispiel an Websourcebrowser (19 Module)
- evtl. (notfalls?) Vektor-Grafik-Programme
- Dia
- Inkscape
- kommerziell, kostenlos
- Artisan Studio Uno
- http://www.artisansoftwaretools.com/studiouno
- nur für Windows + .NET
- Modelio Free Edition
- http://www.modeliosoft.com/en/products/modelio-free-edition.html
- Ubuntu-Linux-Paket für jahrealte Version 8.04
- erfordert händische Installation von libstdc++5
- Usability ist problematisch, zumindest unter Ubuntu-Linux
- mit Jython zu scripten
- und evtl. andere
- kommerziell, kostenpflichtig
- _Manche_ als kostenlos angegepriesene Versionen haben Haken
- begrenzte Laufzeit
- kommerzielle Verwendung untersagt
- essenzielle Funktionen (Speichern, Drucken) fehlen
- Poseidon
- http://www.gentleware.com/
- Version 8.0 mit neuem (einfacherem) Bedienkonzept
- interessante Community-Lizenz
- Miete 6 Euro/Monat, 48 Euro/Jahr
- MagicDraw
- http://www.magicdraw.com/
- toll, aber umfangreich
- nichts für Gelegenheitsnutzer
- und _viele_ andere
- oft nur für Windows
- verschiedene Lizenztypen
- von ca. 100 bis über 1000 Euro pro Lizenz
- zum Beispiel Poseidon Professional Shared License >1200 Euro
- Fazit
- Die UML ist ein wichtiges Hilfsmittel für Diskussionen und zur Dokumentation.
- UML pragmatisch anwenden
- nur nötige Diagramme nutzen
- nur so detailliert wie nötig
- Es gibt kein Tool, dass kostenlos, Open Source, flexibel und leicht bedienbar ist.
- Kommerzielle Tools sind im Allgemeinen flexibler und "runder", aber kosten (u. U. viel) Geld.
- Fragen/Diskussion?