Concept: Elaboration Phase
This is the second of four phases in the project lifecycle, when architecturally significant risks are addressed.
Main Description

The purpose of this phase is to establish the baseline of the architecture of the system and provide a stable basis for the bulk of the development effort in the next phase.

There are objectives for the Elaboration phase that help you address risks associated with requirements, architecture, costs, and schedule [KRO03]:

  • Get a more detailed understanding of the requirements. Having a good understanding of the majority of requirements enables you to create a more detailed plan and to get buy-in from stakeholders. Be sure to gain an in-depth understanding of the most critical requirements to be validated by the architecture.

  • Design, implement, validate, and establish the baseline for the architecture. Design, implement, and test a skeleton structure of the system. Although the functionality is not complete yet, most of the interfaces between the building blocks are implemented and tested. This is referred to as an executable architecture.

  • Mitigate essential risks, and produce accurate schedule and cost estimates. Many technical risks are addressed as a result of detailing the requirements and of designing, implementing, and testing the architecture. Refine and detail the high-level project plan.

Key considerations

The number of iterations in the Elaboration phase is dependent on, but not limited to, factors such as green-field development compared to maintenance cycle, unprecedented system compared to well-known technology and architecture, and so on.

Typically, on the first iteration, it is better to design, implement, and test a small number of critical scenarios to identify what type of architecture and architectural mechanisms you need, so you can mitigate the most crucial risks. You also detail high-risk requirements that have to be addressed early in the project. You test enough to validate that the architectural risks are mitigated.

During the subsequent iterations, you fix whatever was not right from the previous iteration. You design, implement, and test the remaining architecturally significant scenarios, ensuring that you check all major areas of the system (architectural coverage), so that potential risks are identified as early as possible. [KRO03]


More Information