Architecture Conformance Checking
Software Architecture is the fundamental properties of a system in its environment embodied in its elements, relationships, and in the principles of its design and evolution. It is a key tool for the software industry because it improves communication between stakeholders, facilitates early design decisions, promotes transferable abstractions of a system and can be used as the basis for system implementation.
One of the main issues in software architecture is the erosion that occurs when the implemented architecture of a system diverges from its intended architecture. According to Balasubramaniam at al. such degradation may arise due to several factors, including: i) unawareness by software developers; ii) possibly conflicting requirements that are unforeseen in the early stages; iii) technical difficulties that arise during implementation; and iv) the pressure of deadlines that are not uncommon in software development.
Some consequences of architecture erosion include failure to meet functional or quality requirements, brittle systems, high maintenance costs and ultimately rapid software aging and obsolescence. Architecture erosion is a well-recognized problem and a number of approaches have been proposed to prevent, minimize or repair erosion, mainly based on the concept of architecture conformance.
Architecture Conformance Checking (ACC) is one of the main activities in software quality control. ACC goals is to reveal the differences between the intended architecture and its real implementation. It reveals the relations and constraints foreseen by the intended architecture that were violated by the system’s implementation.