For a domain architecture it is critical which microservices exist and what the communication relationships between the microservices look like. This is true in other systems as well where the relationships between the components are very important. When domain-based components are mapped on modules, classes, Java packages, JAR files, or DLLs, specific tools can determine the relationships between the components and control the adherence to certain rules. This is achieved by static code analysis.
Tools for Architecture Management
If an architecture is not properly managed, then unintended dependencies will quickly creep in. The architecture will get more and more complex and hard to understand. Only with the help of architecture management tools can developers and architects keep track of the system. Within a development environment developers view only individual classes. The dependencies between classes can only be found in the source code and are not readily discernible.
Figure 7.2 depicts the analysis of a Java project by the architecture management tool Structure 101. The image shows classes and Java packages, which contain classes. A levelized structure map (LSM) presents an overview of them. Classes and packages that are higher up the LSM use classes and packages that are depicted lower down the LSM. To simplify the diagram, these relationships are not indicated.