blob: a9df6c56b64974d08c9de9d550af0043eea6c7fb [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: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>&lt;h3>&#xD;
The Essence of Continuous Integration&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
The essence of continuous integration may be described by the following activities:&#xD;
&lt;/p>&#xD;
&lt;ol>&#xD;
&lt;li>&#xD;
Developers make small changes to the latest integration tested implementation in their workspace, and unit test&#xD;
them, prior to making the changes available to the team.&#xD;
&lt;/li>&#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;/ol>&#xD;
&lt;p>&#xD;
The first activity ensures that changes are made to a known-good configuration and tested prior to making the changes&#xD;
available.&amp;nbsp; The second activity identifies integration issues early, so they can be corrected while the change is&#xD;
still fresh in the developers 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&amp;nbsp;2006. &lt;i>Continuous Integration.&lt;/i>&amp;nbsp; &lt;a&#xD;
href=&quot;http://www.martinfowler.com/articles/continuousIntegration.html&quot;&#xD;
target=&quot;_blank&quot;>http://www.martinfowler.com/articles/continuousIntegration.html&lt;/a>&#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;
Seminal paper on Continuous Integration.&amp;nbsp;&amp;nbsp;Great overview of&amp;nbsp;the benefits and practices of&#xD;
continuous integration.&#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 2007. &lt;i>Continuous Integration: Improving Software&#xD;
Quality and Reducing Risk.&lt;/i> Addison-Wesley.&#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 sub-practices of continuous integration. Great overview of&#xD;
motivation and benefits of the practice. Detailed discussion of more than forty CI related sub-practices&#xD;
with example 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;h3>&#xD;
Why Adopt this Practice?&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
The effort required to integrate a system increases exponentially with time.&amp;nbsp; By integrating the system more&#xD;
frequently, integration issues are identified earlier when they are easier to fix and&amp;nbsp;the overall integration&#xD;
effort is 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;ol>&#xD;
&lt;li>&#xD;
Improved feedback. Continuous integration shows constant and demonstrable progress.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Improved error detection. Continuous integration enables you to detect and address errors early, often minutes&#xD;
after they’ve been injected into the product. Effective continuous integration requires automated unit testing with&#xD;
appropriate code coverage.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Improved collaboration. Continuous integration enables team members to work together safely. They know that they&#xD;
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;
Improved system integration. By integrating continuously throughout your project you know that you can actually&#xD;
build the system, thereby mitigating integration surprises at the end of the lifecycle.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Reduced&amp;nbsp;number of parallel changes that need to be merged and tested.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Reduced number of errors found during system testing. All conflicts&amp;nbsp;are resolved prior to making new change&#xD;
sets available, by the person who is in the best position to resolve them.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Reduced technical risk. You always have an up-to-date system against which to test.&#xD;
&lt;/li>&#xD;
&lt;li>&#xD;
Reduced management risk. By continuously integrating your system you know exactly how much functionality that&#xD;
you’ve built to date, improving your ability to predict when and if you’re actually going to be able to deliver the&#xD;
necessary functionality.&#xD;
&lt;/li>&#xD;
&lt;/ol></problem>
<application>&lt;h3>&#xD;
How to Read this Practice&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
The best way to read this practice is to first familiarize yourself with its overall structure -- what it is in it and&#xD;
how it is organized.&amp;nbsp;&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
Begin by reviewing the key concepts to understand the terminology used.&amp;nbsp; Then review the task &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> to understand 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>