Archive for February 2008
Today I felt need in simple diagram editor in order to draw a comprehensive flow-chart diagram.
Previously I widely used Dia, but it was always too painful to achieve acceptable results with no constant mistakes, and overall creation always took too long.
In the past I also several times evaluated Enterprise Architect, Visio and SmartDraw, but they were too heavy, not only from the package size and memory usage view, but also they required too much time to get used to them, and time is the most expensive resource, as you know.
So, today I’ve restarted the process of finding a simple and good diagram editor, and surprisingly, the first try give me the one, which caused me to stop immediately.
I won’t list here all yWorks‘ yEd‘s features and won’t compare it to anything else – just try it, and I promise: you will be happy. The only thing to add is it’s very fast and light, despite the fact it’s java based.
One of my first assignments at the new company (remember, I left Zend previous week), was analysing existing projects structure. Which means distribution of classes into packages, package dependencies, libraries usage etc.
The results, I would say, were far from being perfect, but I can bet, most of large (and especially proprietary) projects would look similar or even worse. But this is not what I was going to say.
What I am going to say, is for this purpose I evaluated several analysis tools and I want to share my opinion about them.
Here they are (in order of evaluation).
1. Eclipse Metrics(1) (CPL)
Pros: Runs fast, provides tangle detector.
Cons: Dependencies graph is not usable with large projects. No text output of dependencies is available.
2. Eclipse Metrics(2) (CPL)
Cons: Does not analyze dependencies.
Pros: Nice and simple UI, fast analysis.
Cons: Provides neither graph nor detailed dependency cycles information, doesn’t provide links to source.
3. eDepend (Commercial)
Pros: full featured graphic dependency analyzer, allows filtering on dependency kind
Cons: Commercial, creates disproportedly wide graphs for large projects that are hard to maintain, very slow analyzing and graph creation, doesn’t provide info on elements which depend on selected element.
4. stan4j (Free Beta)
Pros: Full featured graphic dependency analyzer, very cute GEF based UI, cycles and tangles visualizer, very convenient eclipse integration, report/graphics export ability.
Cons: Does not provide recursive dependency paths on selected elements, does not provide inter-package class dependencies information, non graphical views improvement is suggested.
In the end, in order to perform my task I’ve mostly used stan4j, sometimes switched to eDepend
and once or twice times executed JDepend – each of them has its specific advantages.