Structural comparisons and tracking change

The ability to compare the current structure against a reference structure in the repository makes Structure101 very practical to use.

By highlighting any structural changes in the current build, Structure101 allows you to quickly focus on what really matters and drastically reduces the effort required to keep your project structure under control.

charts show how the over-complexity (XS) of Java architecture changes over time

Structure101 color-codes new dependencies in every viewer. You can quickly check if any of these are undesirable so that they can be backed out of the mainline before they become entrenched.

Structure101 web application includes information about all new and removed package dependencies and new and removed architecture violations. It also provides RSS feeds that can inform you about selected types of changes (e.g.  new architecture violations) so that you do not need to switch attention to the code-base structure unless and until it is required. Additionally, the web-application can show trends on the size, excess complexity (XS) and architectural violations over time.

Structure101 plugins can be configured to warn (or give an error) on new dependencies that violate the architecture. This helps programmers avoid making things worse, but without being swamped with warnings about prior violations. In fact, in avoiding new violations, developers will often need to refactor out existing violations.

Understand change

Controlling architecture can be a significant challenge.  You define an architecture in order to support your development, test, deployment, etc. processes.  You expect it to evolve somewhat, but it is essential that is is controlled. An uncontrolled architecture can become a tangled mess, with no clear home for specific functions, unexpected side-effects to changes and increasing integration and test time.

With Stucture101, you let your developers work unimpeded, but watch out for architectural changes as they emerge from the code-level changes.  The basic mechanism for this is structural comparison whereby you compare one version of the structure with another one that was previously published to a Structure101 repository.

Figure: When you compare 2 builds, Structure101 color-codes every item to indicate if it is totally new (like xs) or contains new structural elements (like util). Full screenshot

compare Java architectures for new and changed components

Figure: New dependencies are usually the most important architectural changes - Structure101 color-codes these so that you can decide if they are acceptable or need reversing. Full screenshot

compare Java architectures for new and changed dependencies at any level

Figure: So that you can quickly find important architectural changes, Structure101 lists all package-level structural changes in order of depth in the design hierarchy. Full screenshot