Example: A Dependency Model for ANT
At Lattix we have successfully analyzed several large software systems. In this section, we show you how to create a dependency model for a widely used open source system – Ant. Because Ant is an open source system, it is an analysis that you can do for yourself. Ant is a one of the most popular build utility. It allows development teams to automate the build process for activities such as compiling, building jar files and unit testing.
The architecture of Ant has been specifically developed so that Ant tasks are components of the Ant infrastructure. This has permitted a large number of disparate developers to work in parallel to create the wide variety of things (tasks) that Ant can do. The clean separation between the infrastructure and tasks has also added to the robustness of Ant because bugs in the tasks have a minimal affect the rest of the system.
A Dependency Model was constructed for Ant Version 1.4.1. First the system decomposition of the Ant application was done. This was done by noting that a key design decision behind Ant’s architecture was to separate the Ant framework from Ant’s tasks. Tasks depend upon the framework but the framework does not depend on tasks. This allows tasks to be added and tested independently. It also reduces the risk to the entire application because of bugs that might be introduced in newly added or modified tasks.
Using Lattix LDM and knowledge of Ant we deduced the following conceptual architecture for Ant:

Figure: Conceptual Architecture for ANT Version 1.4.1
The Conceptual Architecture is a high level system decomposition along with high level dependencies to show the intended layering.

Figure: Dependency Model for ANT Version 1.4.1 with Rules for Layering
Notice that the lower triangular nature of the DSM instantly shows that the layering has been implemented successfully. However, the DSM also illustrates that the subsystems with the layers have been tightly coupled. It is possible to improve the coupling within the layers with additional refactoring as explained in Lattix white papers.

Figure: DSM for ANT Version 1.5.1 with Layering Violations
The DSM for ANT Version 1.5.1 illustrates that some architectural violations have crept into the implementation. Over time Architectural Violations continue to increase and the architecture tends to fray gradually. Given sufficient time code base for many of the systems becomes unmanageable prompting developers to request a complete "rewrite".