Wednesday, 3 February 2010

Properties of a Testable Architecture

When producing a recent presentation for SAVARA, I found a useful way to characterise SAVARA was in terms of the following set of properties:

• Accurancy: Each stage of the Software Development Lifecycle is validated to ensure it conforms to artifacts in preceding stages, to check that each stage accurately reflects the original business requirements. This ensures misalignment to the business requirements is detected at the earliest possible stage.

• Efficiency: Having a strong and detailed contract between each stage of the Software Development Lifecycle, as well as between individual components (i.e. services) within the architecture, means there is less room for ambiguity, making the development process more efficient (especially when dealing with a large and geographically distributed development team).

• Quality: Having the continual testing and validation at each stage improves the level of quality, with in some cases the tests being derived from the requirements (i.e. scenarios), removing the need to manually create tests based on a potentially incorrect interpretation of the business requirements. This ensures defects are detected at the earliest possible stage.

• Fidelity: Ensuring that the executing solution continues to behave according to the architecture and original business requirements, even where some of the components (i.e. services) are obtained from third parties. This provides a form of Business Activity Monitoring driven from the architectural specification.