blob: 6b59982c08db23e40034e5d545945326bbaa04a2 [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="-CtyoBMfPzn2SCjU-fK3ehg"
name="continous_integration,_rJNiMB4rEd2bS8fFOQ7WWA" guid="-CtyoBMfPzn2SCjU-fK3ehg"
changeDate="2008-08-04T13:47:37.593-0700" version="7.5.0">
<mainDescription>&lt;h3> The essence of continuous integration &lt;/h3>&#xD;
&lt;p> The essence of continuous integration can be described by the following activities: &#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li> Developers make small changes to the latest integration-tested implementation &#xD;
in their workspaces, and they unit test them before making the changes available &#xD;
to the team. &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;ul>&#xD;
&lt;li> Change sets from all developers are integrated in an integration workspace &#xD;
and tested frequently (at least daily-- ideally any time a new change set &#xD;
is available). &lt;/li>&#xD;
&lt;/ul>&#xD;
&lt;p> The first activity ensures that changes are made to a configuration that is &#xD;
known to be good and tested before making the changes available. The second &#xD;
activity identifies integration issues early so that they can be corrected while &#xD;
the change is still fresh in the developer's mind. &lt;/p></mainDescription>
<additionalInfo>&lt;h3> Books and articles&lt;br />&#xD;
&lt;br />&#xD;
&lt;/h3>&#xD;
&lt;table width=&quot;100%&quot; summary=&quot;layout table&quot; border=&quot;0&quot;>&#xD;
&lt;tbody>&#xD;
&lt;tr>&#xD;
&#xD;
&lt;td colspan=&quot;2&quot;> Martin Fowler. &amp;quot;Continuous Integration,&amp;quot;&lt;i> &lt;/i> &#xD;
&lt;a href=&quot;http://www.martinfowler.com/articles/continuousIntegration.html&quot; target=&quot;_blank&quot;>www.martinfowler.com/articles/continuousIntegration.html&lt;/a> &#xD;
(2006).&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr>&#xD;
&lt;td width=&quot;10%&quot;>&#xD;
&lt;/td>&#xD;
&lt;td width=&quot;78%&quot; valign=&quot;top&quot; style=&quot;PADDING-BOTTOM: 10px&quot;> Seminal paper &#xD;
on continuous integration.&amp;nbsp;Great overview of&amp;nbsp;the benefits and &#xD;
practices. &lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr>&#xD;
&#xD;
&lt;td colspan=&quot;2&quot;> Paul&amp;nbsp;M. Duval with Steve Matyas and Andrew Glover. &#xD;
&lt;i>Continuous Integration: Improving Software Quality and Reducing Risk.&lt;/i> &#xD;
Addison-Wesley (2007). &lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;tr>&#xD;
&lt;td width=&quot;10%&quot;>&#xD;
&lt;/td>&#xD;
&lt;td style=&quot;PADDING-BOTTOM: 10px&quot; width=&quot;78%&quot;> Comprehensive guidance on &#xD;
the practice and subpractices of continuous integration (CI). Great overview &#xD;
of motivation and benefits of the practice. Detailed discussion of more &#xD;
than 40 CI-related subpractices, with examples of scripts and code segments. &#xD;
Appendix provides an overview of tools available to support the practice. &#xD;
&lt;/td>&#xD;
&lt;/tr>&#xD;
&lt;/tbody>&#xD;
&lt;/table></additionalInfo>
<problem>&lt;p> The effort required to integrate a system increases exponentially with time. &#xD;
By integrating the system more frequently, integration issues are identified &#xD;
earlier, when they are easier to fix, and&amp;nbsp;the overall integration effort &#xD;
is reduced.&amp;nbsp; The result is a higher-quality product and more predictable &#xD;
delivery schedules. &lt;/p>&#xD;
&lt;p>&#xD;
Continuous integration provides the following benefits:&#xD;
&lt;/p>&#xD;
&lt;ul>&#xD;
&lt;li>&lt;b> Improved feedback. &lt;/b>Continuous integration shows constant and demonstrable &#xD;
progress. &lt;/li>&#xD;
&lt;li>&lt;b>Improved error detection.&lt;/b> Continuous integration enables you to detect &#xD;
and address errors early, often minutes after they've been injected into the &#xD;
product. Effective continuous integration requires automated unit testing &#xD;
with appropriate code coverage. &lt;/li>&#xD;
&lt;li>&lt;b>Improved collaboration. &lt;/b>Continuous integration enables team members &#xD;
to work together safely. They know that they can make a change to their code, &#xD;
integrate the system, and determine very quickly whether or not their change &#xD;
conflicts with others. &lt;/li>&#xD;
&lt;li>&lt;b> Improved system integration. &lt;/b>By integrating continuously throughout &#xD;
your project, you know that you can actually build the system, thereby mitigating &#xD;
integration surprises at the end of the lifecycle. &lt;/li>&#xD;
&lt;li>&lt;b> Reduced&amp;nbsp;number of parallel changes&lt;/b> that need to be merged and &#xD;
tested. &lt;/li>&#xD;
&lt;li>&lt;b> Reduced number of errors &lt;/b>found during system testing.&lt;b> &lt;/b>All &#xD;
conflicts&amp;nbsp;are resolved before making new change sets available and by &#xD;
the person who is in the best position to resolve them. &lt;/li>&#xD;
&lt;li>&lt;b>Reduced technical risk.&lt;/b> You always have an up-to-date system to test &#xD;
against. &lt;/li>&#xD;
&lt;li>&lt;b> Reduced management risk. &lt;/b>By continuously integrating your system, &#xD;
you know exactly how much functionality that you have built to date, thereby &#xD;
improving your ability to predict when and if you are actually going to be &#xD;
able to deliver the necessary functionality. &lt;/li>&#xD;
&lt;/ul></problem>
<application>&lt;p> The best way to read this practice is to first familiarize yourself with its &#xD;
overall structure: what is in it and how it is organized.&amp;nbsp; Then begin by &#xD;
reviewing the key concepts to understand the terminology. Next, review the &lt;a class=&quot;elementLink&quot; href=&quot;./../../../practice.tech.continuous_integration.base/tasks/integrate_and_create_build_6191BF5D.html&quot; guid=&quot;_kkZBgJOKEdyaRbFYa4AN4A&quot;>Integrate and Create Build&lt;/a> task &lt;a class=&quot;elementLink&quot; href=&quot;./../../../practice.tech.continuous_integration.base/tasks/integrate_and_create_build_6191BF5D.html&quot; guid=&quot;_kkZBgJOKEdyaRbFYa4AN4A&quot;>Integrate and Create Build&lt;/a>to &#xD;
learn what needs to be done. Finally, review the associated guidelines for&amp;nbsp;more &#xD;
information on the overall workflow. &lt;/p>&#xD;
&lt;p>&#xD;
For step-by-step instructions on how to adopt this practice, see&amp;nbsp;&lt;a class=&quot;elementLink&quot; href=&quot;./../../../practice.tech.continuous_integration.base/guidances/roadmaps/how_to_adopt_continuous_integration_DBC46C5D.html&quot; guid=&quot;_4qbzQPnTEdyLA5PXdgVJXw&quot;>How to adopt the Continuous Integration practice&lt;/a>.&#xD;
&lt;/p></application>
</org.eclipse.epf.uma:PracticeDescription>