How do you ensure the cohesiveness of the architecture in a project developed with agility? Architecture does not just happen. Architecture is a highly valuable asset that requires permanent investment. That is why it must be allocated explicit attention during development. We help you practice this way of thinking.
Testing, pair programming and code reviewing are the proposed means to approach this problem. However, when testing is only concerned with the functional side of a system, it is unable to capture structural contracts. Pair programming and reviewing work well in the small, but they do not scale when you need to handle the millions of details entailed in modern systems. Another way of approaching structural problems is through standard analysis tools. These are fine tools, but when they are left to only check standard idioms, the specifics of your architecture remain unverified.
The architecture of the system is important and it deserves special attention because it is too easy for it to go wrong in the long run, and it is too expensive when that happens. We introduce a method of approaching this challenge on a daily basis by:
One challenging aspect is that of constructing custom analysis tools during development. This process requires a new kind of infrastructure and associated skills that enable you to craft such checkers fast and cheaply. However, this is a technical detail. The critical benefit comes from making architectural decisions explicit, and from the daily corrective actions.
We start with a kickoff workshop in which we approach the team and the system, and we introduce the process. This involves both technical and non-technical people.
We join the team and work through the technical issues. We help the team to distill and agree on rules. We help the team to encode these rules in automatic checkers that are run continuously against the system. We coach the team to make decisions and to steer the actions based on those rules.
To ensure the long lasting quality of the architecture, we assess the process and the status of the architecture at regular intervals of typically 6 months.