Software architecture is the primary carrier of a software system's quality attributes such as performance, modifiability or reliability. An implementation is said to conform to its architecture if it adheres to the design principles and constraints prescribed by that architecture. Conformance is required for the implemented system to exhibit the desired quality attributes. Unfortunately, there is often a sizeable gap between the abstractions used to reason about an architecture and the code written to realize the architecture, and implementations can diverge from the architecture.
Divergence of an implementation from the intended architecture may be due to (1) the lack of suitable architectural design documentation (2) a tendency of programmers to "over design" with little consideration for quality-attribute requirements, or (3) just the natural evolution of the system. Over time this problem tends to become worse and reliance on the originally specified software architecture decreases, preventing organizations from reasoning architecturally about the consequences of new features or other architectural changes.
We are investigating technologies and practices that improve an organization's ability to ensure that the implementation is in conformance with its architecture. Basically, this means that the implementation should be divided into the prescribed elements, these elements should interact with each other in the prescribed fashion, and each element should fulfill its responsibilities to the others as dictated by the architecture. We see architecture enforcement as a systematic process in which the developers periodically align the architectural design documentation and the code, to prevent mismatches from happening and/or to repair existing mismatches. Tool support is crucial to make this process cost effective.
Candidate approaches that can help to enforce architectural design decisions include
Areas of work at the SEI that complements our conformance research are
The SEI is looking for collaborating organizations to investigate what it means for an organization to have architecture conformance and how this competence can be evaluated. For details, contact us using the link in the For more information box at the bottom of this page.