| <?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><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. "Continuous Integration," <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. 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> |