2. Quality Architecture in the agile context
“Going Agile” is not just about organizing teams and learning Scrumish frameworks. Being Agile is about adopting to a specific mindset, enabling us to follow the constant and rapid flow of changes. Especially important tools supporting this mindset are continuous integration and continuous deployment. To be able to integrate with confidence and deploy with managed risks, having a quality focused approach is essential.
A quality promoting approach consists of several layers which, when combined, make up the overall quality potential of the team and products thereof.
Building this potential requires making quality a first-class citizen in the agile team. A first, crucial, step to achieve this is to apply quality-driven architecture. Designing system architecture to promote quality improving activities. This includes, among other things, keeping these quality enhancing characteristics in mind;
- strict contracts with versioning, including an API-first design approach, providing test- and consumer application developers the ability to start early, identifying requirement deviations before implementing errors.
- mockability, providing the possibility to disconnect dependencies. Maximizing the ability to work iteratively and understand and safe guard contracts and other integration points.
- possibility to run in isolated environments. Mocking dependencies when possible, including emulators when not. The ability to create complete test fixtures providing everything needed for system testing is powerful.
- inspectability, providing the possibility to monitor payload and other traffic between components.
- injectability, providing the possibility to act on a system between components.
By applying these simple yet powerful abilities we will facilitate quality assurance efforts downstream, from an architectural perspective.
Not all designs are easily decoupled and not all API contracts are straightforward. In those cases, access to reliable and complete static test data is crucial.
In the next article, we will touch upon how these downstream quality assurance efforts are carried out and why architecture is so important from a technical perspective.