Spring 2’s architecture – A single dependency cycle slipped in

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

The Spring guys have let a single dependency cycle into their architecture. A very small flaw, but it’s a perfect example of why you need to check your code-base at different levels to keep it truly tangle-free. I did a quick analysis of the Spring Framework some time back and sure enough found their claims… Read more »

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 »

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 »

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 »

Too many dependencies to manage?

Posted by & filed under Dependency Management, Structure101.

Kirk Knoernschild (who has created an interesting utility called JarAnalyzer that identifies dependencies among jar files) questioned how it could be possible to manage all the dependencies at lower-than-jar (like package) levels – aren’t there just too many dependencies?  Nah… All dependencies, at any level, roll up from specific lines of code. And yes, if… Read more »