views:

28

answers:

1

Hi all,

Recently I've become very concerned about "dependencies" in projects / systems. I had a very bad time when somebody deprecated a database server that nobody should have been using in my company and then suddenly lots of systems stopped working because they were using that database in a hidden corner in the code and nobody remembered.

I've been thinking that this wouldn't have happened if I could use a tool, maybe even a javadoc plug-in/extension where you could specify dependencies between systems.

Something close to the code, like adding a tag in the javadoc of a method that tells that that method is using that table in that database or that other Web Service in that server. Then this tool would generate a visual graph with all the systems and stuff.

So, you code the dependency, you add the comment/whatever in the code and the graph gets updated/generated automagically.

Does such a tool exist?

And by the way, we tried using wikis and stuff and I can say by my experience that they get outdated fairly fast. So, I don't think that they could be a proper solution.

A: 

In the Java world the OSGi systems try to introduce modularity - but if you have a rather large non-modularized application, migration could be quite a large work.

It is possible (and even required) to introduce dependencies between modules (together with version numbering). These dependencies are checked both at compile time and runtime (it is possible to replace modules without altering the others - but in this case testing is needed :D ).

It helps solving the problem you introduced, but it has quite a steep learning curve, and migrating the existing application can be very painful. On the other hand I don't know about any tool that is capable of building a dependency graph from Javadoc or any kind of documentation.

Zoltán Ujhelyi
Thanks for your response. I think when I have time I'll give it a try with groovy.
Marc