Auto Layout: Organisieren Sie Ihre Architekturdiagramme sofort

Es gibt eine Aufgabe, der sich jedes Architekturteam irgendwann stellen muss: das Diagramm ist gewachsen. Was als fünf ordentlich angeordnete Systeme begann, sind jetzt siebenundzwanzig Elemente mit vierzig Beziehungen, von denen die Hälfte sich überkreuzt. Jemand hat letzte Woche einen neuen Container hinzugefügt und ihn in den einzigen freien Platz fallen lassen — die rechte untere Ecke, verbunden durch eine Linie, die durch drei andere Knoten schneidet. Das Diagramm enthält immer noch korrekte Informationen. Es ist nur unleserlich.

Also verbringt jemand einen Nachmittag damit, Boxen zu verschieben. Die obere Hälfte sieht gut aus, dann stellt man fest, dass das Verschieben des API-Gateways die Ausrichtung von allem darunter zerstört. Man fängt von vorne an. Eine Stunde später ist das Diagramm etwas besser. Die nächste Person, die ein Element hinzufügt, platziert es an der falschen Stelle, und der Zyklus wiederholt sich.

Das ist ein Layout-Problem, und Layout-Probleme haben algorithmische Lösungen. Genau das macht Auto Layout.

Ein Klick, alles bewegt sich

Auto Layout befindet sich in der Diagramm-Symbolleiste. Klicken Sie auf die Schaltfläche, und jedes Element in Ihrem Diagramm — Systeme, Container, Komponenten, Code-Elemente, Overlays und zusammengesetzte Gruppen — bewegt sich zu einer berechneten optimalen Position. Beziehungen entwirren sich. Sich kreuzende Kanten trennen sich. Die Hierarchie wird sichtbar.

Die Animation dauert 400 Millisekunden. Knoten gleiten von ihren aktuellen Positionen zu den neuen mit einer gedämpften kubischen Kurve. Sie sehen die Transformation geschehen, was Ihnen hilft, die räumliche Orientierung beizubehalten — Sie können verfolgen, wohin jedes Element gegangen ist, anstatt dass das Diagramm plötzlich zu einer unbekannten Anordnung springt.

Wie es funktioniert

Unter der Haube verwendet Auto Layout ELK.js, den Eclipse Layout Kernel, kompiliert nach JavaScript. ELK ist eine Graph-Layout-Engine, die mehrere Jahrzehnte Forschung im automatischen Graphenzeichnen implementiert. Archyl nutzt den Schichtenalgorithmus, der speziell für gerichtete Graphen konzipiert ist — genau das, was Architekturdiagramme sind.

Der Layout-Prozess läuft in mehreren Phasen:

Schichtzuweisung

ELK weist zunächst jeden Knoten einer Schicht zu, basierend auf seiner Position im Abhängigkeitsgraphen. Elemente ohne eingehende Beziehungen kommen in die erste Schicht. Elemente, die nur von Elementen der ersten Schicht abhängen, kommen in die zweite. Und so weiter. Das erzeugt die natürliche Hierarchie von oben nach unten (oder von links nach rechts), die Architekturdiagramme lesbar macht.

Kreuzungsminimierung

Innerhalb jeder Schicht ordnet ELK die Knoten um, um die Anzahl der sich kreuzenden Kanten zu minimieren. Es verwendet eine Technik namens Schichtendurchlauf — wiederholtes Durchlaufen der Schichten und Tauschen von Knotenpositionen, bis die Kreuzungszahl sich stabilisiert. Weniger Kreuzungen bedeuten sauberere, besser lesbare Diagramme.

Knotenplatzierung

Sobald die Schichten und die Reihenfolge bestimmt sind, berechnet ELK die tatsächlichen x/y-Koordinaten. Archyl verwendet den Brandes-Koepf-Algorithmus mit ausgewogener Ausrichtung, der kompakte Layouts erzeugt, bei denen verbundene Knoten sich vertikal (oder horizontal im Links-nach-Rechts-Modus) ausrichten, wann immer möglich. Das erzeugt diese befriedigenden geraden Pfeile zwischen verwandten Elementen.

Kantenrouting

ELK routet Kanten mit Spline-Pfaden, und Archyl berechnet den optimalen Verbindungspunkt — oben, unten, links oder rechts — für jede Beziehung basierend auf den endgültigen Knotenpositionen neu. Wenn ein System über einem Container sitzt, verbindet sich die Beziehung vom unteren Rand des Systems zum oberen Rand des Containers. Wenn sie nebeneinander stehen, geht die Verbindung von links nach rechts.

Unterstützung zusammengesetzter Graphen

Architekturdiagramme sind nicht flach. Container leben in Systemen. Komponenten leben in Containern. Overlays gruppieren verwandte Elemente. Auto Layout berücksichtigt all diese Verschachtelungsbeziehungen.

Wenn ein System Container auf dem Diagramm enthält (dargestellt als zusammengesetzter Gruppenknoten), behandelt ELK es als zusammengesetztes Elternelement mit internen Kindern. Die Kinder werden innerhalb des Elternelements angeordnet, und das Elternelement passt seine Größe an. Das interne Layout verwendet denselben Algorithmus wie die oberste Ebene — geschichtet, mit Kreuzungsminimierung und Ausrichtung — sodass die Struktur innerhalb einer Systemgruppe genauso sauber ist wie die Struktur außerhalb.

Overlays funktionieren genauso. Wenn ein Overlay konfigurierte Elemente hat, werden diese Elemente während des Layouts als Kinder des Overlays behandelt. Das Overlay ändert seine Größe und Position, um seine Mitglieder mit angemessenem Abstand zu umfassen. Sogar "schwebende" Overlays — solche ohne explizite Elementzuweisungen — werden behandelt: Auto Layout erkennt, welche Knoten sich visuell innerhalb der Grenzen des Overlays befinden, und hält sie zusammen.

