The architecture of software systems directly influences crucial quality attributes and therefore should be considered whenever important decisions regarding their evolution must be taken. However, up-to-date descriptions that correctly reflect the system’s architecture rarely exist. Architecture descriptions are usually elaborated at the beginning of a software project. After the initial version of the system has been constructed, the system tends to evolve independently from its architecture description. Changes to the system are rarely documented properly and originally imposed rules are gradually violated.
Within this project, to help architects manage this situation, we have developed ARAMIS, – the Architecture Analysis and Monitoring Infrastructure. Its main goal is to support the understanding and architectural evaluation and evolution of software systems. With the advent of new architectural styles (component-based architectures, micro-services, etc.) there is a clear shift from mere structural towards behavior-based complexity. Consequently, ARAMIS focuses on the analysis and monitoring of the run-time of complex systems, pursuing to answer questions such as: “how do the architecture units interact with each other upon performing a certain scenario (e.g., running a test-case, interacting with the graphical user interface, etc.)?”, “which are the architecture units that need to be redesigned?”, “which are the various hot spots of the system (e.g., in terms of received calls, outgoing calls, caused violations, etc.)?”, “are there violations against the architecture description?”, etc.
To achieve this, ARAMIS validates the communication inside a software system during the execution of some scenarios of interest. The resulted calls are mapped on architecture units and checked against predefined architecture rules. The analysis results can then be holistically visualized and/or further explored, by creating and applying behavior-centered views, viewpoints and perspectives. Furthermore, the architect can simulate changes to the prescriptive architecture description, observe their impact and compare various evolution strategies to make trade-offs explicit and support the choice of the most suitable ones.