views:

220

answers:

3

I came across Lattix for analysing the architecture by investigating the code. It supports C/C++, Java, .Net, etc. One can define certain rules to maintain the defined architecture. The tool can flag any violations at build time.

Has anybody used this or any other similar tool? I see some benefit of this tool in development but not sure if this kind of tool is must to have?

A: 

NDepend is a very complete tool to analyse software architecture for .Net programs. This kind of tool is very convenient to track dependencies and to measure various code metrics.

vaucouleur
+1  A: 

We use both Lattix and NDepends to track dependencies of our assemblies.

Both tools support static visualizing dependencies between assemblies and classes through a dependency structure matrix (DSM). A DSM gives you the ability to show the architecture of your application. For example if you use layering this should be visible in the DSM. Cyclic dependencies will also be visible in a DSM.

A nice practical introduction can be found in OOPSLA05-dsm.pdf

NDepends specifically targets .Net and has Visual Studio Integration. Lattix is also able to create DSM's for other languages. Both support build integration which allows you to create rules in your build to prevent incorrect dependencies.

Just try both tools and see if the generated DSM is what you expected. Check circular dependencies and see if there are invalid dependencies. For example, a user interface which directly uses the data access layer instead of using the business layer.

kalkie
More on Dependency Structure Matrix usage to spot design patterns here http://www.ndepend.com/Doc_Matrix.aspx
Patrick Smacchia - NDepend dev
A: 

Well, the tool looks swell and fine and worked pretty when presented.
After that, well, all those tools making reverse engineering (in my experience with few versions of Rational Rose, StarUML, Sparx(the better one), Understand) from C++ well.. falls in troubles.
I can see why - code in C++ more complicated and less ordered than C#, have links to libraries, modules and COMs and so on.
In our real project its (based on Understand database) reverse engineering was freezed immediately and totally (I mean hard-reset-freezed).
May be we need to run it on WS or server.
May be it was Understand' fault.
After reset it became very slow when its matrices opened ~200 modules below. Well, I never said our project is developed well, right. We hoped to research it to make it better. I still believe it can be very helpful in long run (if your company agreed to pay checks on continuous re-work) but as all those tools it's better to START from scratch and continously use it all the time. NB We tried to use it with bsc (Microsoft database), but it also failed.

bgee