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