blob: 5d7eef45f620c30b726f08c367dbbd93295d03a8 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<org.eclipse.epf.uma:PracticeDescription xmi:version="2.0"
xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.epf.uma="http://www.eclipse.org/epf/uma/1.0.5/uma.ecore"
xmlns:rmc="http://www.ibm.com/rmc" rmc:version="7.5.0" xmlns:epf="http://www.eclipse.org/epf"
epf:version="1.5.0" xmi:id="-Yvy3AKQTjSqBPNxsWkizkQ"
name="iterative_development,_LR_g4J9WEdy3Nc4rvuj7bA" guid="-Yvy3AKQTjSqBPNxsWkizkQ"
changeDate="2008-10-13T10:52:55.551-0700" version="7.2.0">
<additionalInfo>&lt;h3>&#xD;
Additional Resources&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
For more information on the iterative development approach, see the following:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
Kruchten, P. &lt;em>From Waterfall to Iterative Development - A Challenging Transition for Project Managers&lt;/em>. The&#xD;
Rational Edge, 2000.&#xD;
&lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;blockquote dir=&quot;ltr&quot; style=&quot;MARGIN-RIGHT: 0px&quot;>&#xD;
&lt;p>&#xD;
Retrieved from &lt;a href=&quot;http://www-128.ibm.com/developerworks/rational/library/content/RationalEdge/dec00/FromWaterfalltoIterativeDevelopmentDec00.pdf&quot;>http://www-128.ibm.com/developerworks/rational/library/content/RationalEdge/dec00/FromWaterfalltoIterativeDevelopmentDec00.pdf&lt;/a>.&amp;nbsp;&amp;nbsp;(&lt;a href=&quot;http://www.adobe.com/products/acrobat/alternate.html&quot;>Get Adobe Reader&lt;/a>)&#xD;
&lt;/p>&#xD;
&lt;/blockquote>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
Royce, W. &lt;em>Software Project Management: A Unified Framework&lt;/em>. Addison Wesley. 1999.&lt;br />&#xD;
&lt;/li>&#xD;
&lt;/ul></additionalInfo>
<problem>&lt;h3>&#xD;
Why adopt this practice?&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
The iterative approach differs from the traditional software development models, which assume that software development&#xD;
proceeds from one phase to another in a sequential manner. For example, in traditional models one first completes the&#xD;
requirements specification, which is &quot;set in stone&quot;. When the requirements are fully completed, one proceeds to design,&#xD;
and then on to the next phase. Towards the later phases of the traditional cycle, disparate software components are&#xD;
integrated to produce the final product, and tested by quality engineers and users to remove bugs and validate&#xD;
functionality.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
The iterative approach is the single most significant improvement to the way we build software products in decades, and&#xD;
has significantly improved project success because the feedback cycle is built into the software development lifecycle.&#xD;
This is especially significant in the more complex applications that support more demanding stakeholders and more&#xD;
complex business processes.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Iterations are used to reduce the risk of software development projects, and to deliver high value functionality to the&#xD;
user early on in the lifecycle. You essentially divide up the project into subsets of functionality based on, for&#xD;
example, use cases or use case scenarios. At the end of each iteration, you demonstrate or deliver these pieces of&#xD;
functionality to stakeholders, so that they can use the features and provide feedback. This feedback can be&#xD;
incorporated into future iterations. The iterative model embraces change through a feedback loop, whereas non-iterative&#xD;
models seek to prevent changes, which in turn increases the risk that the developed system does not meet the&#xD;
stakeholders' needs.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
An iterative approach provides business value early on in the lifecycle, thus helping recoup the capital invested. It&#xD;
also allows stakeholders to provide feedback while the project is going on, and not at the end when you have spent all&#xD;
of the money and time allotted to the project.&#xD;
&lt;/p></problem>
<application>&lt;p>&#xD;
The best way to read this practice is to first familiarize yourself with its overall structure: what it is in it, and&#xD;
how it is organized.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Begin by making sure that the teams, including stakeholders, understand what the key concepts are, such as:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
&lt;a class=&quot;elementLink&quot;&#xD;
href=&quot;./../../../practice.mgmt.iterative_dev.base/guidances/concepts/iteration_lifecycle_B16552E2.html&quot;&#xD;
guid=&quot;_DI_tICNaEdyCq8v2ZO4QcA&quot;>Iteration Lifecycle&lt;/a>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;a class=&quot;elementLink&quot;&#xD;
href=&quot;./../../../practice.mgmt.iterative_dev.base/guidances/concepts/micro_increments_C8773066.html&quot;&#xD;
guid=&quot;_S80VwCNbEdyCq8v2ZO4QcA&quot;>Micro-Increments&lt;/a>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;a class=&quot;elementLink&quot;&#xD;
href=&quot;./../../../practice.mgmt.iterative_dev.base/guidances/concepts/retrospective_B003F386.html&quot;&#xD;
guid=&quot;_2PfbIA4QEdy2q5zsU8WDnA&quot;>Retrospective&lt;/a>&#xD;
&lt;/li>&#xD;
&lt;/ul>&lt;br />&#xD;
&lt;br />&#xD;
&lt;p>&#xD;
Next, understand how the various participants in a project collaborate on an iterative development approach.&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>&#xD;
The &lt;b>project manager&lt;/b> facilitates the planning of the project iterations, coordinates interactions with the&#xD;
stakeholders, and keeps the project team focused on meeting the project objectives.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;b>Stakeholders&lt;/b> help the project manager and the team on requirements prioritization in order to minimize&#xD;
project risks and maximize business value throughout the iterations. Their constant feedback also directs and&#xD;
improves the quality of the project outcome.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
The &lt;b>team&lt;/b> commits to completing the work within each iteration.&#xD;
&lt;/li>&#xD;
&lt;/ul>&lt;br />&#xD;
&lt;br />&#xD;
&lt;p>&#xD;
Understand how these groups collaborate when they perform the following tasks:&#xD;
&lt;/p>&#xD;
&lt;ol>&#xD;
&lt;li>&#xD;
&lt;a class=&quot;elementLink&quot; href=&quot;./../../../practice.mgmt.iterative_dev.base/tasks/plan_iteration_957C90DC.html&quot;&#xD;
guid=&quot;_0keUEMlgEdmt3adZL5Dmdw&quot;>Plan Iteration&lt;/a>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;a class=&quot;elementLink&quot; href=&quot;./../../../practice.mgmt.iterative_dev.base/tasks/manage_iteration_E4D93A64.html&quot;&#xD;
guid=&quot;_8S2aICbYEdqh1LYUOGRh2A&quot;>Manage Iteration&lt;/a>&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
&lt;a class=&quot;elementLink&quot; href=&quot;./../../../practice.mgmt.iterative_dev.base/tasks/assess_results_EC34D88D.html&quot;&#xD;
guid=&quot;_0l53cMlgEdmt3adZL5Dmdw&quot;>Assess Results&lt;/a>&#xD;
&lt;/li>&#xD;
&lt;/ol>&#xD;
&lt;p>&#xD;
Also, understand what work products are used as inputs to and outputs from these tasks, such as work items list, risk&#xD;
list and &lt;a class=&quot;elementLink&quot;&#xD;
href=&quot;./../../../practice.mgmt.iterative_dev.base/workproducts/iteration_plan_B46FED39.html&quot;&#xD;
guid=&quot;_0aQBEslgEdmt3adZL5Dmdw&quot;>Iteration Plan&lt;/a>.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Last, understand the various guidelines that explain how to plan, run, and assess iterations.&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
For details on how to adopt this practice, see &lt;a class=&quot;elementLink&quot;&#xD;
href=&quot;./../../../practice.mgmt.iterative_dev.base/guidances/roadmaps/how_to_adopt_85BF1B9B.html&quot;&#xD;
guid=&quot;_bpWt8OMPEdyM47cGD2jiaQ&quot;>How to Adopt the Iterative Development Practice&lt;/a>.&#xD;
&lt;/p></application>
</org.eclipse.epf.uma:PracticeDescription>