|Excerpt from the System Life Cycle Plan|
The Elaboration phase is the second part of the Design stage of the System Life Cycle, and is the most critical of the four phases because its end marks the decision to transition to code production. While change is possible throughout the System Life Cycle, at the end of the Elaboration phase, the requirements, architecture, plans and risk mitigation must be sufficiently mature that entering Development represents an acceptable choice, and hence resistance to major shifts in direction becomes commensurately higher during Construction.
The principal goals of the Elaboration phase are:
- Baselining the use cases and performance stress cases,
- Baselining the system and subsystem requirements,
- Baselining the architecture as quickly as possible, recognizing that significant prototyping activities are necessary to mitigate risk,
- Demonstrating that the baseline architecture will support the use cases and implement the baseline requirements,
- Defining all of the major risks and capturing them in the Risk Register,
- Defining plans and procedures for integration and verification,
- Defining a plan for the Construction phase.
Essential activities during the Elaboration phase include:
- Building an executable architecture prototype that is end-to-end across all relevant subsystems, and that integrates all core technologies,
- Producing production quality code. While the development of throwaway, exploratory prototypes is not excluded, and an evolutionary development approach is encouraged, the goal of Elaboration remains usable code for the release,
- Establishing an understanding of the use cases and defining a complete set of requirements in much greater detail than occurred during Inception,
- Elaborating the processes to be used during the Construction phase, including writing Integration and Verification Plans and a candidate set of Integration and Verification Procedures,
- Finalizing technology selections to implement the baseline architecture, including documented trade studies and analysis.
While the Product Manager has responsibility for driving the key goals of Elaboration, code development activities are managed by the System Development Manager. As for Inception, the Senior System Architect maintains responsibility for the architecture, and the Chief System Engineer manages the system engineering processes of requirements definition, change and risk management. These roles are assisted by Design Experts engaged for their technical abilities in critical areas, and the development teams led by their respective Senior Developers. The QA Manager provides process and code audits, and reviews all integration, test and verification documents.