Architecture Essentials
Create a firm foundation for the development of a robust, high-quality system
Use this practice to actively address the technical risks facing the project and establish an appropriate architecture.
This practice allows teams to:
-
establish a firm foundation for the incremental development of the solution,
-
effectively address the technical risks facing the project,
-
share the major decisions about the structure and organization of the implemented system,
-
verify that the system exhibits the key characteristics expected by the customer,
-
objectively prove that the selected approach is fit for purpose.
Things to Produce
This practice involves the production of a number of implementation and test related artifacts:
-
The architecture is documented by preparing an architecture description, defining a set of architectural test cases and a set of architectural views of the design model.
-
The architecture is verified by testing the builds of the executable system produced. This starts by proving the architecture against a build of a ‘skinny system’ and continuously verifying it by repeatedly testing the functional releases of the system.
.gif)
Key Competencies
This practice requires the team to be skilled in shaping systems, developing architectural prototypes and proving the architecture once it is in place.
This requires the following competencies to be in place:
.gif)
This practice requires the team to define, implement and test the architecture. Co-operation from individuals with the Analyst, Customer Representative and Coach competencies will be required to do this effectively but no specific competency level is required in these areas.
Things to do
The practice starts by identifying and clarifying those requirements that are of architectural significance. This establishes the goals of the architecture.
.gif)
The practice then determines the architecture to be implemented and specifies the set of tests to be used to verify and prove the implementation.
The architecture is then evolved to produce a skinny system that is tested to prove that it meets the architectural requirements. The team is then coached in the use of the architecture to ensure that all software produced benefits from the foundation it provides.
The architecture is then continually evolved by re-factoring the architecture and evolving the architectural implementation in response to the test results and emerging requirements. All system builds are subjected to the architectural tests to ensure the continued validity of the architectural implementation.


