Wie viel von einem System man modelliert
Die einzige Frage, die es entscheidet, ist, welche Entscheidung das Modell stützen soll - und das meiste, was Leute modellieren, stützt gar keine.
6 Min. LesezeitModelling practice2 von 4
Die kurze Antwort
- Modellieren Sie so viel, wie eine Entscheidung stützt, die tatsächlich jemand treffen wird, und keinen Deut mehr.
- Benennen Sie zu jeder Sicht die Entscheidung, die sie stützt, und die Person, die sie trifft. Können Sie beides nicht benennen, wird die Sicht nicht gelesen.
- Ein vollständiges Modell eines ungebauten Systems ist eine Sammlung selbstbewusster Vermutungen, und sein Haupteffekt ist, dass man sie schwerer aufgibt.
- Zu detailliert ist ein Modell, sobald eine Codeänderung eine Modelländerung erzwingt und niemand sie vornimmt. Danach driftet es und sieht weiter verbindlich aus.
01Der Test: Benennen Sie die Entscheidung#
Bevor Sie irgendeine Sicht zeichnen, vervollständigen Sie diesen Satz: „Diese Sicht existiert, damit [Person] entscheiden kann [Sache].“ Wenn Sie nicht beide Lücken füllen können, zeichnen Sie sie nicht.
Der Test funktioniert, weil er widerlegbar ist, und genau das ist jeder andere Ratschlag zu diesem Thema nicht. „Modellieren Sie die wichtigen Teile“ kann keine Diskussion verlieren; „dieses Klassendiagramm existiert, damit das Plattformteam entscheiden kann, ob die Steuerberechnung zur Abrechnung gehört“ ist entweder wahr oder nicht, und man kann die genannte Person fragen.
Ehrlich angewendet entfernt er das meiste von dem, was modelliert wird. Ein Diagramm des aktuellen Systems, gezeichnet weil es jemand dokumentieren sollte, informiert über nichts. Eine Sicht, die jeden Dienst im Bestand zeigt, informiert über nichts, weil keine Entscheidung sie alle zugleich betrifft. Was übrig bleibt, ist eine kleine Zahl von Sichten, jede auf eine Auseinandersetzung gerichtet, die jemand gerade führt.
02Drei Arten, wie ein unzugeschnittenes Modell scheitert#
Es wird zur zweiten Implementierung. Jede Klasse, jedes Feld, jeder Aufruf - ein Modell in dieser Detailtiefe ist eine Kopie der Codebasis in einer Notation, und die Kopie ist immer die, die falsch ist. Das ist das Scheitern, das der Modellierung ihren Ruf eingebracht hat, und es kommt vollständig daher, dass niemand gefragt hat, wofür das Modell da ist.
Es wird zum Bild des Organigramms. Unzugeschnittene Modelle driften dahin, das System jedes Teams gleich stark zu zeigen, weil das politisch die einfachste Anordnung ist. Das Ergebnis ist ein Diagramm, in dem die zwei Komponenten, die tatsächlich miteinander sprechen, genauso gross sind wie zwanzig, die es nicht tun, und niemand findet darin die Frage.
Es wird auf ganz gewöhnliche Weise unpflegbar. Nicht dramatisch - einfach dadurch, dass es mehr Details enthält, als das Team zu aktualisieren bereit ist: ein paar Elemente veralten, dann ein paar mehr, und binnen zweier Quartale ist das Modell etwas, das man gegen den Code prüft, statt ihm zu trauen.
Dazu greifen, wenn
- Eine Entscheidung ist wirklich offen und zwei Personen sind uneins
- Eine Änderung geht über mehrere Teams und jemand muss die Nahtstellen sehen
- Eine spätere Leserin muss wissen, warum eine nicht offensichtliche Struktur existiert
- Eine neue Kollegin braucht die Form der Domäne, nicht die Form des Codes
Zu etwas anderem greifen, wenn
- Ein System dokumentieren, das niemand zu ändern vorhat
- Eine Entscheidung festhalten, die längst gefallen und aus dem Code ohnehin offensichtlich ist
- Modellieren, weil eine Vorlage oder ein Prozess ein Diagramm verlangt
- Jede Detailtiefe, die das Team nach Projektende nicht pflegen wird
03In der richtigen Grösse arbeiten#
Ein Modell, mehrere kleine Sichten. Der Zuschnitt ist eine Eigenschaft der Sicht, nicht des Modells - das Modell darf alles enthalten, was jemand eingetragen hat, und jede Sicht zeigt die Handvoll Elemente, die eine Entscheidung braucht. Genau dafür ist der Sichten-Mechanismus von ArchiMate da, und er gilt für UML genauso.
Modellieren Sie eine Ebene unter der Entscheidung, nicht zwei. Geht der Streit darum, welcher Dienst eine Zuständigkeit besitzt, modellieren Sie die Dienste und ihre Abhängigkeiten. Modellieren Sie nicht die Klassen darin; dieses Detail kann die Antwort nicht ändern, und es ist genau das Detail, das verrottet.
Löschen Sie Sichten, die ihren Zweck erfüllt haben. Eine Sicht, die für eine erfolgte Migration gezeichnet wurde, ist fertig, und sie zu behalten heisst, dass eine spätere Leserin ein selbstbewusstes Diagramm einer Architektur findet, die es nicht mehr gibt. Dokumentation zu löschen fühlt sich falsch an und ist meist richtig.
In je einer Zeile
- 01Jede Sicht muss eine Person und eine Entscheidung benennen. Wenn nicht, zeichnen Sie sie nicht.
- 02Ein vollständiges Modell eines ungebauten Systems ist selbstbewusstes Raten, und es zementiert die Vermutungen.
- 03Modellieren Sie eine Ebene unter der Entscheidung. Detail, das die Antwort nicht ändern kann, verrottet.
- 04Der Zuschnitt gehört der Sicht, nicht dem Modell - ein Modell, viele kleine Sichten.
- 05Löschen Sie eine Sicht, sobald ihre Entscheidung gefallen ist. Ein veraltetes Diagramm ist schlimmer als keines.
Als Nächstes in dieser Reihe: Namenskonventionen, und dann ein Modell aktuell halten.
04Häufige Fragen#
Wie viel von einem System soll ich modellieren?
So viel, wie eine Entscheidung stützt, die tatsächlich jemand treffen wird. Benennen Sie zu jeder Sicht, die Sie zeichnen wollen, die Entscheidung und die Person, die sie trifft; können Sie beides nicht benennen, ist die Sicht Dokumentation eines Systems statt ein Werkzeug, es zu ändern - und sie wird nicht gelesen.
Soll ich das ganze System vorab modellieren?
Nein. Ein vollständiges Modell eines noch nicht gebauten Systems ist eine Sammlung selbstbewusst gezeichneter Vermutungen, und sein Haupteffekt ist, dass man diese Vermutungen schwerer aufgibt. Modellieren Sie den Teil, an dem die Entscheidung wirklich offen ist, bauen Sie, und modellieren Sie den nächsten Teil, wenn die nächste Entscheidung ansteht.
Woran erkenne ich ein zu detailliertes Modell?
Daran, dass eine Codeänderung eine Modelländerung erzwingen würde und niemand sie vornimmt. Ab da hat das Modell mehr Detail, als das Team pflegen kann, und jedes Diagramm entfernt sich vom System, während es weiterhin verbindlich aussieht.
In dieser Reihe
- 01Welche Sprache wählen
- 02Modellumfang festlegen
- 03Namenskonventionen
- 04Modell aktuell halten
Passend dazu
Modellierungspraxis
Modellierungspraxis
Modellierungspraxis
Strukturdiagramme
Verhaltensdiagramme
Modellierungspraxis