Marcel Moré schloss den FM-Lab-Block mit der graph-basierten Analyse ab. Statt eine gewachsene Lösung als Sammlung von Tabellen zu betrachten, wird sie als Netzwerk modelliert – und dann automatisch in sinnvolle Module zerlegt.
Ausgangspunkt
Ursprünglich war ein Export nach Graphify geplant, einem Tool, das derzeit für agentisches Entwickeln und semantische Auflösung von Second-Brain-Konzepten viel Aufmerksamkeit bekommt. Die Anbindung funktionierte: FM-Lab exportiert eine große JSON-Datei, die Graphify verarbeiten kann.
Graphify ist allerdings ein umfangreiches Projekt mit Python-Stack und vielen Abhängigkeiten. Deshalb die Überlegung: Warum das, was Graphify kann, nicht direkt in FM-Lab nutzbar machen? Eine rudimentäre Darstellung von Objektverbindungen gab es bereits – daraus wurden zwei ausgebaute Konzepte: ein Drill-Down und eine automatisch generierte Topologie des gesamten Projekts.
Automatische Modul-Erkennung
Im Zentrum steht nicht die grafische Darstellung, sondern das sinnvolle Clustern einer riesigen Lösung. Dafür kommen zwei etablierte Verfahren zum Einsatz:
- Louvain
- Leiden
Beide Algorithmen brechen die Verbindungen zwischen allen Knoten so lange herunter, bis eine stabile Konstellation entsteht. Das Ergebnis ist eine architektonisch saubere Trennung zusammenhängender Bereiche – ohne dass ein Mensch eingreifen muss. Aus hunderttausenden Verknüpfungen entsteht so eine erste Architekturskizze der Lösung.
Semantische Namen per LLM
Die Cluster sind mathematisch korrekt, aber zunächst namenlos. Hier setzt ein neuer Skill /fm-graph-cluster an: Das Modell schaut in ein Bündel von Knoten hinein, erkennt die dahinterliegende Business-Logik und vergibt einen sprechenden Namen – etwa “Stammdaten” oder “Benutzerverwaltung”. Die Namen sind editierbar, wer will, benennt selbst um. FM-Lab speichert dazu einen extra Layer als Cache, der die Namen auch nach einem Graph-Update auf die erkannten Module matched.
Navigation im Graphen
Der Graph lässt sich rekursiv durchlaufen und in alle Richtungen filtern:
- Tiefe: Der rekursive Durchlauf ist bei 1.000 Objekten gedeckelt, die Tiefe bei vier Ebenen – schon bei Stufe drei oder vier entstehen sonst extrem große Graphen.
- Richtung: “verwendet”, “verwendet von” oder beides – rekursiv nach oben und unten.
- Objekttypen: Table Occurrences, Felder, Skripte, Variablen, Layouts und weitere lassen sich einzeln ein- und ausblenden.
- Communities: Aktiviert man die Cluster-Einfärbung, sieht man, wo die erkannten Module durch den Graphen schneiden – und in welchem Größenverhältnis sie zueinander stehen.
- URL-Navigation: Jeder Zustand ist über eine URL adressierbar. Wer die URL einwirft, landet exakt wieder in derselben Ansicht.
Eine Farbcodierung erleichtert die Orientierung. Diese ist über die Objekttypen hinweg konsistent nur im Cluster-Modus färben die Farben nach Community statt nach Typ.
Ein praktischer Hinweis aus der Demo: Bei sehr großen Graphen ist die JavaScript-Engine von Chrome für die Darstellung im Browser deutlich schneller als die von Safari.
Der einfachere Weg: Drill-Down
Nicht jeder arbeitet gerne im Graphen. Deshalb gibt es alternativ einen visuellen Drill-Down über Communities oder über Datei und Objekttyp. Man sieht auf einen Blick die Größenverhältnisse – welche Dateien die meisten Objekte enthalten, wie die Balance zwischen Feldern, Skripten und Layouts aussieht – und klickt sich schrittweise zu den dicken Brocken durch. Am Ende steht eine Liste mit Objekten, zu denen sich direkt navigieren lässt.
Vier Zugänge zur selben Lösung
Mit diesem Baustein stehen in FM-Lab nun vier Analysewege nebeneinander:
- Explorativ – Suchen und Klicken durch den Objektkatalog
- Statische Code-Analyse – regelbasierte Dashboards
- Graph – Topologie, Cluster und Referenzketten
- Agentisch – die AI arbeitet per SQL auf dem Katalog
Alle vier bauen auf demselben Objektkatalog auf, der dank der neuen Konvertierung schnell aktualisiert ist.
Praktischer Nutzen
Besonders wertvoll ist der rekursive Durchlauf vor Eingriffen in gewachsene Systeme: Bevor ein Feld oder ein Skript verändert oder gelöscht wird, lässt sich visuell aufgelöst ermitteln, welche Seiteneffekte diese Änderung im gesamten System auslöst.
Für die Analyse großer Legacy-Lösungen gibt es die zusätzliche Option für den Skill /fm-graph-cluster --deep-research: Er lässt zunächst den Cluster-Algorithmus laufen und schlägt drei bis vier mögliche Partitionierungen vor. Nach der Bestätigung geht die Deep-Research-Phase in die Top-100-Knoten, läuft sie rekursiv durch, sammelt alle semantischen Signale und schreibt daraus eine Architekturbeschreibung – was die Lösung kann, was sie tut und wofür sie ursprünglich gebaut wurde. Dies ist der bislang weitreichendste agentische Analyse-Ablauf von FM-Lab, der entsprechend zeitaufwändig ist und am besten im Hintergrund läuft. Als Ergebnis liefert er ein aussagekräftiges Markdown-Dokument mit den Ergebnissen.
Fazit
Der Graph ist eine sehr mächtige visuelle und interaktive Spielwiese, für die man sich eine eigene Methodik zurechtlegen muss. Wer das tut, bekommt einen Zugang zur Makro-Architektur, den Listen und ER-Diagramme nicht liefern können. Über den Drilldown erhält man alternativ einen schnelle Überblick für den Einstieg in große Lösungen.
Weitere Infos:
FM Lab – 4 Code Analysis Approaches
https://github.com/marcel-more/fm-lab/blob/main/docs/fm-lab/Wiki/4%20Code%20Analysis%20Approaches.md
Graphify – The knowledge graph your Al can reason over.
https://graphify.com
Von Louvain nach Leiden: Gewährleistung gut vernetzter Gemeinschaften
https://www.alphaxiv.org/de/abs/1810.08473