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 »

Gartner 2006 Technology Hype Cycle

Posted by & filed under Uncategorized.

The Gartner “Emerging Technologies Hype Cycle” is something worth giving a good once-over every year. The premise is that most technologies that eventually get traction will first go through a “Peak of Inflated Expectations” with lots of publicity and a lot of unsuccessful applications by the early adopters. This is followed by the “Trough of… Read more »

Struts more twisted than Spring

Posted by & filed under Dependency Management.

The structure of Struts is characterized by a nasty dependency tangle that starts at the class-level and percolates up through the package and design-levels. Following my blog on Spring’s “almost perfect” structure, I thought I’d take a look at another open source project in a similar space to perhaps shed a light on common structural… 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 »

More on M.C. Escher and software projects

Posted by & filed under Emergent Design.

This is for Paddy and Paul who are having trouble with the principle of design “emergence” and didn’t really get my blog on Eschers “Hands”.¬† Luckily Escher also predicted other software design processes. Guys, do either of these feel more like your projects? ūüėČ (Apologies to the late Maurits Conelis – I cropped the image… Read more »