A key aspect of repository projects is that they can contain historical information in the form of snapshots of the code structure at different points in time. This opens the door to the version-related capability of structural differencing.
Open a repository project and choose What's New? from the Project menu (or the equivalent button on the toolbar). In the displayed dialog, choose an older version from the list and select OK. Structure101 Studio then performs an in-depth structural comparison between the two versions and color-codes all items and dependencies that have been added. This allows you to quickly focus in on significant change and e.g. identify any areas where the structure is degrading.
For example, comparing maven 2.0.4 to maven 2.0, we can quickly see that a new high-level dependency has been added from org.codehaus to org.apache(.maven).
This has led to a degradation of the structure: these 2 items are now involved in a tangle where they were not previously. The weight of the new dependency is only 1, so it seems reasonable to conclude that this is a rogue (accidental?) dependency that may merit undoing. By selecting the dependency in the graph viewer, we can get an exact breakout of the origin of the dependency.
Using the "Design changes" notable in the composition perspective, we can also quickly identify that other new high-level dependencies have been added and review as necessary.
Tips:
- By definition, structural differencing is only available for projects that have a version history. However, you can enable this feature for a local project by associating it with a repository project.
- To avoid unwanted dependencies proactively, define the layering in an architecture diagram and enforce using companion products.
- To review new dependencies reactively, use the web application report and feed capabilities to be notified of significant change. This way, you only have to fire up Structure101 Studio to analyze difficult cases.