jenswinter.com
Software Development 24/7

Abhängigkeiten visuell aus Code erzeugen

September 25, 2008 21:42 by Jens
In der deutschsprachigen ALT.NET-Mailingliste ist eine sehr interessante Diskussion über die Erzeugung eines visuellen Abhängigkeitsgraphen aus dem Quelltext heraus entstanden. Der Gedanke, aus bestehendem Quelltext eine Architekturdokumentation generieren zu lassen klingt sehr vielversprechend.

Ralf Westphal schrieb ein Posting, in dem er fragte, wie man ein Fluent API dafür aufbauen könnte. Seine Idee sieht dabei in etwa so aus:

Konfiguration:

DIContainer.Instance
    .Root<IServiceA, ServiceA>()
        .uses<IServiceB, ServiceB>();
        

Dazugehöriger Quelltext:

class ServiceA : IServiceA
{
    private IServiceB _sb;

    public ServiceA()
    {
        _sb = DIContainer.Instance.Get<IServiceB>();
    }
}


Generierung des Graphen:

Bitmap bmp = DIContainer.Instance.DependencyGraph.ToBitmap();


Es gibt nur ein Problem, das ich bei dem Ansatz noch sehe. Es verletzt das DRY-Prinzip. Ralf konnte mich bisher noch nicht restlos vom Gegenteil überzeugen. Die Information der Abhängigkeit ist an zwei Stellen vorhanden. Einmal in der Konfiguration des Containers und ein zweites mal im Quelltext selbst.

Momentan bin ich der Überzeugung, dass man mit Hilfe des Managed Extensibility Frameworks diese Wiederholung der Informationen aufheben könnte. Ich forsche aber noch. :)

Related posts