<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Agile Integration and Test</title>
	<atom:link href="http://agintes.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://agintes.wordpress.com</link>
	<description>Distributed literature survey, paper, and presentation.</description>
	<lastBuildDate>Mon, 01 Oct 2007 03:47:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='agintes.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Agile Integration and Test</title>
		<link>http://agintes.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://agintes.wordpress.com/osd.xml" title="Agile Integration and Test" />
	<atom:link rel='hub' href='http://agintes.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Perform Design Reviews Continuously</title>
		<link>http://agintes.wordpress.com/2007/09/30/perform-design-reviews-continuously/</link>
		<comments>http://agintes.wordpress.com/2007/09/30/perform-design-reviews-continuously/#comments</comments>
		<pubDate>Mon, 01 Oct 2007 03:21:52 +0000</pubDate>
		<dc:creator>catena</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://agintes.wordpress.com/2007/09/30/perform-design-reviews-continuously/</guid>
		<description><![CDATA[Either an object has responsibility to too many other objects (highly afferent, A) or the object isn&#8217;t sufficiently independent of other objects (highly efferent, E). I don&#8217;t agree with the use of the formula that the text presents, which attempts to construct a ratio to summarize how likely it is that a change will impact [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=56&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote><p>Either an object has responsibility to too many other objects (highly afferent, <em>A</em>) or the object isn&#8217;t sufficiently independent of other objects (highly efferent, <em>E</em>).</p></blockquote>
<p>I don&#8217;t agree with the use of the formula that the text presents, which attempts to construct a ratio to summarize how likely it is that a change will impact an object (instability, <em>I</em>).</p>
<blockquote><p><img src='http://s0.wp.com/latex.php?latex=I%3D%5Cfrac%7BE%7D%7BE%2BA%7D&amp;bg=ffffff&amp;fg=000000&amp;s=0' alt='I=&#92;frac{E}{E+A}' title='I=&#92;frac{E}{E+A}' class='latex' /></p></blockquote>
<p>Why do additional responsibilities to other objects (higher <em>A</em>) mitigate the risk of change caused by dependence on other objects?  I would expect any kind of coupling to increase instability linearly (or exponentially, depending on the kind of dependencies).  If we want to essentially just consider <em>E</em>, but scale it against <em>A</em>, then maybe this measure would be better than the ratio.</p>
<blockquote><p><img src='http://s0.wp.com/latex.php?latex=I%3D%5Cfrac%7BE%2BA%7D%7BA%7D&amp;bg=ffffff&amp;fg=000000&amp;s=0' alt='I=&#92;frac{E+A}{A}' title='I=&#92;frac{E+A}{A}' class='latex' /> where <em>I</em>=<em>E</em> if <em>A</em>=0.</p></blockquote>
<p>I do think that there&#8217;s an argument to make for considering <em>A</em> in an object&#8217;s instability, in a system where objects&#8217; designers are aware of each others&#8217; needs, and attempt to accommodate them.  Responsibility to other objects increases instability of the base object because of the varying design influence of each dependent object.</p>
<blockquote><p>Assemblies with high afferent coupling should have a high degree of associated tests because, of course, with so much code dependent on that assembly, you want to guarantee it is reliable.  Break assemblies into smaller, more flexible chunks of code.</p>
<p>For high efferent coupling, ensure good tests, code coverage, refactoring, and consider long-term implications of instability.</p></blockquote>
<p>[Duvall et al. 2007, “Continuous Inspection"]</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/agintes.wordpress.com/56/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/agintes.wordpress.com/56/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/agintes.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/agintes.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/agintes.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/agintes.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/agintes.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/agintes.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/agintes.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/agintes.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/agintes.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/agintes.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/agintes.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/agintes.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/agintes.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/agintes.wordpress.com/56/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=56&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://agintes.wordpress.com/2007/09/30/perform-design-reviews-continuously/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c4d1f79da6d413fefdf779f6437aa15?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">catena</media:title>
		</media:content>
	</item>
		<item>
		<title>Label a Repository’s Assets</title>
		<link>http://agintes.wordpress.com/2007/09/30/label-a-repository%e2%80%99s-assets/</link>
		<comments>http://agintes.wordpress.com/2007/09/30/label-a-repository%e2%80%99s-assets/#comments</comments>
		<pubDate>Mon, 01 Oct 2007 03:14:22 +0000</pubDate>
		<dc:creator>catena</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://agintes.wordpress.com/2007/09/30/label-a-repository%e2%80%99s-assets/</guid>
		<description><![CDATA[A *.00 baseline label. Creating a repository label clearly delineates a group of files as belonging together. Labeling repository versions enables a smooth transition to newer versions of code by creating snapshots in time. Parallel branches handle multiple development lines.  Developers can add the required fixes and produce a stable build that doesn&#8217;t necessarily contain [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=55&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A *.00 baseline label.</p>
<blockquote><p>Creating a repository label clearly delineates a group of files as belonging together. Labeling repository versions enables a smooth transition to newer versions of code by creating snapshots in time.</p>
<p>Parallel branches handle multiple development lines.  Developers can add the required fixes and produce a stable build that doesn&#8217;t necessarily contain new features that exist on the trunk [mainline].</p></blockquote>
<p>The text credits labels rather than branches.  This is true for a one-off patch, but truly parallel development requires branches, since we cannot persistently fork using only labels.  What does working in parallel mean, if not creating permanent versions from a label on a branch?</p>
<blockquote><p>Once a release has been labeled, generate that same release by specifying the label identifier, which can follow many different styles.</p></blockquote>
<p>[Duvall et al. 2007, “Continuous Deployment"]</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/agintes.wordpress.com/55/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/agintes.wordpress.com/55/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/agintes.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/agintes.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/agintes.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/agintes.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/agintes.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/agintes.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/agintes.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/agintes.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/agintes.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/agintes.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/agintes.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/agintes.wordpress.com/55/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/agintes.wordpress.com/55/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/agintes.wordpress.com/55/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=55&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://agintes.wordpress.com/2007/09/30/label-a-repository%e2%80%99s-assets/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c4d1f79da6d413fefdf779f6437aa15?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">catena</media:title>
		</media:content>
	</item>
		<item>
		<title>The Future of CI</title>
		<link>http://agintes.wordpress.com/2007/09/30/the-future-of-ci/</link>
		<comments>http://agintes.wordpress.com/2007/09/30/the-future-of-ci/#comments</comments>
		<pubDate>Mon, 01 Oct 2007 01:53:21 +0000</pubDate>
		<dc:creator>catena</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://agintes.wordpress.com/2007/09/30/the-future-of-ci/</guid>
		<description><![CDATA[Before the repository accepts the code, it runs an integration build on a separate machine. Only if the integration build is successful will it commit the code to the repository. Is this worth the extra effort?   With frequent and appropriately high-visibility builds, no build series will remain broken for long.  Release managers may just [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=54&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote><p>Before the repository accepts the code, it runs an integration build on a separate machine. Only if the integration build is successful will it commit the code to the repository.</p></blockquote>
<p>Is this worth the extra effort?   With frequent and appropriately high-visibility builds, no build series will remain broken for long.  Release managers may just ignore builds which fail, since enough succeed to meet the test and delivery schedules.</p>
<blockquote><p>You integrate all your changes and run an integration build on a separate machine before committing your changes to the repository.</p></blockquote>
<p>Our practice: anyone can build with our build systems, on any machine with the appropriate OS, since all the unix build machines are centrally managed.  Developers should reverse-merge (or see the latest integration-branch changes with an &#8220;agile&#8221; config spec), build, check in, and merge to the integration branch.</p>
<blockquote><p>Expect more parallelization, and other capabilities, to leverage additional hardware and software resources, to speed up builds.</p></blockquote>
<p>For example, <a href="http://electric-cloud.com/products/electricaccelerator.php" title="ElectricAccelerator">ElectricAccelerator</a>.</p>
<p>[Duvall et al. 2007, "The Future of CI"]</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/agintes.wordpress.com/54/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/agintes.wordpress.com/54/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/agintes.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/agintes.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/agintes.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/agintes.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/agintes.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/agintes.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/agintes.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/agintes.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/agintes.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/agintes.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/agintes.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/agintes.wordpress.com/54/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/agintes.wordpress.com/54/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/agintes.wordpress.com/54/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=54&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://agintes.wordpress.com/2007/09/30/the-future-of-ci/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c4d1f79da6d413fefdf779f6437aa15?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">catena</media:title>
		</media:content>
	</item>
		<item>
		<title>Automate Database Integration</title>
		<link>http://agintes.wordpress.com/2007/09/30/automate-database-integration/</link>
		<comments>http://agintes.wordpress.com/2007/09/30/automate-database-integration/#comments</comments>
		<pubDate>Mon, 01 Oct 2007 00:24:49 +0000</pubDate>
		<dc:creator>catena</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://agintes.wordpress.com/2007/09/30/automate-database-integration/</guid>
		<description><![CDATA[Automate database integration activities: drop database; create database; insert system data; insert test data; migrate database and data; set up database instances in multiple environments; modify column attributes and constraints; modify test data; modify stored procedures, functions, and triggers; obtain access to different environments; and back up and restore large data sets. Execute SQL scripts [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=52&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote><p>Automate database integration activities: drop database; create database; insert system data; insert test data; migrate database and data; set up database instances in multiple environments; modify column attributes and constraints; modify test data; modify stored procedures, functions, and triggers; obtain access to different environments; and back up and restore large data sets.</p></blockquote>
<blockquote><p><span class="docTextHighlight">Execute</span><a name="define "></a> SQL scripts to define and manipulate a database with a single instruction from the command line, which uses attributes defined in a single file.  Organize your targets and scripts by database definition type or by subsystem.</p></blockquote>
<blockquote><p>Drop and recreate the database, enforce data integrity through constraints and triggers, and define database behavior <a name="iddle1035"></a><a name="iddle1038"></a><a name="iddle1454"></a><a name="iddle1766"></a><a name="iddle1970"></a><a name="iddle2071"></a><a name="or functions"></a>through stored procedures or functions.  Create database and permissions, tables, sequences, views, stored procedures and functions, and triggers, ordered by database object dependencies.</p></blockquote>
<blockquote><p>Provide initial data and test data for testing code that relies on the database.  Use different SQL data files to support development, test, quality assurance (QA), and production environments.  Provide scripts for inserting, updating, and deleting data.</p></blockquote>
<blockquote><p><span class="docTextHighlight">Combine </span>Data Definition Language (DDL) and Data Manipulation Language (DML) statements, in a database integration orchestration script, for the higher-level build and integration processes.</p></blockquote>
<p>[Duvall et al. 2007, “Continuous Database Integration”]</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/agintes.wordpress.com/52/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/agintes.wordpress.com/52/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/agintes.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/agintes.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/agintes.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/agintes.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/agintes.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/agintes.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/agintes.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/agintes.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/agintes.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/agintes.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/agintes.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/agintes.wordpress.com/52/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/agintes.wordpress.com/52/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/agintes.wordpress.com/52/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=52&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://agintes.wordpress.com/2007/09/30/automate-database-integration/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c4d1f79da6d413fefdf779f6437aa15?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">catena</media:title>
		</media:content>
	</item>
		<item>
		<title>Continuous Database Integration</title>
		<link>http://agintes.wordpress.com/2007/09/30/continuous-database-integration/</link>
		<comments>http://agintes.wordpress.com/2007/09/30/continuous-database-integration/#comments</comments>
		<pubDate>Mon, 01 Oct 2007 00:15:16 +0000</pubDate>
		<dc:creator>catena</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://agintes.wordpress.com/2007/09/30/continuous-database-integration/</guid>
		<description><![CDATA[Rebuild your database and test data any time a change is applied to a project&#8217;s version control repository. Store artifacts related to database integration in a version control system, trigger an integration build when they change, generate them with build scripts, test them for correctness, and inspect them for policy compliance. [Duvall et al. 2007, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=53&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote><p>Rebuild your database and test data any time a change is applied to a project&#8217;s version control repository.</p></blockquote>
<blockquote><p>Store artifacts related to database integration in a version control system, trigger an integration build when they change, generate them with build scripts, test them for correctness, and inspect them for policy compliance.</p></blockquote>
<p>[Duvall et al. 2007, “Continuous Database Integration”]</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/agintes.wordpress.com/53/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/agintes.wordpress.com/53/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/agintes.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/agintes.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/agintes.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/agintes.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/agintes.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/agintes.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/agintes.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/agintes.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/agintes.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/agintes.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/agintes.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/agintes.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/agintes.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/agintes.wordpress.com/53/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=53&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://agintes.wordpress.com/2007/09/30/continuous-database-integration/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c4d1f79da6d413fefdf779f6437aa15?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">catena</media:title>
		</media:content>
	</item>
		<item>
		<title>Stage Builds</title>
		<link>http://agintes.wordpress.com/2007/09/25/stage-builds/</link>
		<comments>http://agintes.wordpress.com/2007/09/25/stage-builds/#comments</comments>
		<pubDate>Tue, 25 Sep 2007 05:28:24 +0000</pubDate>
		<dc:creator>catena</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://agintes.wordpress.com/2007/09/25/stage-builds/</guid>
		<description><![CDATA[Run lightweight &#8220;commit&#8221; builds that perform compile, unit test execution, and deployment followed by heavyweight &#8220;secondary&#8221; builds that include component, system, and other slower-running tests and inspections. First run an initial integration &#8220;commit&#8221; or lightweight build that integrates the software components and runs unit tests to root out any obvious problems. After this lightweight build [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=51&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote><p>Run lightweight &#8220;commit&#8221; builds that perform compile, unit test execution, and deployment followed by heavyweight &#8220;secondary&#8221; builds that include component, system, and other slower-running tests and inspections.</p></blockquote>
<blockquote><p>First run an initial integration &#8220;commit&#8221; or lightweight build that integrates the software components and runs unit tests to root out any obvious problems.  After this lightweight build is successful, a more exhaustive integration build is run to include component tests or system tests, inspections, and deployment.</p></blockquote>
<blockquote></blockquote>
<p>[Duvall et al. 2007, “Building Software at Every Change”]</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/agintes.wordpress.com/51/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/agintes.wordpress.com/51/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/agintes.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/agintes.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/agintes.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/agintes.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/agintes.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/agintes.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/agintes.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/agintes.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/agintes.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/agintes.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/agintes.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/agintes.wordpress.com/51/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/agintes.wordpress.com/51/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/agintes.wordpress.com/51/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=51&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://agintes.wordpress.com/2007/09/25/stage-builds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c4d1f79da6d413fefdf779f6437aa15?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">catena</media:title>
		</media:content>
	</item>
		<item>
		<title>Run Fast Builds</title>
		<link>http://agintes.wordpress.com/2007/09/25/run-fast-builds/</link>
		<comments>http://agintes.wordpress.com/2007/09/25/run-fast-builds/#comments</comments>
		<pubDate>Tue, 25 Sep 2007 05:23:57 +0000</pubDate>
		<dc:creator>catena</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://agintes.wordpress.com/2007/09/25/run-fast-builds/</guid>
		<description><![CDATA[Try to get your integration builds down to ten minutes by increasing computing resources, offloading slower tests, offloading or reducing inspections, and running staged builds. Build scalability indicates how capable the build system is of handling an increase in the amount of code that it integrates and analyzes. Build performance refers to the duration of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=50&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote><p> Try to get your integration builds down to ten minutes by increasing computing resources, offloading slower tests, offloading or reducing inspections, and running staged builds.</p></blockquote>
<blockquote><p><strong><span class="docEmphStrong">Build scalability</span></strong> indicates how capable the build system is of handling an increase in the amount of code that it integrates and analyzes. <strong><span class="docEmphStrong">Build performance</span></strong> refers to the duration of the build.</p></blockquote>
<blockquote></blockquote>
<blockquote><p>Developers do not move on to the next task until their most recent check-in integrates successfully. Therefore, builds taking longer than ten minutes can interrupt their flow.</p></blockquote>
<blockquote><p>Prioritize improvement tactics, for build duration reduction, by scalability, performance, and difficulty in implementation.</p></blockquote>
<p><strong>Integration Build Metrics</strong></p>
<blockquote><p><em>Compilation time.</em>   The time it takes to compile the software, and how it compares to your past compile times.  [Recorded by daily builds.]</p>
<p><em>Number of source lines of code (SLOC).</em>   This indicates the system&#8217;s size or at least what needs to be compiled.  [Calculated by SSMT.]</p>
<p><em>Number and types of inspections.</em>   The number of different types of inspections you are performing.  Consider eliminating any redundancy.</p>
<p><em>Average assembly generation time.</em>   The time it takes to generate the assembly, archive, or however you are packaging the software.  [Recorded by daily builds.]</p>
<p><em>Test execution time (based on category).</em>   The time it takes to perform testing at each level: unit, component, and system.</p>
<p><em>Ratio between successful and unsuccessful builds.</em>   Divide the number of failed builds into the number of total builds to determine the ratio between successful and unsuccessful builds.  [Calculable from daily build archive.]</p>
<p><em>Inspection time.</em>   The time it takes to perform all of the automated inspections.  [Timeable from a Klocwork or Purify run.]</p>
<p><em>Deployment time.</em>   The time it takes to deploy the software into the target environment from the integration build.</p>
<p><em>Database rebuild time.</em> 	The time it takes to rebuild your database.</p>
<p><em>Integration build machine system resources and usage.</em>   Improving the memory, disk speed, and/or processor can improve the performance of your integration builds.  This helps determine whether an integration build machine has an application server or database server or some other process that is using up memory or processor speed.</p>
<p><em>Version control system load.</em>   Helps determine the version control system&#8217;s peak-time load, how long it takes to check out/update your project from the integration build machine, and if the network bandwidth, processor, memory, or disk drives are adequate.</p></blockquote>
<p><strong> Integration Build Duration Improvements</strong></p>
<blockquote><p><em>Use a dedicated integration build machine.</em>   Reduce false positive or negative builds, and enable faster builds.</p>
<p><em>Increase integration build machine(s) hardware capacity.</em>   Perform available upgrades to CPU, disk, or memory.   Offload processes to other systems.   Eliminate unnecessary system processes.</p>
<p><em>Improve test performance.</em>  Separate automated tests by category—unit, component, and system—and run these tests at different times (e.g., unit tests at every commit, component/system tests in a secondary build).  Refactor your tests based on the results of the inspection tools.  Use mocks/stubs for components that may otherwise be too difficult or complex to use in the unit-testing environment. For example, a common implementation of a mock object is mocking the interface for data access.  Separate long-running integration tests into separate specialized test suites.  Execute your tests in parallel.  Run different types of tests based on build type: a commit build is followed by secondary builds, a full integration build, or release build.</p>
<p><em>Streamline integration builds.</em> See the practice <a href="http://agintes.wordpress.com/2007/09/25/stage-builds/" title="Stage Builds">Stage Builds</a>.</p>
<p><em>Examine and optimize infrastructure.</em>  Investigate and improve any infrastructure resources to reduce the build duration.</p>
<p><em>Optimize the build process.</em>  An incremental build will compile and/or regenerate only the files that have changed.  Ideally, an integration environment should be cleaned by removing old files and then compiling/regenerating the code to effectively determine if anything has broken.  Might be reasonable to only rebuild once a day, objects that rarely change.</p>
<p><em>Build system components separately.</em>  Break apart the software into smaller subsystems (modules) and build each of the subsystems separately.  If there are any changes to one project based on the dependencies, the other projects are rebuilt as well.</p>
<p><em>Improve software inspection performance.  </em>Which metrics are used?  Does each metric provide tangible value?   Are there two or more tools providing the same metrics, which may decrease your build performance?   Are you running automated inspections with every build?  Are there certain analyses that can run as part of a secondary or periodic build?   Are there inspections that you can run on specific subsystems rather than the entire code base?</p>
<p><em>Perform distributed integration builds.</em>  Moving part of the build to another machine may mean copying large files around as part of the build process, which has the potential to slow things down even more.</p></blockquote>
<p>[Duvall et al. 2007, “Building Software at Every Change”]</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/agintes.wordpress.com/50/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/agintes.wordpress.com/50/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/agintes.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/agintes.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/agintes.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/agintes.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/agintes.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/agintes.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/agintes.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/agintes.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/agintes.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/agintes.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/agintes.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/agintes.wordpress.com/50/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/agintes.wordpress.com/50/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/agintes.wordpress.com/50/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=50&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://agintes.wordpress.com/2007/09/25/run-fast-builds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c4d1f79da6d413fefdf779f6437aa15?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">catena</media:title>
		</media:content>
	</item>
		<item>
		<title>Run Manual Integration Builds</title>
		<link>http://agintes.wordpress.com/2007/09/24/run-manual-integration-builds/</link>
		<comments>http://agintes.wordpress.com/2007/09/24/run-manual-integration-builds/#comments</comments>
		<pubDate>Tue, 25 Sep 2007 04:26:59 +0000</pubDate>
		<dc:creator>catena</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://agintes.wordpress.com/2007/09/24/run-manual-integration-builds/</guid>
		<description><![CDATA[Run a sequential integration build manually using an automated build as an approach to reduce integration build errors. Some use this approach as an alternative to a CI server. Developers manually run an integration build on a separate integration machine to ensure the build always stays in the green. Doesn&#8217;t scale particularly well for larger [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=49&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote><p>Run a sequential integration build manually using an automated build as an approach to reduce integration build errors. Some use this approach as an alternative to a CI server.</p></blockquote>
<blockquote><p>Developers manually run an integration build on a separate integration machine to ensure the build always stays in the green.  Doesn&#8217;t scale particularly well for larger teams, who may stack up many changes for larger and less frequent integrations.  So no guarantee the practice will be followed.</p></blockquote>
<blockquote><p>Combine, with automated CI, the approach of separate private builds by each developer, to prevent broken integration builds.</p></blockquote>
<p>[Duvall et al. 2007, “Building Software at Every Change”, optional]</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/agintes.wordpress.com/49/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/agintes.wordpress.com/49/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/agintes.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/agintes.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/agintes.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/agintes.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/agintes.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/agintes.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/agintes.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/agintes.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/agintes.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/agintes.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/agintes.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/agintes.wordpress.com/49/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/agintes.wordpress.com/49/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/agintes.wordpress.com/49/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=49&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://agintes.wordpress.com/2007/09/24/run-manual-integration-builds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c4d1f79da6d413fefdf779f6437aa15?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">catena</media:title>
		</media:content>
	</item>
		<item>
		<title>Use a CI Server</title>
		<link>http://agintes.wordpress.com/2007/09/24/use-a-ci-server/</link>
		<comments>http://agintes.wordpress.com/2007/09/24/use-a-ci-server/#comments</comments>
		<pubDate>Tue, 25 Sep 2007 04:13:34 +0000</pubDate>
		<dc:creator>catena</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://agintes.wordpress.com/2007/09/24/use-a-ci-server/</guid>
		<description><![CDATA[In addition to or as an alternative to running manual integration builds, use a CI server to automatically poll for version control changes and run an integration build on a separate machine. Poll for changes in the version control repository on a specified time interval. Perform certain actions on a scheduled basis, such as hourly [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=48&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote><p>In addition to or as an alternative to running manual integration builds, use a CI server to automatically poll for version control changes and run an integration build on a separate machine.</p></blockquote>
<blockquote><p>Poll for changes in the version control repository on a specified time interval.  Perform certain actions on a scheduled basis, such as hourly or daily.  Identify a &#8220;quiet period&#8221; during which no integration builds are performed for the project.  Support for different build scripting tools including command-line tools such as Rake, make, Ant, or NAnt.  Send e-mails to the concerned parties.  Display a history of previous builds.  Display a dashboard that is Web accessible so that everyone can review integration build information.  Support multiple version control systems for your different projects.</p></blockquote>
<blockquote><p>Manually perform integrations [to compensate for] minimal tool support for preventing broken code from entering the repository.</p></blockquote>
<p>[Duvall et al. 2007, “Building Software at Every Change”, optional]</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/agintes.wordpress.com/48/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/agintes.wordpress.com/48/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/agintes.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/agintes.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/agintes.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/agintes.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/agintes.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/agintes.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/agintes.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/agintes.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/agintes.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/agintes.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/agintes.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/agintes.wordpress.com/48/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/agintes.wordpress.com/48/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/agintes.wordpress.com/48/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=48&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://agintes.wordpress.com/2007/09/24/use-a-ci-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c4d1f79da6d413fefdf779f6437aa15?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">catena</media:title>
		</media:content>
	</item>
		<item>
		<title>Use a Dedicated Integration Build Machine</title>
		<link>http://agintes.wordpress.com/2007/09/24/use-a-dedicated-integration-build-machine/</link>
		<comments>http://agintes.wordpress.com/2007/09/24/use-a-dedicated-integration-build-machine/#comments</comments>
		<pubDate>Mon, 24 Sep 2007 22:26:30 +0000</pubDate>
		<dc:creator>catena</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://agintes.wordpress.com/2007/09/24/use-a-dedicated-integration-build-machine/</guid>
		<description><![CDATA[Use one machine dedicated to running your builds. Ensure that the integration location is free of old build artifacts. Run on a separate machine, with application and database servers into known states, to find [process] omissions. Remove any code dependencies on the integration environment, remove all of the source code and binaries from the previous [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=46&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote><p>Use one machine dedicated to running your builds. Ensure that the integration location is free of old build artifacts.</p></blockquote>
<blockquote><p>Run on a separate machine, with application and database servers into known states, to find [process] omissions.  Remove any code dependencies on the integration environment, remove all of the source code and binaries from the previous integration build (to baseline the environment), and set test data and any other configuration elements to a known state.</p></blockquote>
<blockquote><p>When individuals know that the latest integration build failed, they can avoid getting the bad source code from the version control repository.  This includes source code, build scripts, configuration files, tools (such as application server, database server, and static analysis tools), test code, and database scripts/files.</p></blockquote>
<blockquote><p>&#8220;The reason we had to come in last Saturday was because of integration problems.&#8221;  It is worth the money to increase hardware resources for an integration build machine rather than wasting time waiting for slow builds.  Efficient builds run often, made repeatable by reducing environmental assumptions.</p></blockquote>
<blockquote><p>Script most dependencies into your build and include the dependency in your repository.  Create an image of certain dependencies.  Refactor your build scripts to remove many of the hard-coded dependencies, and make relative references instead.</p></blockquote>
<p>[Duvall et al. 2007, “Building Software at Every Change”]</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/agintes.wordpress.com/46/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/agintes.wordpress.com/46/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/agintes.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/agintes.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/agintes.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/agintes.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/agintes.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/agintes.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/agintes.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/agintes.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/agintes.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/agintes.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/agintes.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/agintes.wordpress.com/46/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/agintes.wordpress.com/46/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/agintes.wordpress.com/46/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=agintes.wordpress.com&amp;blog=1692611&amp;post=46&amp;subd=agintes&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://agintes.wordpress.com/2007/09/24/use-a-dedicated-integration-build-machine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/7c4d1f79da6d413fefdf779f6437aa15?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">catena</media:title>
		</media:content>
	</item>
	</channel>
</rss>
