Wie setzt man die UML ein, um von der Analyse bis zum Feindesign ein durchgängiges und nachvollziehbares Modell zu entwickeln? Nach der Lektüre dieses Artikels ist der Leser zwar noch kein UML-Guru, doch sollte er deutlich erkennen können, worauf es bei der Modellierung ankommt, wie Schritt für Schritt ein Modell entsteht und dass Use-Case-Diagramme nicht gleich Analyse und dass Klassendiagramme nicht gleich Feindesign sind.
Sie möchten in Ihrer Software- oder Systementwicklung die UML einsetzen, haben sich voller Motivation ein UML-Buch gekauft, sich eventuell sogar durch einige der schwerverdaulichen Kapitel der UML-Spezifikation gekämpft und nun ... Ja, und nun wissen Sie immer noch nicht so recht, wie Sie eigentlich beginnen sollen. Dafür kommt Ihnen spontan der gute Doktor Faust in den Sinn »Da steh ich nun, ich armer Tor ...«. Kein Wunder, und Sie stehen sicherlich nicht alleine da. Die UML bietet zwar einen großen Werkzeugkasten gefüllt mit Diagrammen und Notationselementen, doch leider liefert sie keine Gebrauchsanweisung mit.
Zudem ist es notwendig, gleich zu Beginn eine Illusion zu zerstören: Es gibt KEINE exakten, standardisierten Richtlinien für die Erstellung eines UML-Modells. Und das ist auch gut so! Kein Systementwicklungsprojekt ist wie das andere, kein Produkt ist wie das andere, und daher kann auch kein Modell wie das andere sein. Modelle wachsen und entwickeln sich mit dem Projekt. Ihr Inhalt und ihre Detailtiefe hängen von vielen Einflussfaktoren ab, und gerade die Detaillierung kann und wird innerhalb des Modells variieren. Verabschieden Sie sich von Anfang an von dem Gedanken, es gäbe feste Regeln, welche Inhalte darzustellen sind und wie detailliert zu modellieren ist. Die UML gibt hierfür nichts vor und man kann auch nicht ohne weiteres von einem Projekt auf das andere schließen. Die einzige Richtlinie, die Sie haben werden, ist die Frage: »Welchen Nutzen hat Diagramm xy für das Projekt?«.
Hier einige Punkte, wovon Inhalt und Detaillierung Ihres Modells abhängen können und die Sie bei der Modellierung stets berücksichtigen sollten:
Die hohe Kunst liegt darin, das Modell so zu gestalten, dass es den Entwicklungsprozess optimal unterstützt. Die fehlenden Vorgaben und eher abstrakte Semantik der UML sind so gesehen kein Manko, sondern ein großer Vorteil. Der Werkzeugkasten ist universell einsetzbar und äußerst reichhaltig – nur eben für den Neuling etwas unübersichtlich. Ein Beispiel: Use- Cases stellen Funktionen eines Systems dar. Nun ist »System« ein sehr abstrakter Begriff, da von einem Unternehmen bis hin zur kleinsten Komponente einer Software alles ein »System« im eigentlichen Sinne des Wortes ist. Das bedeutet, abhängig vom Kontext lässt sich von Geschäftsprozessen über Systemfunktionen bis hin zu Komponentenfunktionen alles in Use-Case-Diagrammen abbilden.
Mit Klassendiagrammen müssen nicht immer Softwareklassen dargestellt werden. Wir können sie ebenso in der Analysephase als eine Art vernetztes Glossar (Begriffsmodell) einsetzen. Hierfür geben wir den Klassen lediglich weniger kryptische Namen und sehen in den Attributen Eigenschaften von Dingen aus der realen Welt. Die Assoziationen repräsentieren dann Beziehungen und Abhängigkeiten zwischen den Begriffen aus der Fachwelt. Und zudem hängt es vollkommen vom Entwickler ab, ob er mit 20 Klassen das Fachgebiet nur grob umreißt oder mit 200 Klassen eine sehr genaue Repräsentation davon konstruiert. Der Entwickler hat also bezüglich Inhalt und Abstraktionsgrad weitgehend freie Hand.