Why Architecture Conformance Matters for Software Systems
Software Engineering Institute
As part of your open systems approach you have invested in a software architecture that will provide extensibility to deliver future growth in capability that is affordable and timely. What happens if developers implement code that does diverge from your architecture? Nonconformance—misalignment between implementation and architecture—puts extensibility, openness, and other quality goals at risk. Conformance does not mean that the architecture is fixed—when the code doesn’t conform to the architecture, we need to ask why. This can be a signal to consider changing the architecture. You can take practical steps today to ensure that all stakeholders have a common understanding of how nonconformance affects program outcomes, and you can apply continuous conformance practices that keep the architecture and code aligned.
We will start by framing the conformance problem and outlining some of the limitations in today's technology for detecting nonconformance.
We will focus on two steps to improve current practices for achieving architecture and code conformance:
- Add architecture design as an explicit implementation conformance target. Use established architecture design concepts, such as patterns and reference architectures to express the intended design.
- Check implementation for conformance to that intended design.
We will discuss steps you can take today, including:
- Approach nonconformance identification, monitoring, and remediation in an incremental and iterative manner.
- Customize code analysis tools with project-specific rules that reflect misalignment with your intended design.
We will conclude with a short discussion of ongoing research to generalize and automate conformance checking.