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