| <?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:epf="http://www.eclipse.org/epf" epf:version="1.5.0" xmi:id="-CtyoBMfPzn2SCjU-fK3ehg" |
| name="continous_integration,_rJNiMB4rEd2bS8fFOQ7WWA" guid="-CtyoBMfPzn2SCjU-fK3ehg" |
| changeDate="2008-07-04T09:27:04.515-0400" version="7.5.0"> |
| <mainDescription><h3>
 |
| The Essence of Continuous Integration
 |
| </h3>
 |
| <p>
 |
| The essence of continuous integration may be described by the following activities:
 |
| </p>
 |
| <ol>
 |
| <li>
 |
| Developers make small changes to the latest integration tested implementation in their workspace, and unit test
 |
| them, prior to making the changes available to the team.
 |
| </li>
 |
| <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>
 |
| </ol>
 |
| <p>
 |
| The first activity ensures that changes are made to a known-good configuration and tested prior to making the changes
 |
| available.&nbsp; The second activity identifies integration issues early, so they can be corrected while the change is
 |
| still fresh in the developers 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&nbsp;2006. <i>Continuous Integration.</i>&nbsp; <a
 |
| href="http://www.martinfowler.com/articles/continuousIntegration.html"
 |
| target="_blank">http://www.martinfowler.com/articles/continuousIntegration.html</a>
 |
| </td>
 |
| </tr>
 |
| <tr>
 |
| <td width="10%">
 |
| </td>
 |
| <td style="PADDING-BOTTOM: 10px" width="78%">
 |
| Seminal paper on Continuous Integration.&nbsp;&nbsp;Great overview of&nbsp;the benefits and practices of
 |
| continuous integration.
 |
| </td>
 |
| </tr>
 |
| <tr>
 |
| <td colspan="2">
 |
| Paul&nbsp;M. Duval with Steve Matyas and Andrew Glover 2007. <i>Continuous Integration: Improving Software
 |
| Quality and Reducing Risk.</i> Addison-Wesley.
 |
| </td>
 |
| </tr>
 |
| <tr>
 |
| <td width="10%">
 |
| </td>
 |
| <td style="PADDING-BOTTOM: 10px" width="78%">
 |
| Comprehensive guidance on the practice, and sub-practices of continuous integration. Great overview of
 |
| motivation and benefits of the practice. Detailed discussion of more than forty CI related sub-practices
 |
| with example scripts and code segments. Appendix provides an overview of tools available to support the
 |
| practice.
 |
| </td>
 |
| </tr>
 |
| </tbody>
 |
| </table></additionalInfo> |
| <problem><h3>
 |
| Why Adopt this Practice?
 |
| </h3>
 |
| <p>
 |
| The effort required to integrate a system increases exponentially with time.&nbsp; 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>
 |
| <ol>
 |
| <li>
 |
| Improved feedback. Continuous integration shows constant and demonstrable progress.
 |
| </li>
 |
| <li>
 |
| Improved error detection. 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>
 |
| Improved collaboration. 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>
 |
| Improved system integration. 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>
 |
| Reduced&nbsp;number of parallel changes that need to be merged and tested.
 |
| </li>
 |
| <li>
 |
| Reduced number of errors found during system testing. All conflicts&nbsp;are resolved prior to making new change
 |
| sets available, by the person who is in the best position to resolve them.
 |
| </li>
 |
| <li>
 |
| Reduced technical risk. You always have an up-to-date system against which to test.
 |
| </li>
 |
| <li>
 |
| Reduced management risk. By continuously integrating your system you know exactly how much functionality that
 |
| you’ve built to date, improving your ability to predict when and if you’re actually going to be able to deliver the
 |
| necessary functionality.
 |
| </li>
 |
| </ol></problem> |
| <application><h3>
 |
| How to Read this Practice
 |
| </h3>
 |
| <p>
 |
| The best way to read this practice is to first familiarize yourself with its overall structure -- what it is in it and
 |
| how it is organized.&nbsp;
 |
| </p>
 |
| <p>
 |
| Begin by reviewing the key concepts to understand the terminology used.&nbsp; Then review the 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 understand 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> |