Introduction
Iterations in Construction phase have a work breakdown structure (WBS) similar to iterations in the Elaboration phase,
with activities happening in parallel. There is a different emphasis on how activities address the phase
objectives, though. 
    The architecture is expected to be stable when this phase starts, allowing the remaining
    requirements to be implemented on top of it. Another advantage of validating the architecture and eliminating as many
    risks as possible during Elaboration is to provide more predictability in Construction, which allows the project manager to focus on team efficiency and cost reduction.
 
    Functionality is continuously implemented, tested, and integrated, resulting in builds
    that are more and more complete and stable. A beta or prerelease may be deployed to a sampling of the intended audience
    at the end of Construction. Delivery of the actual release is the main focus of the next phase.
 
    The activities performed in a typical iteration during Construction phase are described after the following
    introductions to each activity.
 
    Manage iteration
    This activity is performed throughout the project lifecycle. The goal of this activity is to identify risks and issues
    early enough to mitigate them, to establish the goals for the iteration, and to support the development team in
    reaching these goals.
 
    Similarly to other phases, the project manager (supported by the team) launches the iteration, allocates work, tracks
    status, and handles issues and risks. Although the high-priority and architecturally significant risks were mitigated
    during Elaboration, new risks may appear during Construction, such as not having the right amount of resources to
    obtain the desired degree of parallel development.
 
    The prioritization of work for a given iteration (existing change requests and possibly a few remaining requirements)
    takes place. project manager, stakeholders, and the remaining team members agree on what is supposed to be
    developed during that iteration.
 
    At the end of the iteration, the team performs an iteration assessment. The goal is to conduct a retrospective review
    of the iteration that is ending. As part of this assessment, the objectives for the Construction phase are expected to
    be demonstrated by the beta-quality release of the software, thus supporting the possibility of transitioning the
    software to its end users.
 
    Manage requirements
    This activity is repeated throughout the lifecycle. The goal of this activity is to understand and prioritize
    stakeholder needs and associated requirements for the system, as well as to capture these in a form that will support
    effective communication and collaboration between the stakeholders and the development team.
 
    During Inception, most requirements are captured. The high-risk requirements are detailed, implemented, and validated
    (through a working architecture) during Elaboration.
 
    During the Construction phase, requirements management demands less time from the analyst.
    There still may be low-risk requirements to be detailed or refined, but in a way that can be assigned to developers.
 
    Test cases describe which requirements are being tested in that iteration.
 
    Develop solution
    This activity is repeated multiple times, in parallel, for each development task planned for that iteration. The main
    goal of this activity is an executable system that provides the incremental quality and functionality for the specified
    requirements, within the specified context.
 
    The architecture  was proposed and a baseline established at the end of Elaboration. Critical requirements were
    expected to be implemented, tested, and integrated as part of the baseline architecture. As the remaining requirements
    are implemented during Construction, the Architect identifies commonalities among solutions being developed by the
    various developers and leverages reuse where possible. Some degree of refactoring of the architecture may be needed to
    accommodate putting common pieces together.
 
    A pattern similar to the Elaboration phase happens during Construction when it comes to breaking down requirements into
    development tasks and assigning each requirement within a context to a developer. Requirements at this stage are mostly
    of medium-to-low level of risk, but usually they represent the largest slice from the total amount of requirements to
    be implemented in a project. Thus, it is expected that this activity is repeated, or instantiated, multiple times (once
    per requirement within context), thus allowing parallel development. Continuous integration allows functionality to be added to the code base constantly,
    which helps the achievement of more and more complete builds
    of the software.
 
    Validate build
    This activity is repeated throughout the project lifecycle. The main goal of this activity is to validate the current
    increment of the system against the requirements allocated to it.
 
    Similarly to Elaboration, this activity happens in parallel with the develop solution activity. The intent is to validate that a stable beta release is
    achieved and that users can perform acceptance tests.
 
    Ongoing tasks
    Similarly to any other phase, any role on
    the team can submit change requests. The software being developed is achieving beta quality by this
    point; therefore, defects of high priority are generally addressed during Construction iterations and
    Transition iterations. Enhancement requests can be planned for either subsequent Transition iterations or a next
    release of the product.
  |