Marty Andrews

artful code

Sunday, August 27, 2006

Visualizing complex software with yFiles

I've spent the last 15 months working on a project that was particularly complex. One of the techniques I used in recent times to try to understand and manage that complexity was to use yFiles to draw dagrams that visually represent the system.

The first diagram I created was one that described the dependencies between modules in our system. We've been using Ivy to manage our module dependencies, so I wrote a script to parse the Ivy files and generate a graphml file that Ivy knows how to parse. Here's the result:

This diagram shows over 100 inter-dependant components that developers work with every day. The Ant build file controls every one of them in a single build. Its definitely complex. I won't go into why it should or shouldn't be this way right now. The important things to nore is that it is that way, and its extremely hard to understand the impacts of a change to any single component. Visualizing the dependencies just helps a bit.

The second diagram I created was one that I drew by hand. It shows all of the runtime components in the system and how they depend on each other whilst they are running. This diagram shows about 30 portlets, 60 EJBs, 15 JMS queues and a few 3rd party legacy systems.

This again was something that was very hard for most of the development team to visualise in their heads without some help. The nice thing about drawing it in yFiles is that it will lay out the diagram so that all of the components are clearly visible.

Update: I was contacted by someone from yWorks to ask if they could use these graphsas examples on their site. I've created some sanitised versions of the graphs for them. So you can download dependencies.graphml or architecture.graphml if you want to see more detail.

Sunday, August 6, 2006

Missing team selection

Last year I managed to make selection for the Victorian 8-Ball team in the state titles. I managed to make the final selection squad of 20 again this year, but didn't qualify for team selection. The team is picked over two days of play, with the bottom four players cut after the first day. Unfortunately, that included me after my worst performance ever in a final squad playoff day. I'm dissapointed, but strangely less so than I have been in the past when I've just missed out. Still, I'll be back next year to give it another go.