Tracking complexity debt

Posted by & filed under Architecture, Complexity, Dependency Management, Emergent Design, Structure, Structure101.

Un-monitored, the complexity of a code-base increases with its size. Jboss and Struts are perfect examples. However monitoring complexity helps you keep complexity debt under control, or even down to zero. If you publish the last couple of years worth of releases of your project to a Structure101 repository, you’ll probably see something like this… Read more »

Manage complexity like debt

Posted by & filed under Complexity, Structure, Structure101.

Ben Hosking writes in Managing Complexity – The aim of Designing Code that: “The most important part of design is managing complexity“ I like the simplicity of that. What happens if you don’t manage complexity. Well, it starts to cost. Talking at OOPSLA 2004, Ward Cunningham (Mr. Wiki) compared complexity with debt: “Manage complexity like… Read more »

CAT-scan a code-base

Posted by & filed under Architecture, Complexity, Dependency Management, Emergent Design, Structure, Structure101.

Structure101 v2 goes beta today. With it you can walk through the code-base in slices from the class-level, to the package-level and up through the design levels, spotting tangles and seeing how far they have spread. This is a snag of the Slice perspective with the slice selector highlighted: You can now see dependency graphs… Read more »

“Tangles” rather than “Cycles”

Posted by & filed under Structure.

I’ve been asked recently why I talk about "tangles" rather than "cycles" in the context of cyclic dependencies. The reason is clear when you look at a graph that contains a "strongly connected component" (a tangle):   This graph contains a single tangle of 3 nodes, but many cycles. tiles – xmlDefinition – tiles is… Read more »

Spring’s Structure is “almost perfect”

Posted by & filed under Structure.

Keith Donald reports that Spring’s architecture contains not a single dependency cycle. I’ve looked at the structure of many open source projects and generally found them riddled with dependency tangles (junit is an exception – perhaps unsurprising given its small size). So I loaded Spring into structure101 ( for a closer look. And sure enough,… Read more »

Tangled, knot

Posted by & filed under Structure.

I attended an interesting talk on Knot Theory yesterday by Professor Tim Porter from the University of Wales. Dr. Michael Brennan Waterford Institute of Technology (WIT) got me interested in Knot Theory some time back – I keep thinking there is something in this field that can help with un-tangling software dependencies.  Well, either way,… Read more »

Refactoring Designs and Architectures

Posted by & filed under Structure.

I came across a thread in the refactoring group in which Mikael Freidlitz had tentatively asked the following: > I know that some would say that I’m way off since ‘The Code is the Design’ > and all, but I still insist that there has to be a way to apply > refactoring on design… Read more »

Tangles by Design

Posted by & filed under Structure, Visualization.

This one goes out to the listener in France that doubted my word that you can take tangle-free classes and create tangles by careless packaging. It prompted me to dig out a sequence of diagrams that nicely show how this happens. We start with a set of code items on the left (maybe classes) with… Read more »