Code Organization Guidelines for Large Code Bases

Posted by & filed under Architecture, Dependency Management.

In an excellent on-line presentation Juergen Hoeller gives rationale and guidelines for controlling the structure of large, evolving code-bases. Juergen is the chief architect of the Spring framework, which as I have previously pointed out is structurally almost perfect. This didn’t happen by accident. If you don’t have time go though the 88 minute presentation,… Read more »

Structure101 IntelliJ Plug-in

Posted by & filed under Architecture, Structure101.

This has just been made available for download. It displays architecture diagrams within the IDE, and warns if any code changes are inconsistent with the target architecture. It works more or less like the structure101 Eclipse plug-in except that for now it checks for architecture violations on demand rather than automatically when you do a… Read more »

Structure101 Supports Java 1.5

Posted by & filed under Architecture, Structure101.

We have overhauled the byte-code parser to now pick up Java 1.5 constructs (e.g. generics and annotations), plus it is much faster. You can download the first build that includes the new parser here. If you currently use the structure101 IDE plug-in you may find that you get bogus warnings on "new" architectural violation when… Read more »

Architecture warnings in Eclipse

Posted by & filed under Architecture, Structure101.

The new version of structure101 lets you define concise, layered architecture diagrams and publish them so that the whole team sees them in Eclipse and gets warnings if they make code changes that are out of whack with the architecture. Here’s an example architecture diagram: It defines layering (cells should only depend on lower cells)… Read more »

Jar Hell

Posted by & filed under Architecture, Dependency Management, Structure101.

A lot of jars can contribute to (and mask) the logical package/class structure. Here’s how to make sense of the whole mess using Structure101.1. View your project in the Logical hierarchy2. Tag the classes or packages you’re interested in3.  Switch to the Jar Hierarchy and see which jars contain tagged items. Do this in reverse… Read more »

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 »