Introduction
Most activities during a typical iteration in Elaboration phase will happen in parallel. Essentially, the main
objectives for Elaboration are related to better understanding the requirements, creating and baselining the
architecture for the system and mitigating top priority risks.
Below you find the activities performed in a typical iteration during Elaboration phase.
Manage Iteration
The Project Manager launches the iteration allocating work items to team members (some
project teams will prefer to have members volunteering to perform work). The Project Manager
collaborates with the team to break down the work items into development tasks to be performed in that iteration. This
provides a more accurate estimate of time to be spent on what can be realistically achieved.
As the iteration runs, the Project Manager
performs monitoring and control of the project by regularly checking the status of work
done, the work to be done next and blocking issues (in some projects, this checking is done through daily meetings).
That gives a more precise understanding of how the work in an iteration is moving ahead. As needed,
the team makes corrections to achieve what was planned. The overall idea is that risks and issues are identified
and managed throughout the iteration and everyone knows the project status.
Manage Requirements
During Elaboration, requirements can still be captured and outlined as customer needs arise – the prioritization of
requirements will say when new requirements are going to be implemented. High risk – or architecturally significant –
requirements are detailed to the extent needed to be used as input to architecture and development activities in the
current iteration, plus planning for the next iteration.
Note: The emphasis on finding, outlining and detailing requirements will vary from phase to phase. Iterations in
Inception and early Elaboration tend to focus more on identifying and outlining requirements in general, and detailing
high priority and architectural significant requirements. During iterations in late Elaboration and early Construction,
the remaining requirements are usually outlined and detailed.
Define Architecture
The main objective for the Architect during Elaboration is to propose an Architecture that
addresses the requirements with high architectural risks, thus providing a solid – yet resilient – foundation on which
the system functionalities are built.
The Architect analyzes the architectural constraints, identifies available assets to
build the system, defines how the system will be structured, and identifies the initial abstractions and mechanisms
that have to be provided by the Architecture.
Through all the iterations, the Architect:
-
identifies commonalities between different requirements and in order to leverage reuse
-
defines strategies for achieving quality requirements
-
captures and communicates architectural decisions
Develop Solution (for requirement) (within context)
As the requirements planned for the iteration are broken down into development tasks, these are assigned by the Project Manager to Developers (some projects
will prefer to have team members signing up for development tasks themselves).
The solution to be developed is for a particular requirement within a context, which reflects the idea of breaking down
requirements into development tasks, as seen in the activity Develop Solution.
As an example, a particular use-case scenario within the context of database access could be assigned to a Developer, whereas the same scenario within the user interface and business logic
contexts could be assigned to a different Developer. In this
example, more than one Developer is working on a particular piece of functionality to be delivered in a
particular iteration. As they develop the requirement within the context they were assigned to, they perform tests and integrate their work in order to create builds.
This activity is instantiated multiple times, once for each development task planned for that iteration.
Validate Build
The intent is to validate that the high priority requirements implemented reflect a robust Architecture on top of which the remaining requirements can be implemented. As Developers develop the solution for the requirements in a given iteration, the
integrated source code is unit-tested. Then, a separate Tester conducts system-level
testing in parallel with development to make sure the solution – that is continuously being integrated – matches what
is specified in the requirements. Test Cases describe
which requirements are being tested in that iteration. Then, the Tester defines what
techniques to use, what the data input is, what test suites to create. As tests are performed, eventual defects found are reported
and make part of the Work Items List, so they can be prioritized and assigned to team members
accordingly.
Ongoing Tasks
This activity includes tasks that happen throughout the iteration in an ongoing basis and are not necessarily part of a
plan. For example, at any time, Any Role in the project
team can issue a change request, either because there are requests for enhancements or defects are
found. These change requests are part of the Work Items List and
get to be prioritized and assigned to team members – anyone can be assigned to make changes in order to develop
enhancements or fix defects.
Assess and Plan Next Iteration
Towards the end of the iteration, Project Manager
conducts the iteration assessment and plan for next iteration. This activity is performed in conjunction with Analyst and Stakeholders and the
team.
As in any other iteration assessment, demonstration of implemented functionalities planned for that iteration is the
key success criteria. During iteration assessments in Elaboration though, the phase objectives should be kept in mind.
As Elaboration iterations are performed, an executable architecture evolves, being baselined at the end of the phase.
In addition, requirements are better understood and detailed. Essential risks – including the architectural ones – have
been mitigated. This all helps Project Manager to
produce more accurate estimates for project schedule and cost.
|