Posted by & filed under Build.

An often overlooked extension to Structure101 is the “Headless” mode of operation. This lets you hook Structure101 into your nightly build so that it checks for things like newly introduced complexity or architectural rules being violated while you sleep. You specify what you want checked, and whether you want to break the build or just… Read more »

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

Architecture Diagrams in Structure101 are mapped to the physical code by patterns associated with each cell in the diagram. This enables the visual specification of rules that can then be applied to a specific version of your code so that Structure101 can overlay any violations on the diagram and let you discover the offending code… Read more »

Posted by & filed under Programming Languages.

“Go” is a new systems programming language created by Google. Syntax is based on C++, and it compiles (like greased lightning apparently) – even has a Printf()! But beyond trivial similarities it is a very different beast: Interfaces replace class inheritance, but unlike Java interfaces, no explicit reference to the interface is required – as… Read more »

Posted by & filed under Structure.

Herbert Simon’s parable of the watchmakers was constructed to convey his belief that complex systems will evolve from simple systems much more rapidly if there are stable intermediate forms present in that evolutionary process than if they are not present. Arthur Koestler built on this in his 1967 book “The Ghost in the Machine“, in… Read more »

Posted by & filed under Structure.

The parable of the two watchmakers was introduced by Nobel Prize winner Herbert Simon to describe the complex relationship of subsystems and their larger wholes. There once were two watchmakers, named Hora and Tempus, who made very fine watches. The phones in their workshops rang frequently and new customers were constantly calling them. However, Hora… Read more »

Posted by & filed under Structure101.

We just released our new generic jobbie, Structure101g. If you already know Structure101 for Java or Structure101 for C/C++, you probably already have a good idea of what Structure101g might be. This is for those (and there are many, oh so many) who do not. Graphviz is a wonderful tool that can be used to… Read more »

Posted by & filed under Complexity, Emergent Design.

My recent post on architectural erosion in the findbugs code-base was generally well received, but there were some skeptical voices. In a comment, Emeric questioned whether cyclic dependencies at the package level are anything more than a smell (if that). Itay Maman was a little more forthright, offering a little series of posts arguing that… Read more »

Posted by & filed under Complexity, Emergent Design.

My particular area of interest in software these days is the importance of levels of abstraction above the raw code. In Java, the most natural place for these to manifest themselves is through the package structure (though this is certainly not the only possibility). Recently I used Structure101 to do some analysis on the evolution… Read more »