Phases and Iterations
A phase is the span of time between two major milestones of a
development process. Every well-managed project must pass
through four phases:
- Inception - establish the business case for the project.
- Elaboration - establish project plans and the architecture.
- Construction - evolve the architecture into a working
- Transition - deliver the system to the end user.
Within each phase there are a number
of iterations. An iteration cycle includes a number of activities
such as: requirements capture, analysis, design, implementation,
testing, refactoring, quality control, and risk assessment. Each
iteration cycle concludes with the release of a fully tested,
The deliverables presented at the
conclusion of a phase are compared against milestones objectives in a
formal review process. The milestone review provides an
opportunity to assess how well key goals have been met and
whether the project needs to be restructured before proceeding
with the next phase.
The journey through the four phases
(see diagram below) is a called a development cycle. It produces a new
generation of the software. Each phase in the
cycle consists of a number of
iterations through the develop process which is
illustrated in the
workflow graph. An iteration requires the orderly completion
of various activities and concludes with a
production-quality executable release.
The output from an
iteration constitutes a subset of the final product under
development. This means that the product evolves in incremental
steps from iteration to iteration to become the final system.
Each iteration addresses the concerns
of the nine workflow activities shown below. The emphasis on a
given workflow activity depends on the phase. For example, during
the inception phase the focus is on requirements capture, during
the elaboration phase the focus is on analysis and design, and
during the construction phase implementation is the central
activity while transition focuses on deployment.
During the inception phase we establish the business case for
the system and delimit the project's scope. The business case
includes success criteria, risk assessment, estimates of the
resources needed, and a phase plan showing a schedule of major
milestones. During inception, it is common to create an
executable prototype that serves as a proof of concept. At the
end of the inception phase, a review is held to examine the life
cycle objectives of the project and to decide whether or not to
proceed with full-scale development. Business modeling and
requirements / supplementary requirements capture are the main
The goals of the elaboration phase are to analyze the problem
domain, establish a sound architectural foundation, develop the
project plan, and eliminate the highest risk factors.
Architectural decisions must be made with an understanding of
the entire system. This implies the need to describe most of the
system requirements. To verify the architecture, you implement
a system that demonstrates the architectural choices and
executes significant use cases. At the end of the elaboration
phase, a review is held to examine the detailed system
objectives and scope, the choice of architecture, and the
resolution of major risks and to decide whether or not to
proceed with the construction phase.
During the construction phase, we iteratively and incrementally
develop a complete product that is ready to transition to the
customer. This means describing the remaining requirements
and acceptance criteria, fleshing out the design, and completing
the implementation and test of the software. At the end of the
construction phase, a review is held to decide if the software,
installation sites, and users are ready to go operational.
During the transition phase, we deploy the software to the
customer. Once the system has been delivered,
issues often arise that require additional development in order
to fine-adjust the system, correct undetected problems, or finish
some features that were postponed. This phase typically
starts with a beta release of the system which is then replaced
with the production system. At the end of the transition phase a
review is held to decide whether the life-cycle objectives of
the project have been met and to determine if another
development cycle should be started. This is also the time to
compile the list of lessons learned during the project to improve the
development process that will be applied to the next project.
Each iteration cycle concludes with a fully tested subset of the
final system - a mini-release.
At the completion of a development cycle we have a production
quality release - a new generation.
A software system is development in four phases and
involves nine overlapping disciplines/activities.
the end of each milestone phase a risk assessment takes place to
determine if development can proceed to the next phase.