Nachbearbeitung: Ausrichtung und Rastereinrastung

Die Rohausgabe von ELK ist gut, aber nicht perfekt. Archyl wendet zwei Nachbearbeitungsdurchläufe an, um sie zu verfeinern.

Kettenausrichtung findet verbundene Knoten, die auf der senkrechten Achse nahezu ausgerichtet sind, und zwingt sie auf dieselbe exakte Mittellinie. Dies verwendet eine Union-Find-Struktur, um Ketten verbundener Knoten zu gruppieren, berechnet dann den Medianmittelpunkt und richtet die gesamte Kette aus. Das Ergebnis: perfekt gerade Pfeile zwischen verbundenen Elementen — keine "fast vertikalen" Linien mehr, die schlampig aussehen.

Überlappungsauflösung erkennt Knoten, die nach der Ausrichtung zu nahe beieinander gelandet sind, und schiebt sie auseinander. Sie läuft iterativ bis zu fünf Durchläufe, was kaskadierende Verschiebungen behandelt, bei denen das Bewegen eines Knotens eine neue Überlappung mit einem anderen erzeugt.

Nach beiden Durchläufen rastet jede Position auf einem 20-Pixel-Raster ein, das dem React-Flow-Hintergrund entspricht. Das bedeutet, dass Elemente sich präzise an den Rasterlinien ausrichten und ein gepflegtes, beabsichtigtes Aussehen erzeugen.

Richtungsumschalter

Auto Layout unterstützt zwei Richtungen: Von oben nach unten und Von links nach rechts. Ein Umschalter neben der Auto-Layout-Schaltfläche lässt Sie zwischen ihnen wechseln.

Von oben nach unten ist der Standard und funktioniert gut für die meisten Architekturdiagramme — externe Akteure oben, Systeme in der Mitte, Infrastruktur unten. Von links nach rechts funktioniert besser für Pipeline-artige Architekturen oder flussorientierte Ansichten, in denen Daten horizontal durch Verarbeitungsstufen fließen.

Die Richtung beeinflusst alles: Schichtzuweisung, Kreuzungsminimierung, Ausrichtungsketten und Verbindungspunktberechnung. Wechseln Sie die Richtung, und das gesamte Diagramm orientiert sich neu.

Was gespeichert wird

Auto Layout ist nicht nur ein visueller Effekt. Nach Abschluss der Animation wird jede berechnete Position auf dem Server gespeichert. Knotenpositionen, Overlay-Grenzen, Dimensionen zusammengesetzter Gruppen und Kantenverbindungspunkte werden alle gesichert. Schließen Sie den Browser, kommen Sie morgen zurück, und das Layout ist genau so, wie Auto Layout es hinterlassen hat.

Kantenverbindungspunkt-Aktualisierungen werden für Effizienz in einem einzigen API-Aufruf zusammengefasst. Overlay-Größenänderungen werden einzeln gespeichert. Knotenpositionen werden gebündelt gesendet. Nichts geht verloren.

Globale Architekturansicht

Auto Layout funktioniert auch auf der Seite Globale Architektur — nicht nur innerhalb einzelner Projekte. Wenn Sie Systeme quer durch Ihre gesamte Organisation mit Dutzenden projektübergreifender Beziehungen betrachten, ist manuelles Layout besonders mühsam. Auto Layout bringt dieselbe Ein-Klick-Organisation in die globale Ansicht, mit derselben Unterstützung zusammengesetzter Graphen für Systemgruppen, die ihre Container enthalten.

Wann man es nutzen sollte

Auto Layout ist in drei Szenarien am nützlichsten:

Nach der KI-Entdeckung. Wenn Archyls KI ein Repository analysiert und ein C4-Modell generiert, werden die initialen Positionen algorithmisch berechnet, spiegeln aber möglicherweise nicht das Layout wider, das Sie wählen würden. Auto Layout gibt Ihnen einen sauberen Ausgangspunkt.

Nach signifikanten Änderungen. Sie haben fünf neue Container hinzugefügt, Beziehungen reorganisiert und Komponenten zwischen Systemen verschoben. Das Diagramm ist unübersichtlich geworden. Auto Layout berechnet alles von Grund auf neu.

Beim Erkunden eines neuen Projekts. Sie sind einem Projekt beigetreten und möchten seine Architektur verstehen. Das Diagramm wurde nach dem mentalen Modell eines anderen gestaltet. Auto Layout erzeugt eine standardisierte, lesbare Anordnung, die die Struktur klar macht.

Sie können einzelne Elemente jederzeit nach dem Ausführen von Auto Layout anpassen. Es ist ein Ausgangspunkt, keine Einschränkung.

Erste Schritte

Auto Layout ist ab sofort auf allen Plänen und in jedem Diagramm verfügbar — auf Projektebene und global. Öffnen Sie ein beliebiges Diagramm, klicken Sie auf die Schaltfläche Auto Layout in der Symbolleiste und schauen Sie zu, wie sich Ihre Architektur selbst organisiert.

Ihre Architektur verdient es, lesbar zu sein. Auto Layout stellt sicher, dass das Diagramm nicht im Weg steht.


Mehr über die Erstellung effektiver Architekturdiagramme erfahren Sie in unserem Leitfaden zum C4-Modell. Um zu verstehen, wie Auto Layout mit projektübergreifenden Ansichten interagiert, erkunden Sie Echtzeit-Zusammenarbeit und Globale Architektur. Um die Beziehungen zu analysieren, die Auto Layout anordnet, probieren Sie Impact Radar.