Sunday, August 03, 2008

New .Net Framework Designers Tools Released – Deps, Layering and PotentialCallers, oh my…

Brad Abrams - New Tools for Framework Designers Published

“Mircea recently published a set of tools we have been using recently in design and Architecture reviews of the .NET Framework. 

You can download the three new tools Deps, Layering, and potentialCallers here:

http://code.msdn.microsoft.com/fxarch

Deps

Deps.exe constructs the dependency diagrams between assemblies, and carries out cycle detection analysis.

The tool produces the files:

  • Full.dot. This is a graphviz – formatted file containing the inter-assembly dependencies, based on what each assembly declares as its references.
  • Api.dot. This is also a graphviz formatted file containing inter-assembly dependencies, but only those that are based on the non-private API signatures of public types. This includes the types themselves (i.e. a type A inheriting from a type B defined in another assembly will cause a dependency arc between these assemblies)
  • Full.txt. This is a text file showing which assemblies can be reached from each assembly, and whether there are cycles (the “True/False” statement)
  • Api.txt. Similar to above, but based on API-only dependencies.

Layering

Layering.exe verifies that some assemblies respect an architectural diagram.

The tool also outputs a file called “graph.dot” which shows the relations between groups within a layer and, between layers, the dependencies that violate layering. The file can be processed by graphviz.

PotentialCallers

PotentialCallers shows the list of methods that may (directly or indirectly) make a statically-determinable call to any one of the methods in a given set. To reiterate: no virtual calls are analysed.

The tool outputs at the console the list of direct calls that leads to calling any of the methods in the list. The output may be captured and then processed by graphviz.

…”

MSDN Code Gallery - Tools for Framework Architecture Verification

“This is a suite of tools primarily aimed at validating the architecture of a framework.

Currently, there are three tools:
Deps: produces dependency diagrams between assemblies, based both on implementation, as well as API-only.
Layering: verifies that a layering and grouping diagram is indeed satisfied by a set of assemblies
PotentialCallers: lists all the methods that call, directly or indirectly, a set of methods.

More documentation is included with the tool zip file (please see the Downloads section)

Feedback is more than welcome! Please feel free to use the Discussions page.

Note: the tools are built using F#. You need to download F# from here. Exact version information is included in the readme of the release.” [Project Description Leached in Full]

Some interesting sounding tools. I like idea behind the Deps tool. Sounds sort of like a diagramming/graphical Depends like utility.

Note the F# requirement… (downloading it myself now)

No comments: