Continuous Architecture Evaluation.
Eric Bouwers, Arie van Deursen · 2012
Most software systems start out with a designed architecture which documents the important design decisions. These decisions include, but are not limited to, responsi-bilities of each of the main components and the way in which the components interact. Ideally, the implemented architecture of the system corresponds exactly with the de-sign, only those components which are described are implemented and all components interact through pre-defined communication channels. Unfortunately, in practice we often see that the original design is not reflected in the implementation. Common de-viations are more (or less) components, undefined dependencies between components and components implementing unexpected functionality. There are many reasons for these discrepancies to occur. For example, the choice for a technology can lead to an unwanted implementation because the chosen technol-ogy does not allow a particular construct. Deviation can also arise because of process-related issues, for example because new functionality is added to the system without taking into account the design. Lastly, it could simply be the case that there is an error in the designed architecture.