Um einen Überblick über ein Software System zu vermitteln, wird häufig auf Schichten zurückgegriffen. Die Module des Systems werden in Schichten dargestellt und gestapelt. Obere Schichten dürfen untere Schichten benutzen, aber nicht umgekehrt:
- Features bauen auf anderen Features auf
- REST APIs benutzen Datenbankschichten
Oft werden die Schichten zum Projektstart entworfen und der Quellcode entsprechend strukturiert. Das Problem: mit der Zeit kann der Überblick schnell verloren gehen, die initialen Schichten sind nicht mehr aktuell und die momentanen Schichten existieren nur in den Köpfen einiger Entwickler. Schnell ist ein Aufruf auf eine Komponente hinzugefügt, die "in die falsche Richtung" zeigt und es entstehen zyklische Abhängigkeiten.
Die Struktur des Systems und die Struktur des Quellcodes passen nicht mehr zusammen, oder gehen langsam verloren.
Sandstorm Dependency Analysis (kurz sda) ist ein Open-Source CLI Tool um die Top-Level Struktur im Quellcode darzustellen und zu überwachen.
Das Tool befindet sich auf github.com/sandstorm/dependency-analysis