Reputation: 10987
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?
Upvotes: 4
Views: 4102
Reputation: 318
I've used Lattix for primarily analyzing C++, .NET, Java and Fortran code. It is helpful for both new application development and improving the architecture of existing software. The tool supports direct import of .NET dlls, Java classes or jar files, and SQL connection. If you are looking at C++ or Fortran, a parser like Klockwork, Understand or Clang will be needed. It is possible to set up an ongoing update to your Lattix project with every software build - this will ensure that you have an updated DSM to continuously monitor the architecture of your software. This can let you know how your software is changing over time and if any code is violating rules that you set at the beginning of your design or if any rules need to be modified etc. For looking at existing software, the tool can quickly decompose a system for you and identify where there are cyclical dependencies. There are algorithms for partitioning the system based on proximity to other sub-systems (e.g. classes) or grouping sub-systems based on dependency patterns. This can be helpful if you are looking to improve the architecture of an existing software and make it modular.
There is a wealth of information on kb.lattix.com - just sign up to read the articles. Also, I think they offer an evaluation version, which you can explore to see if the tool will be useful for you.
Upvotes: 0
Reputation: 989
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.
Upvotes: 0
Reputation: 514
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.
Upvotes: 1
Reputation: 116
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.
Upvotes: 0