Having trouble explaining your non-programmer boss that the whole story of creating software is just going too fast? Or tried to convince someone you need more time to plan software, not just to write software? Show these people some graphs. They’ll get it. Or at least you’ll get it they’ll never get it.
The title should actually be tight coupling visualized. Graphs come from one of the companies where I used to work. Each node in the graph represents one function from the code (not necessarily in the same file). An edge running from the node a to the node b represents a call of function b from function a.
How to obtain such a graph from your code? Ok, first of all, it was PHP code. Function calls were obtained and saved in a file using the tool named PHPCallGraph. In this case I used it from command line on Ubuntu. After that it is suggested to use GraphViz, but it was too slow and graphics not nice. So i converted the output to a .gml format, and visualized it with another must-have companion – yEd. It’s java-based, it’s free, it can handle large graphs, and it has powerful arsenal of algorithms to get the desired layout. The graphs were obtained using the organic layout (check out the tool’s screenshot gallery on its website).
Now again about code and the business. One comes from a local project and the other from registration and billing system written using Jan Rain’s OpenID Library. Guess which is which.
No Comments