Software architecture refers to the fundamental structures of a software system, the discipline of creating such structures, and the documentation of these structures. These structures are needed to reason about the software system. Each structure comprises software elements, relations among them, and properties of both elements and relations, along with rationale for the introduction and configuration of each element1.
Architecture Analysis with Lattix
Architecture analysis tools from Lattix provide a powerful way to visualize, analyze, communicate and enforce the architecture of complex systems.
The core of the Lattix tools are based around the Dependency Structure Matrix (DSM) which represents the dependencies and relationships between modules in your software.
Creating the DSM is an automated three stage process which decomposes a complex system into its subsystems, identifies the visible portions of those subsystems and describes the dependencies between them. Decomposition of a system is a natural mental process that we use to manage complexity by subdividing that system into less complex subsystems such as breaking source code down into files and functions.
Further, when subsystems are chosen to represent clear abstractions, it becomes easier for programmers to comprehend and organize the information associated with those subsystems. Finally, keeping the dependencies between these subsystems well defined reduces the number of concerns that each programmer has to manage during development.
Once the DSM has been constructed then it can be interrogated either directly in its matrix form or through architectural diagrams to ask “what if…” questions relating to the positions of files and functions. Rules can then be created which can be used as part of an automated analysis process to determine if the check-in of new code causes architectural violations. More details…