Concept: Elaboration Phase
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 allows 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 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.

The following table summarizes the Elaboration phase objectives and what activities address each objective:

Elaboration phase objectives and activities

Phase objectives

Activities that address objectives

Get a more detailed understanding of the requirements Manage Requirements
Design, implement, validate, and baseline an architecture

Define the Architecture
Develop Solution (for requirement)(within context)
Validate Build

Mitigate essential risks, and produce accurate schedule and cost estimates Manage Iteration

Key considerations

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

Typically, on the first iteration, you should 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.

On the following 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 potential hidden risks arise as early as possible. [KRO03]