Tracing von Features im Quellcode

Machen wir uns nichts vor. Selbst Vorzeige-Projekte mit Domain Driven Design haben das Problem, dass Funktionalität über viele Klassen zerstreut liegt. Wenn ein Feature bzw. eine Funktion „angefasst“ werden soll, müssen viele Klassen angepasst werden.

In einer sauberen Softwarearchitektur ist das sogar per se so, denn eine Funktion benötigt ja eine GUI, zumindest etwas Geschäftslogik, sowie einen Datenzugriff. Alles verschiedene Klassen.

Nun möchte ich eine kleine Methodik vorstellen, um Funktionalität (oder auch Requirements, je nachdem ob eher ein Individualprojekt oder Produkt vorliegt) durch den Quellcode Trace-bar zu machen.

Dazu verwenden wir die Funktion „Verweissuche“ von Visual Studio. Das Prinzip ist einfach: Definieren wir einfach alle Funktionen (die für den Nutzer relevant sind) in einer statischen Klasse als Konstanten und fügen allen Klassen oder Methoden, welche die Funktion repräsentieren, ein Attribut hinzu, welches die Konstante aufruft.

Der Code für die Funktionsliste könnte z.B. so aussehen:

Das Hinzufügen erfolgt am Besten mit einer Namenskonvention, damit es flüssig lesbar ist:

„Concerns Function AddArchive“. Das klingt doch gut!

Mittels der Verweissuche lassen sich nun ganz bequem alle Codestellen finden.

 

In diesem Beispiel existiert eine GUI-Klasse und eine Businesslogik-Klasse.

Die Funktionsliste müssen wir jedoch nicht von Hand schreiben. Die lässt sich auch aus jedem beliebigen Requirements-Werkzeug  bequem per Codegeneration erzeugen.

Mit dem RichSPEC-Editor geht dies out-of-the-box:

Dazu muss für jede Funktion eine ID ergänzt werden, welche einen gültigen C#-Feldnamen darstellt. Dann muss man nur noch auf „C#-Tracing generieren“ klicken und den Code in das Projekt einfügen.

Happy Tracing!