<?xml version="1.0" encoding="UTF-8"?>
<org.eclipse.epf.uma:ContentDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.epf.uma="http://www.eclipse.org/epf/uma/1.0.3/uma.ecore" epf:version="1.0.0" xmi:id="_71hDkMPgEdmbOvqy4O0adg" name="iteration_plan,_0auiMMlgEdmt3adZL5Dmdw" guid="_71hDkMPgEdmbOvqy4O0adg" changeDate="2006-11-01T11:17:34.612-0800">
  <mainDescription>&lt;h3&gt;
    Introduction
&lt;/h3&gt;
&lt;p&gt;
    The goal with iteration planning is to establish a few high-level objectives for what to accomplish during the
    iteration, produce a sufficiently detailed plan outlining who needs to do what to accomplish those objectives, and
    define how to assess that you accomplished what you set out to accomplish.
&lt;/p&gt;
&lt;p&gt;
    Iteration planning is ideally done with the entire team in a meeting, typically lasting a few hours, at the beginning
    of an iteration. This ensures that the entire team understands what needs to be done, and they become committed to the
    success of the team. In some cases, it is preferred to have a smaller subset of people, such as the Project Manager, an
    Architect and an Analyst to meet in advance to prep the meeting with a draft iteration plan.
&lt;/p&gt;
&lt;h3&gt;
    Define High-Level Objectives
&lt;/h3&gt;
&lt;p&gt;
    A key aspect of an iteration is to focus the team on a short term deliverable of measurable value. Document 1-5
    high-level objectives to make sure that you don't lose focus on what to accomplish during the iteration. Typically, the
    project plan should outline one or several objectives for each iteration, and those objectives are used as a starting
    point. If you need to further detail or clarify the objectives as you plan your iteration, do so.
&lt;/p&gt;
&lt;p&gt;
    The objectives are usually based on the following factors:
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;
        &lt;strong&gt;Critical risks not yet mitigated:&lt;/strong&gt; Iteration goals often include driving down the most critical
        risks.
    &lt;/li&gt;
    &lt;li&gt;
        &lt;strong&gt;The time allocated to the iteration:&lt;/strong&gt; Iterations are usually timeboxed, so the Project Manager must
        ensure that the goals for the iteration are realistic relative to the time and the resources allocated to the
        iteration.
    &lt;/li&gt;
    &lt;li&gt;
        &lt;strong&gt;The highest priority features:&lt;/strong&gt; requirements are prioritized to ensure that the critical features
        of the application will be developed and tested early on.
    &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
    Produce an Iteration Plan
&lt;/h3&gt;
&lt;p&gt;
    There is an Iteration Plan per iteration that should outline who will implement which Work Item in how long a time.
    Since iterations are time-boxed, we need to understand how big our ‘box” is by assessing how many hours of actual work
    can be taken on. Let’s assume that you have 6 team members, and you have 15 working days in your iteration, and you on
    average can do 5 actual hours of work per person and day. This will give you 6x15x5h = 450 hours of actual work. Note
    that the average team member only performs 4-6 hours of actual project work per day, with the rest being consumed by
    e-mails, meetings, and other overhead activities not directly related to the project.
&lt;/p&gt;
&lt;p&gt;
    The team should then revisit and update priorities for all the high-priority items in the Work Items List, to make sure
    that an important Work Item is not missed that would otherwise fall just below the list of what can be taken on in this
    iteration.
&lt;/p&gt;
&lt;p&gt;
    Pick the top-priority Work Item and see if it matches the objectives of the iteration. If it does, assess whether the
    Work Item is too big to take on within an iteration. If it is too big, break it down into smaller Work Items. Once the
    Work Item has been decomposed, the team determines whether to take on one or several child Work Items.
&lt;/p&gt;
&lt;p&gt;
    &lt;em&gt;Example: The team would like to take on Work Item “Develop Use Case A”, but it would take roughly 300 hours to
    develop, so they feel that it is only necessary to do a subset of the use case to achieve their iteration objectives,
    allowing them to take on other high-priority Work Items. They divide the Work Item into 5 smaller work items
    representing different scenarios of use case A. The team decides to take on one out of the 5 identified scenarios in
    this iteration.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
    When a team has decided to take on a Work Item, it will assign the work to one or several team members. Ideally, this
    is done by team members signing up to do the work, since this makes people motivated and committed to doing the job,
    but based on culture, you may instead have the project manager assign the work.
&lt;/p&gt;
&lt;p&gt;
    The next step is for team member(s) to assess how many actual hours or days it will take to do the work. Ideally, you
    want to have each work assignment to be no more than 2 days of work. If the Work Item is too big, consider breaking it
    down into smaller Work Items.
&lt;/p&gt;
&lt;p&gt;
    The team sums up the actual estimate for each Work Item they have committed to, and checks if they can commit to any
    more work.
&lt;/p&gt;
&lt;p&gt;
    &lt;em&gt;Example: Jack signed up to develop the chosen scenario for use case A. He thinks that it would take 50 hours, so he
    decided to develop the work into a set of tasks, and he asks other team members to help out with various subtasks:&lt;/em&gt;
&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;
        &lt;em&gt;Detail the requirements (Jack) —5 hours&lt;/em&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;em&gt;Design the scenario (Jack, Ann, and David) —5 hours&lt;/em&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;em&gt;Implement and test the dB changes (Ann)—12 hours&lt;/em&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;em&gt;Implement and test the server portion (David)—16 hours&lt;/em&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;em&gt;Implement and test the client portion (Jack)—12 hours&lt;/em&gt;
    &lt;/li&gt;
    &lt;li&gt;
        &lt;em&gt;Total—50 hours&lt;/em&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
    As Work Items are decomposed into smaller tasks, estimates can typically be improved. You also better come to
    understand what is involved, and whether other team member may be better suited to take on a subset of the task
&lt;/p&gt;
&lt;p&gt;
    The team now determines whether they are willing to take on another Work Item by comparing actual hours signed up for
    to the actual hours available. In this case, the team has only signed up for 50 hours so far, and hence have another
    400 hours available
&lt;/p&gt;
&lt;h3&gt;
    Define Evaluation Criteria
&lt;/h3&gt;
&lt;p&gt;
    It is critical that it is clear to all team members and other stakeholders how you will measure success at the end of
    the iteration. Obvious success criteria should be that you can test the functionality implemented, and that no or few
    defects are detected. Having too many defects makes it impossible to use the functionality, and it will prevent
    meaningful feedback. Test objectives and test cases need to be clearly outlined.
&lt;/p&gt;
&lt;p&gt;
    There may be other success criteria, such as that you demo the capabilities to a certain set of stakeholders with
    favorable review comments, or that you can successfully demonstrate or make available a tech preview at a conference.
&lt;/p&gt;</mainDescription>
</org.eclipse.epf.uma:ContentDescription>
