<?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/"
	>

<channel>
	<title>Software Configuration Management and Agile Software Development &#187; SCM</title>
	<atom:link href="http://accurev.com/blog/tag/scm/feed/" rel="self" type="application/rss+xml" />
	<link>http://accurev.com/blog</link>
	<description>SCM and Agile Software Development Blog</description>
	<lastBuildDate>Thu, 17 May 2012 15:00:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>General Availability for Industry&#8217;s First Seamless Integration of Enterprise-Level Security and Visualization into Git</title>
		<link>http://accurev.com/blog/2012/04/03/general-availability-for-industrys-first-seamless-integration-of-enterprise-level-security-and-visualization-into-git/</link>
		<comments>http://accurev.com/blog/2012/04/03/general-availability-for-industrys-first-seamless-integration-of-enterprise-level-security-and-visualization-into-git/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 17:44:16 +0000</pubDate>
		<dc:creator>AccuRev</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Integrations]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[Software Configuration Management]]></category>
		<category><![CDATA[Software Tools]]></category>
		<category><![CDATA[version control]]></category>
		<category><![CDATA[commercial tool]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[Kando]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://accurev.com/blog/?p=3041</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/04/03/general-availability-for-industrys-first-seamless-integration-of-enterprise-level-security-and-visualization-into-git/' addthis:title='General Availability for Industry&#8217;s First Seamless Integration of Enterprise-Level Security and Visualization into Git ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>AccuRev released for general availability today the first Git integration that seamlessly bridges the world of commercial tools and open source software configuration management. AccuRev’s Kando, an enterprise security and compliance platform for Git, which was released in beta in January, complements the open source SCM tool with additional functionality, allowing organizations using Git to simultaneously leverage enterprise-level security [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/04/03/general-availability-for-industrys-first-seamless-integration-of-enterprise-level-security-and-visualization-into-git/' addthis:title='General Availability for Industry&#8217;s First Seamless Integration of Enterprise-Level Security and Visualization into Git '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/04/03/general-availability-for-industrys-first-seamless-integration-of-enterprise-level-security-and-visualization-into-git/' addthis:title='General Availability for Industry&#8217;s First Seamless Integration of Enterprise-Level Security and Visualization into Git ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p><strong>AccuRev </strong>released for general availability today the first <a href="http://git-scm.com/">Git</a> integration that seamlessly bridges the world of commercial tools and open source software configuration management.</p>
<p><a href="http://accurev.com/blog/wp-content/uploads/2012/04/Kando.jpg"><img class="alignleft size-full wp-image-3042" title="Kando, the first Git integration that seamlessly bridges the world of commercial tools and open source software configuration management." src="http://accurev.com/blog/wp-content/uploads/2012/04/Kando.jpg" alt="Kando General Availability for Industrys First Seamless Integration of Enterprise Level Security and Visualization into Git" width="401" height="384" /></a>AccuRev’s <a href="http://www.accurev.com/kando">Kando</a>, an enterprise security and compliance platform for Git, which was released in beta in January, complements the open source SCM tool with additional functionality, allowing organizations using Git to simultaneously leverage enterprise-level security and requirements traceability.</p>
<p>Kando is the first software development solution that enables Git development shops to add workflow, issue tracking, security, change requirements and other capabilities to the software development process, all while maintaining the flexibility and familiarity of Git environments.</p>
<p>Kando’s ground-breaking enterprise-level security and compliance capabilities allow its users to:</p>
<ul>
<li>Comply with enterprise-level regulations, by providing full audit and traceability</li>
<li>Secure Git with access control capabilities, and support for enterprise authentication via LDAP and Microsoft Active Directory</li>
<li>Visualize and manage development processes that use Git in AccuRev’s <a href="http://www.accurev.com/streambrowser.html">StreamBrowser™</a> environment</li>
<li>Support Software Change and Configuration Management (SCCM) through change-based development with AccuRev <a href="http://www.accurev.com/change-packages.html">Change Packages</a></li>
</ul>
<p style="padding-left: 30px;"><strong><em>“Our Kando Beta announcement in January had an overwhelmingly positive response, and it is clear that Git adoption has expanded well beyond the Linux community, into product development and IT,” said Lorne Cooper, AccuRev’s CEO. “Kando can solve many security and requirements traceability problems that enterprise organizations face when adopting Git, and really allows Git an opportunity to scale the development process across enterprise software development teams.”</em></strong></p>
<p>During the development of Kando, AccuRev established the Kando <a href="http://www.accurev.com/kando-technical-advisory-board">Technical Advisory Board</a>, comprised of representatives from several enterprise organizations with Git environments. To hear what they are saying, or to learn more about Kando, visit <a href="http://www.accurev.com/kando">http://www.accurev.com/kando</a>.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/04/03/general-availability-for-industrys-first-seamless-integration-of-enterprise-level-security-and-visualization-into-git/' addthis:title='General Availability for Industry&#8217;s First Seamless Integration of Enterprise-Level Security and Visualization into Git '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2012/04/03/general-availability-for-industrys-first-seamless-integration-of-enterprise-level-security-and-visualization-into-git/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Would Anyone use Git in their Enterprise?</title>
		<link>http://accurev.com/blog/2012/01/26/why-would-anyone-use-git-in-their-enterprise/</link>
		<comments>http://accurev.com/blog/2012/01/26/why-would-anyone-use-git-in-their-enterprise/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 14:26:25 +0000</pubDate>
		<dc:creator>thinds</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[enterprise]]></category>
		<category><![CDATA[Software Configuration Management]]></category>
		<category><![CDATA[Software Tools]]></category>
		<category><![CDATA[version control]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[integration]]></category>
		<category><![CDATA[Kando]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[SCM compliance]]></category>
		<category><![CDATA[SCM security]]></category>

		<guid isPermaLink="false">http://accurev.com/blog/?p=2980</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/01/26/why-would-anyone-use-git-in-their-enterprise/' addthis:title='Why Would Anyone use Git in their Enterprise? ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>The secret’s out &#8211; AccuRev is releasing a seamless security and compliance related solution for the Git community called Kando on January 31st. To get a first look at Kando, register here for the webinar on 1/31/2012, at 1:00 PM EST. You might be asking yourself, “Why in the world would a company focused on providing software development [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/01/26/why-would-anyone-use-git-in-their-enterprise/' addthis:title='Why Would Anyone use Git in their Enterprise? '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/01/26/why-would-anyone-use-git-in-their-enterprise/' addthis:title='Why Would Anyone use Git in their Enterprise? ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>The secret’s out &#8211; AccuRev is releasing a seamless security and compliance related solution for the Git community called <a href="http://www.accurev.com/kando">Kando</a> on January 31st. To get a first look at Kando, <a href="https://www1.gotomeeting.com/register/996331609">register here for the webinar</a> on 1/31/2012, at 1:00 PM EST.</p>
<p><strong></strong>You might be asking yourself,<strong> <em>“Why in the world would a company focused on providing software development tools to enterprise organizations with mission-critical software development environments produce a solution for an open source version control tool?”</em></strong> I’ll tell you!</p>
<p><a href="http://git-scm.com/">Git</a> is increasing in popularity among developers working in small groups or collaborating on open source projects. It’s fast, flexible, and full of developer-friendly features. Git is a great tool for these smaller and more social types of development projects, and based on discussions about Git with customers, prospects, and analysts, it’s clear that there are more cases of enterprise organizations trying to use Git.</p>
<p>But poke around a few blogs, or read a few articles that discuss the use of Git in an enterprise environment, and I’m sorry, but you <em>will</em> uncover a few issues. As one <a href="http://www.businesscomputingworld.co.uk/qa-david-richard-wandisco/">article in BCW</a> discussed, “Git is a version control system with an attitude of collaboration and sharing. There is practically no way you can enforce a specific pattern of access and sharing. If the people who&#8217;re using Git don&#8217;t want to follow your rules, the tool is not going to help you much.” Let’s be realistic – Linus didn’t originally design Git for use in an enterprise environment!</p>
<p>So, in which cases do enterprise organizations actually use Git?</p>
<p><strong>1. Android Development</strong></p>
<p>If you want to make changes to Android, you’re going to need Git. It’s unavoidable. This means any company creating mobile devices running on Android and working with Android source files has a real business need to use Git.</p>
<p><strong>2. Linux Development</strong></p>
<p>Same as with Android, if your company has a need to make changes to the the Linux kernel, you are going to need Git. Even if you don’t use Git when making those changes, you’ll eventually have to get them into Git.</p>
<p><strong>3. Working with 3rd Party Vendors or Outsourced Teams Using Git</strong></p>
<p>Similar to the Android and Linux situation, if you’re working with 3rd party vendors or outsourced teams who require that you merge your changes into their Git repository, you may be forced to use scripts or bridges to get your changes from your SCM into Git or vice versa, and that’s not a small task.</p>
<p><strong>4. All of Your Developers Love Git</strong></p>
<p>Let’s face it – Git has a cult-like following in the development community. Developers love Git because it’s fast, distributed, flexible, fairly easy to learn, and has a ton of developer-friendly features. It’s developed by developers for developers. Even if you understand the issues Git has with scaling in enterprise environments, it’s difficult to avoid Git when lots of your developers are pushing you to switch.</p>
<p>&nbsp;</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/01/26/why-would-anyone-use-git-in-their-enterprise/' addthis:title='Why Would Anyone use Git in their Enterprise? '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2012/01/26/why-would-anyone-use-git-in-their-enterprise/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SCM Software: Optimizing the Software Development Process</title>
		<link>http://accurev.com/blog/2012/01/20/scm-software-optimizing-the-software-development-process/</link>
		<comments>http://accurev.com/blog/2012/01/20/scm-software-optimizing-the-software-development-process/#comments</comments>
		<pubDate>Fri, 20 Jan 2012 17:10:07 +0000</pubDate>
		<dc:creator>clucca</dc:creator>
				<category><![CDATA[SCM Resources]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[scm software]]></category>
		<category><![CDATA[software release process]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=2756</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/01/20/scm-software-optimizing-the-software-development-process/' addthis:title='SCM Software: Optimizing the Software Development Process ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>The enterprise software development arena can be a harsh and unrelenting environment – not a place for the faint-of-heart to work. Fortunately, software configuration management (SCM) software can make it not only more tolerable, but more efficient and, yes, even more successful. SCM software is not a luxury, nor just another layer of technology to [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/01/20/scm-software-optimizing-the-software-development-process/' addthis:title='SCM Software: Optimizing the Software Development Process '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/01/20/scm-software-optimizing-the-software-development-process/' addthis:title='SCM Software: Optimizing the Software Development Process ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>The enterprise software development arena can be a harsh and unrelenting environment – not a place for the faint-of-heart to work. Fortunately, <strong>software configuration management (SCM) software</strong> can make it not only more tolerable, but more efficient and, yes, even more successful.</p>
<p><a href="http://www.accurev.com/">SCM software</a> is not a luxury, nor just another layer of technology to be added to an already complex process. SCM software is a necessity for development teams working concurrently and in parallel on development projects, especially those employing agile processes to deliver higher quality software more rapidly.</p>
<p>Two of the biggest benefits of using<strong> SCM software</strong> are the ability to coordinate distributed teams and parallel development more effectively, no matter where your team members are located or even the language of the replicas being used – they can be in the next cubicle, the next state, or the next country.</p>
<p><strong>We, of course, recommend AccuRev SCM</strong></p>
<p>No surprise there. After all, we designed it to be fast, flexible, scalable, and effective. After all, we’ve taken process management and version control and made the ideal mash-up that provides the most comprehensive set of SCM tools available, including these<strong> <a href="http://www.accurev.com/scm-best-practices-wp">best practices</a></strong>:</p>
<ul>
<li><a href="http://www.accurev.com/accurev-change-management.html">Change management</a></li>
<li>Visualized SCM patterns</li>
<li><a href="http://www.accurev.com/accuworkflow.html">Automated workflows</a></li>
<li>Private developer history</li>
<li><a href="http://www.accurev.com/multistage-continuous-integration.html">Multi-stage continuous integration</a></li>
<li>Issue-based development</li>
</ul>
<p>With a single set of comprehensive, best-practices SCM tools to work with, life becomes much easier for your development teams – they can focus on software development instead of management and administration tasks. SCM software made nice and simple.</p>
<p>What makes it even easier is how AccuRev SCM easily handles virtually any combination of development processes, including Agile, XP, and waterfall – you name it. You’re free to mix-and-match because AccuRev SCM’s flexible model enables your teams to rip through development with continuous integration, code refactoring, and automated code sharing, to name a few.</p>
<p>Even parallel development is a cinch with fully-transparent code base relationship management that enables teams to store work safely and test it before sharing it with others. A stream-based architecture makes code branching and merging easier, too – it even allows changes to be automatically inherited from other teams.</p>
<p>If for some reason you’re not already using SCM software or if you’re unhappy with whatever software configuration management tool you’re using now and you want to know more about SCM software and AccuRev SCM in particular, check out our <a href="http://www.accurev.com/software-configuration-management-resources.htm">SCM Software Resource Center</a> and <a href="http://www.accurev.com/accurev.html">AccuRev SCM 5.3</a>.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2012/01/20/scm-software-optimizing-the-software-development-process/' addthis:title='SCM Software: Optimizing the Software Development Process '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2012/01/20/scm-software-optimizing-the-software-development-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Software Configuration Management and Version Control Are Not the Same… Trust Me!</title>
		<link>http://accurev.com/blog/2011/11/18/software-configuration-management-and-version-control-are-not-the-same/</link>
		<comments>http://accurev.com/blog/2011/11/18/software-configuration-management-and-version-control-are-not-the-same/#comments</comments>
		<pubDate>Fri, 18 Nov 2011 15:52:13 +0000</pubDate>
		<dc:creator>clucca</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[SCM Resources]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[version control]]></category>
		<category><![CDATA[release management]]></category>
		<category><![CDATA[SCM]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=2846</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/11/18/software-configuration-management-and-version-control-are-not-the-same/' addthis:title='Software Configuration Management and Version Control Are Not the Same… Trust Me! ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>Did you know that CM systems back in the day were basically people? This is where the term &#8220;check-in&#8221; &#38; &#8220;check-out&#8221; comes from- it refers to the days when there where actual software librarians would record peoples changes and check them in and out like books on disk or punch cards. It’s mind boggling to [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/11/18/software-configuration-management-and-version-control-are-not-the-same/' addthis:title='Software Configuration Management and Version Control Are Not the Same… Trust Me! '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/11/18/software-configuration-management-and-version-control-are-not-the-same/' addthis:title='Software Configuration Management and Version Control Are Not the Same… Trust Me! ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>Did you know that CM systems back in the day were basically people? This is where the term &#8220;check-in&#8221; &amp; &#8220;check-out&#8221; comes from- it refers to the days when there where actual software librarians would record peoples changes and check them in and out like books on disk or punch cards. It’s mind boggling to think of software this way.</p>
<p>If I was to ask software developers today what “software configuration management” was, they would probably say “SCM? Like Subversion?” Incorrect! You need to trust me on this one,<strong> SCM is <em>not </em>the same as a version control system</strong>. Yes, your version control system <em>is</em> an SCM tool (confusing?) but SCM is a broader discipline and technique that encompasses the management of change in software.</p>
<p>The introduction to the IEEE &#8220;Standard for Software Configuration begins with:</p>
<p>SCM constitutes good engineering practice for all software projects, whether phased development, rapid prototyping, or ongoing maintenance. It enhances the reliability and quality of software by:</p>
<ul>
<li>Providing a structure for identifying and controlling documentation, code, interfaces, and databases to support all life cycle phases</li>
<li>Supporting a chosen development/maintenance methodology that fits the requirements, standards, policies, organization, and management philosophy</li>
<li>Producing management and product information concerning the status of baselines, change control, tests, releases, audits, etc.</li>
</ul>
<p>Let&#8217;s be clear- all of the things on this list do <strong>not </strong>fit under the heading of your version control system. Many of them will require practices and policies to maximize your development efforts and methodologies. With version control, release engineers will still have to perform some of these SCM related functions:</p>
<ul>
<li>Merge early and often</li>
<li>Enforce a workflow for development teams to follow</li>
<li>Record and have full visibility into all of the changes that were made</li>
<li>Write build and compiler scripts</li>
<li>Automate builds, deploys and tests</li>
<li>Understand the dependencies between projects and code</li>
<li>Maintain the development environment for a team</li>
<li>Be responsible for the final product going out the door</li>
</ul>
<p>That&#8217;s just the tip of the iceberg. A talented release engineer or SCM expert <em>can</em> do all of those things independently, but his or her job would be a lot easier with SCM tools that can automate and facilitate the necessary practices and processes. (This includes version control, compilers, debuggers, editors, continuous integration machines, automated deploy, and the ITS system.)</p>
<p>At it’s core, SCM answers the question “Somebody did something, how can one reproduce it?” In addition it’s about understanding and establishing relationships among items that are likely to change. It’s a tricky job, not one that’s easily understood. We have to understand the relationships between versioned artifacts, like code, hardware, documents, design models and even directory structures. In addition we have to do all of the necessary things to make those versions valuable to our organization. We have to design process, workflow, automation, build automation, reports and security.</p>
<p>With all of this, don’t tell me that SCM is the same as version control. Trust me on this one!</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/11/18/software-configuration-management-and-version-control-are-not-the-same/' addthis:title='Software Configuration Management and Version Control Are Not the Same… Trust Me! '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2011/11/18/software-configuration-management-and-version-control-are-not-the-same/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Holiday Season is Already Here for Software Development Teams in the Travel Industry</title>
		<link>http://accurev.com/blog/2011/09/30/holiday-software-development/</link>
		<comments>http://accurev.com/blog/2011/09/30/holiday-software-development/#comments</comments>
		<pubDate>Fri, 30 Sep 2011 15:52:11 +0000</pubDate>
		<dc:creator>AccuRev</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[SCM Resources]]></category>
		<category><![CDATA[version control]]></category>
		<category><![CDATA[complex]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[Software Configuration Management]]></category>
		<category><![CDATA[software development teams]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=2800</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/09/30/holiday-software-development/' addthis:title='The Holiday Season is Already Here for Software Development Teams in the Travel Industry ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>The holidays are still several months away, but for software development teams in the travel industry, the “hustle and bustle” of the season is already here. If you think about the ways you make your business or personal travel plans today, you’ll begin to appreciate the increasingly complex software development challenges travel websites present – [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/09/30/holiday-software-development/' addthis:title='The Holiday Season is Already Here for Software Development Teams in the Travel Industry '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/09/30/holiday-software-development/' addthis:title='The Holiday Season is Already Here for Software Development Teams in the Travel Industry ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>The holidays are still several months away, but for software development teams in the travel industry, <a href="http://www.accurev.com/blog/wp-content/uploads/2011/09/Snowflake.jpg"><img class="alignright size-full wp-image-2801" title="Snowflake" src="http://www.accurev.com/blog/wp-content/uploads/2011/09/Snowflake.jpg" alt="Snowflake The Holiday Season is Already Here for Software Development Teams in the Travel Industry" width="270" height="378" /></a>the “hustle and bustle” of the season is already here.</p>
<p>If you think about the ways you make your business or personal travel plans today, you’ll begin to appreciate the increasingly complex software development challenges travel websites present – and the importance of advanced SCM tools.</p>
<p>Just 10 or 15 years ago, many of us were still making travel arrangements through an agent – on the phone or in-person.  We may have gone online to check out a hotel and moved to another site to check on flights – and yet another to rent a car.</p>
<p>Today, travel websites like <a href="http://www.kayak.com/" target="_blank">Kayak</a> and <a href="http://www.orbitz.com/" target="_blank">Orbitz</a> bring together all these consumer options and more – and others include frequent flyer miles, preferred guest points and other information related to our travel plans, often involving outside partners.  All of these variables are changing rapidly and are updated dynamically and in real time on travel websites.  This places greater demands on software development teams – teams that are increasingly distributed across multiple time zones and locations.</p>
<p>Also important to note is that the changes and updates these teams are called on to make are increasingly “business-critical.” A software glitch or a site crash can result in major revenue losses, not to mention the residual consumer frustration and damage to the brand.</p>
<p>More variables, more frequent updates and a more business-critical focus &#8212; now magnify all this during the many times of peak travel or weather-related interruptions and one begins to understand why more advanced SCM tools are required in the travel industry today.</p>
<p>Basic software development tools may have been fine for some organizations in travel &#8212; smaller airlines or hotels with more basic informational web sites that aren’t designed to process high volume reservations and transactions.  But such basic sites are becoming a rarity in the travel industry, leading more and more travel and hospitality businesses to turn to more advanced software development solutions.</p>
<p>AccuRev’s SCM solutions are designed to handle today’s most complex software development challenges, which explains the growth we’re seeing in <a href="http://www.accurev.com/travel" target="_blank">travel and hospitality</a> business customers.</p>
<p>So when the holidays draw near and you go online to book a hotel, schedule a flight or rent a car, you can thank all of those software developers that have been working hard behind the scenes to make sure the site is up and running 24/7.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/09/30/holiday-software-development/' addthis:title='The Holiday Season is Already Here for Software Development Teams in the Travel Industry '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2011/09/30/holiday-software-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Source Control System: What is Behind Software Configuration Management</title>
		<link>http://accurev.com/blog/2011/09/14/source-control-system/</link>
		<comments>http://accurev.com/blog/2011/09/14/source-control-system/#comments</comments>
		<pubDate>Wed, 14 Sep 2011 16:30:23 +0000</pubDate>
		<dc:creator>clucca</dc:creator>
				<category><![CDATA[version control]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[software change and configuration management]]></category>
		<category><![CDATA[source control]]></category>
		<category><![CDATA[source control system]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=2752</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/09/14/source-control-system/' addthis:title='Source Control System: What is Behind Software Configuration Management ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>If you scratch any software configuration management (SCM) system hard enough, what you’ll really find is a source control system. In reality, SCM and source control are basically one and the same. Having truly effective SCM is all about having good source control. The challenge today for any software developer is the rapid pace and [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/09/14/source-control-system/' addthis:title='Source Control System: What is Behind Software Configuration Management '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/09/14/source-control-system/' addthis:title='Source Control System: What is Behind Software Configuration Management ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>If you scratch any <strong>software configuration management (SCM) system</strong> hard enough, what you’ll really find is a source control system. In reality, SCM and source control are basically one and the same. Having truly effective SCM is all about having good source control.</p>
<p>The challenge today for any software developer is the rapid pace and simultaneous development that has dramatically changed the development landscape over the past few years. Throw in the latest Agile development processes, mix in some more traditional methodologies, including XP and waterfall, and now you’ve got a real witches’ brew of development activity that can put a strain on source control.</p>
<p>One of the reasons we’ve developed AccuRev SCM is to provide a sound <a href="http://www.accurev.com/accurev.html ">source control system</a>. Something that enables distributed teams to communicate, collaborate, and integrate code as seamlessly and effortlessly as possible while providing full transparency to all source file changes.</p>
<p>So what exactly are the <strong>benefits of a source control system</strong>? Here are some main ones:</p>
<ul>
<li>Source control enables multiple      development teams to access and share code simultaneously, enabling      effective parallel development</li>
<li>It enables code to be managed and      protected to help ensure file integrity</li>
<li>It provides a way to label, or      version, a chunk of code &#8212; even whole sets of code &#8212; so that a complete      file history can be maintained for faster, more effective development and      revision</li>
<li>It helps with change management      so that new software versions or added functionality can be tracked and      approved</li>
</ul>
<p>As a source control system, <strong>AccuRev SCM</strong> really helps developers by providing process visualization, drag-and-drop SCM automation and issue-based workflow using something we call “streams” – a type of architecture that’s a sort of “intelligent” branching. This type of architecture provides outstanding source control because each stream contains every file for a specific source code configuration. This, in turn, makes branching and merging easier, even in a distributed, parallel development environment. This streamlined architecture enables teams to store their work and test it before sharing it so that merging code becomes a lot easier and safer.</p>
<p>With a good source control system, you’re able to accomplish some pretty amazing stuff. We’ve found that AccuRev SCM can:</p>
<ul>
<li>Improve Agile/hybrid process      project collaboration</li>
<li>Improve software asset reuse</li>
<li>Accelerate time to market</li>
<li>Lower total cost of ownership</li>
<li><strong>Accelerate      the software development process by 30%</strong></li>
</ul>
<p>Efficient, optimized software development starts with solid SCM, and that means a good source control system.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/09/14/source-control-system/' addthis:title='Source Control System: What is Behind Software Configuration Management '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2011/09/14/source-control-system/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Best Practices to Optimize Continuous Integration</title>
		<link>http://accurev.com/blog/2011/06/28/best-practices-continuous-integration/</link>
		<comments>http://accurev.com/blog/2011/06/28/best-practices-continuous-integration/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 15:03:26 +0000</pubDate>
		<dc:creator>AccuRev</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[SCM Resources]]></category>
		<category><![CDATA[automation]]></category>
		<category><![CDATA[CruiseControl]]></category>
		<category><![CDATA[hierarchy]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[Software Configuration Management]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=2670</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/06/28/best-practices-continuous-integration/' addthis:title='Best Practices to Optimize Continuous Integration ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>There are a handful of SCM best practices that can optimize continuous integration.  This post will look at: Establishing a staging and isolation hierarchy Automating builds at all stages in the hierarchy Establishing a staging and isolation hierarchy for optimizing Continuous Integration Proponents of continuous integration commonly suggest branching as little as possible and having [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/06/28/best-practices-continuous-integration/' addthis:title='Best Practices to Optimize Continuous Integration '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/06/28/best-practices-continuous-integration/' addthis:title='Best Practices to Optimize Continuous Integration ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>There are a handful of <a href="http://www.accurev.com/whitepaper/continuous-integration" target="_blank">SCM best practices</a> that can optimize continuous integration.  This post will look at:</p>
<ul>
<li>Establishing a staging and isolation hierarchy</li>
<li>Automating builds at all stages in the hierarchy</li>
</ul>
<h2><strong><span style="text-decoration: underline;">Establishing a staging and isolation hierarchy for optimizing Continuous Integration</span></strong></h2>
<p>Proponents of continuous integration commonly suggest branching as little as possible and having developers work directly from the mainline as much as possible. However, this approach has several difficulties:</p>
<ul>
<li>It puts the stability of the mainline at risk</li>
<li>It presupposes that traditional legacy branches are the only available isolation mechanism</li>
<li>It decreases the flexibility and agility required for fast iterative development</li>
</ul>
<p>With modern SCM systems, a better approach is to implement a staging and isolation hierarchy for the development process. A staging and isolation hierarchy uses objects in the SCM system to represent the dependencies between development groups and process steps. For example, you may wish to model the following teams and activities:</p>
<ul>
<li>Release engineering</li>
<li>Quality assurance</li>
<li>Product engineering</li>
<li>Component engineering</li>
</ul>
<p>Each team or activity is assigned the equivalent of a private workspace (variously called “<a href="http://www.accurev.com/streambrowser.html" target="_blank">streams</a>” or “branches” depending on the SCM system). Each team then receives the same benefits of private workspaces that individual developers receive.  With a staging hierarchy, changes move from less stable configurations to more stable as they are tested and deemed “good” for the next level. This allows the code to be stabilized as it gets ready for release without developer downtime. It also allows additional separation for each team if needed, so that the team’s changes can be integrated and tested before the components are integrated together.</p>
<p><strong><em> </em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em> </em></strong></p>
<p><strong><em><a href="http://www.accurev.com/blog/wp-content/uploads/2011/06/Topaz-Post-3.png"><img class="aligncenter size-full wp-image-2671" title="Topaz Post 3" src="http://www.accurev.com/blog/wp-content/uploads/2011/06/Topaz-Post-3.png" alt="Topaz Post 3 Best Practices to Optimize Continuous Integration" width="430" height="294" /></a><br />
</em></strong></p>
<p>In this figure, there are four development teams as well as an area for accepting third-party code drops.  The teams are <a href="http://www.accurev.com/geographically-distributed-development.html" target="_blank">located in different geographical areas</a>. The hierarchy represents the normal flow of changes through development from stage to stage. In the example of the above figure, changes provided by the GUI product engineering team in India flow from individual developer workspaces (not shown for brevity) to the GUI stage, where they can be continuously integrated and tested. Mature changes then flow to the UI_int stage and on to the QA and Release (Rel) stages, again being subject to continuous integration and testing at each stage. The web development team in Austin picks up well-tested changes from the UI_int stage and uses them as the basis of their development work; when the web changes are mature they can be pushed up the hierarchy and subject to broader testing in the UI_int, QA and Rel stages.</p>
<p>Using a development hierarchy provides more opportunities for check-pointing. Every change introduced into the system is a potential source of failure, and thus a potential checkpoint. If a change proves to be unstable, you can return both the source stage and the destination stage back to a previous checkpoint. By contrast, mainline development only offers you a single opportunity for check-pointing, specifically, the state of the main codeline itself. Unless your development process includes “freezing” the mainline for a long enough period to build, test and otherwise validate, the chances of isolating and check-pointing at an appropriately fine level of code granularity are slim, making any available checkpoints stale and of limited utility.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<h2><strong><span style="text-decoration: underline;">Automating builds at all stages in the hierarchy</span></strong></h2>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p>In order to give developers prompt feedback about the changes submitted, the code must be built frequently, ideally several times per day. A continuous integration server such as CruiseControl, CruiseControl.NET or Draco.NET can be employed to automate this process. The continuous integration server periodically polls the SCM system for changes, populates the changes to the build server, initiates the build process, and reports the results of the build and unit tests.  It is important to note here that the continuous integration server utilizes the existing build scripts and build environment to execute the build. For example, if make is used to compile and link components written in C, then the continuous integration server will call the makefile to initiate the build process.  Because the continuous integration system uses the existing build, it is important for development groups to devote time and effort to:</p>
<ul>
<li>Making the build as fast as possible,</li>
<li>Building automated unit tests and</li>
<li>Including unit tests as part of the build process.</li>
</ul>
<p>Spending time on these items, even if it involves some rework of the build system to make it more compatible with a continuous integration environment, will improve not only the build process but the overall quality of the software release.</p>
<p>When utilizing continuous integration, it is crucial to communicate the results of the builds to the entire development team. <a href="http://www.accurev.com/continuous-integration.html" target="_blank">Continuous integration </a>system planners should consider a scalable communications method such as e-mail notification or an internal website to display build results.</p>
<p>Continuous integration servers such as CruiseControl come with built-in web reporting that can be easily customized, so that build results can be displayed on LCD panels in common areas at geographically dispersed locations. In this way, team members can easily see and respond to the build results and reduce the “fix latency” often encountered with nightly or weekly integration build approaches.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/06/28/best-practices-continuous-integration/' addthis:title='Best Practices to Optimize Continuous Integration '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2011/06/28/best-practices-continuous-integration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SCM Best Practices and Continuous Integration Go Hand-in-Hand</title>
		<link>http://accurev.com/blog/2011/06/15/scm-best-practices/</link>
		<comments>http://accurev.com/blog/2011/06/15/scm-best-practices/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 15:00:49 +0000</pubDate>
		<dc:creator>AccuRev</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[AgileCycle]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[Enterprise Agile]]></category>
		<category><![CDATA[SCM Resources]]></category>
		<category><![CDATA[configuration]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[manifesto]]></category>
		<category><![CDATA[private workspaces]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[source code]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=2632</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/06/15/scm-best-practices/' addthis:title='SCM Best Practices and Continuous Integration Go Hand-in-Hand ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>There’s no denying that this has certainly been the Agile decade for the software development industry.  It’s evident all around us in this tenth year since the Agile Manifesto was created. Most companies and development organizations today have implemented some form or aspect of Agile methodology into their software development processes. Whether you’re aiming for [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/06/15/scm-best-practices/' addthis:title='SCM Best Practices and Continuous Integration Go Hand-in-Hand '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/06/15/scm-best-practices/' addthis:title='SCM Best Practices and Continuous Integration Go Hand-in-Hand ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>There’s no denying that this has certainly been the Agile decade for the software development industry.  It’s evident all around us in this tenth year since the Agile Manifesto was created. Most companies and development organizations today have implemented some form or aspect of Agile methodology into their software development processes. Whether you’re aiming for pure Agile or a mixed/hybrid approach, proven best practices in all phases of the software development lifecycle are crucial to success.</p>
<p>This is especially true in the case of continuous integration, one of the foundational aspects of the Agile methodology. The concept of <a href="http://www.martinfowler.com/articles/continuousIntegration.html">continuous integration, as defined by Martin Fowler</a>, is “a fully automated and reproducible build, including testing, that runs many times a day.  This allows each developer to integrate daily, thus reducing integration problems.”</p>
<p>With this approach, developers can work more closely in parallel while identify problems and debugging on the fly, accelerating the development process and improving the quality of the finished product.  The benefits of <a href="http://www.accurev.com/continuous-integration.html">continuous integration</a> are tremendous, but can quickly be eradicated if <a href="http://www.accurev.com/whitepaper/bestpractices">software configuration management (SCM)</a> best practices are not carefully followed.</p>
<p>There are a handful of SCM best practices that can optimize continuous integration.   Let’s start with a quick look at the first two:</p>
<ul>
<li>Using an SCM system to store and version all source code</li>
<li>Utilizing private developer workspaces</li>
</ul>
<h2>Best Practice: Using an SCM System to Store and Version all Source Code</h2>
<p>Parallel development and distributed software teams can make tracking changes a daunting task, especially with the frequent changes that occur when using continuous integration methods.</p>
<p>For this reason, it is important to employ a software configuration management (SCM) system to strictly version changes to the code base. In addition to versioning source code, everything needed to build the system should be placed under version control, including the following:</p>
<ul>
<li>Third-party libraries</li>
<li>Properties files</li>
<li>Database schema</li>
<li>Test scripts</li>
<li>Install scripts</li>
</ul>
<p>All developers should have at least read-only access to all files needed for the build and should obtain all such files directly from the SCM system. This approach ensures that developers are working with the latest build environment, and is preferable to the common but error-prone practice of placing such files on a shared file server.</p>
<p>To effectively implement continuous integration, all development groups should work from the same central source code repository so that the latest changes from other developers are easily and immediately available. <strong><em> </em></strong></p>
<p><span style="text-decoration: underline;"> </span></p>
<h2>Best Practice: Utilizing Private Developer Workspaces</h2>
<p>In order to fully realize the benefits of continuous integration, software development organizations need to ensure that developers can remain productive regardless of the overall state and stability of the project source code. To achieve this, <a href="http://www.accurev.com/private-versioning.html">private workspaces</a> that give developers full SCM capability should be used. Private workspaces enable developers to</p>
<ul>
<li>work in isolation</li>
<li>revert to known “good” states when needed</li>
<li>checkpoint their changes</li>
<li>share only mature, well-tested code with other team members</li>
</ul>
<p>The benefits of isolation are bidirectional—it protects developers from incoming changes, and protects the shared code configuration from incomplete or incorrect changes from any one developer. By creating private workspaces, developers receive all the benefits of SCM for their personal use, including the ability to revert to a previous state, viewing and tracking of changes between software configurations, and setting aside changes to begin work on a different task.</p>
<p>Once a new known good state is reached (for example, when a developer completes engineering and testing work on a feature), developers should checkpoint their work, typically by “checking in” or “keeping” the local changes in the SCM system. The checkpoint ensures that the developer’s work is safe on the SCM server and that the checkpoint can be revisited at any time. However, since the changes have not been shared, other developers and teams are not affected.</p>
<p>When a developer breaks isolation and decides to share a code change, he or she is essentially making an assertion that the change has reached a higher level of maturity. This, coupled with the use of local developer builds, helps to ensure that only mature, well-tested code is passed on to the rest of the development team, a primary benefit of continuous integration.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/06/15/scm-best-practices/' addthis:title='SCM Best Practices and Continuous Integration Go Hand-in-Hand '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2011/06/15/scm-best-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configuration Management &amp; Customer Specials Shouldn&#8217;t Be Difficult</title>
		<link>http://accurev.com/blog/2011/05/12/configuration-management-custspec/</link>
		<comments>http://accurev.com/blog/2011/05/12/configuration-management-custspec/#comments</comments>
		<pubDate>Thu, 12 May 2011 15:29:14 +0000</pubDate>
		<dc:creator>jtalbott</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[change packages]]></category>
		<category><![CDATA[SCM Resources]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[branching]]></category>
		<category><![CDATA[configuration management]]></category>
		<category><![CDATA[drag and drop]]></category>
		<category><![CDATA[merging]]></category>
		<category><![CDATA[SCM]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=2588</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/05/12/configuration-management-custspec/' addthis:title='Configuration Management &#38; Customer Specials Shouldn&#8217;t Be Difficult ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>In the world of software development, or any product, for that matter, one of the things you may frequently be asked to do is to create a &#8220;special version&#8221; for a specific consumer.  This version might be almost identical to something you have already created, but with a few minor tweaks, or it might need [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/05/12/configuration-management-custspec/' addthis:title='Configuration Management &#38; Customer Specials Shouldn&#8217;t Be Difficult '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/05/12/configuration-management-custspec/' addthis:title='Configuration Management &amp; Customer Specials Shouldn&#8217;t Be Difficult ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>In the world of software development, or any product, for that matter, one of the things you may frequently be asked to do is to create a &#8220;special version&#8221; for a specific consumer.  This version might be almost identical to something you have already created, but with a few minor tweaks, or it might need to share some of the same core characteristics but have critical deviations in certain areas.</p>
<p>For software development &#8211; and the correspondingly essential <a href="http://www.accurev.com/software-configuration-management.html" target="_blank">Configuration Management</a> of that software &#8211; I&#8217;ve seen how this can be one of the more challenging aspects of the job.  It&#8217;s not actually the creation of the &#8220;customer-special&#8221; that&#8217;s difficult though; in fact this is usually fairly trivial.  Traditional software configuration management, or SCM, systems use the branch-per-variant approach typically, and everyone knows that branching is easy.  The hard part comes when you need to manage that customer release in an ongoing fashion.  How do you upgrade them to a newer release of your product?  They probably won&#8217;t want to remain on their baseline version forever.  They&#8217;ll want to take advantage of new features and fixes, while still retaining their unique aspects.  So this brings you to&#8230; oh yeah, the actual _merge_ part!  That&#8217;s where it gets hard.  Reliably merging changes from one variant to another is a manual, error-prone, labor-intensive process.  Now I remember!  That&#8217;s why we try to limit branching.</p>
<h2>Configuration Management with Customer Specials</h2>
<p>Well, all of that messy, cumbersome, and problematic stuff in traditional configuration management systems utilizes a traditional architecture of branches.  Fortunately, you use <a href="http://www.accurev.com/" target="_blank">AccuRev</a>, which completely removes this obstruction and makes the management of customer specials not only easy, but elegant as well.  Let&#8217;s consider the following purely mythical scenario.  A company called &#8216;Stadiums&#8217; that makes Ballparks for general use released <strong>Stadiums_Ballpark_2.0</strong> a while back.  Stadiums had a customer who wanted a custom version of the Ballpark that had some significant differences.  For example, they had special contours to the outfield, a truly unique left-field wall, and a good old fashioned mechanical scoreboard.  Those were the changes that needed to be made which deviated from the core Ballpark.  So Stadiums made these changes in a dedicated stream, associated their work with issue records using <a href="http://www.accurev.com/change-packages.html">AccuRev Change Packages</a>, and cut the <strong>Stadiums_Ballpark_Fenway_1911</strong> snapshot:</p>
<p><a href="http://www.accurev.com/blog/wp-content/uploads/2011/05/customer_image1.jpg"><img class="alignnone size-full wp-image-2592" title="customer-special-1" src="http://www.accurev.com/blog/wp-content/uploads/2011/05/customer_image1.jpg" alt="customer image1 Configuration Management & Customer Specials Shouldnt Be Difficult" width="797" height="446" /></a></p>
<p><a href="http://www.accurev.com/blog/wp-content/uploads/2011/05/customer_image2.jpg"><img class="alignnone size-full wp-image-2593" title="customer-special-2" src="http://www.accurev.com/blog/wp-content/uploads/2011/05/customer_image2.jpg" alt="customer image2 Configuration Management & Customer Specials Shouldnt Be Difficult" width="770" height="186" /></a></p>
<p>Fast forward a few years.  It&#8217;s been a while and there have been numerous advances in Stadiums&#8217; technology.  Ballpark_4.0 has been released.  The Fenway people don&#8217;t want to purchase a brand new product, but they do want to upgrade. <em> This is where it would get really complicated in a different configuration management tool.</em> To boil it down, Stadiums would have to figure out what changes were made for Fenway back then, what changes have happened in their ongoing development, and intelligently merge these together.  They&#8217;d probably still want to maintain traceability and reproducibility of the &#8220;older&#8221; version of Fenway.  Some of the other tools out there make this near impossible, some slighly less onerous, but <strong>none</strong> of them make it simple.</p>
<p>Enter AccuRev.  Here&#8217;s what you do.  Drag the <strong>Stadiums_Ballpark_Fenway</strong> stream and drop it onto <strong>Stadiums_Ballpark_4.0</strong>.  That&#8217;s it, you&#8217;re almost done!  Because of Inheritance capabilities in AccuRev <a href="http://www.accurev.com/streambrowser.html">streams</a>, all the content of <strong>Stadiums_Ballpark_4.0</strong> will flow down into the <strong>_Fenway</strong> stream&#8230; except items that are in conflict.  Those items will be identified by AccuRev both visually and with status flags, and you will be able to deal with them quickly and appropriately.</p>
<p><a href="http://www.accurev.com/blog/wp-content/uploads/2011/05/customer_image3.jpg"><img class="alignnone size-full wp-image-2594" title="customer-special-3" src="http://www.accurev.com/blog/wp-content/uploads/2011/05/customer_image3.jpg" alt="customer image3 Configuration Management & Customer Specials Shouldnt Be Difficult" width="797" height="446" /></a></p>
<p>In our example, Stadiums developer llucchino has worked on the greenMonster.wall file and replaced class Netting with class monsterSeats.  So this file automatically becomes (overlap) in the <strong>_Fenway</strong> stream and can be merged.  There are more teams in the league so the scoreboard.mechanical file has been updated to change various properties.  This also is in (overlap) status.  But the contours of the outfield haven&#8217;t been updated at all, so despite that file being a custom modification for <strong>_Fenway</strong>, AccuRev intelligently knows that it doesn&#8217;t even need to be <a href="http://www.accurev.com/merge-tracking.html">merged</a>.  All other new content was automatically inherited by the stream, and so literally nothing needs to be done by the development team.</p>
<p>It&#8217;s that simple.  You&#8217;re done, go ahead and release <strong>Stadiums_Ballpark_Fenway_2011</strong>.  Another happy customer and it didn&#8217;t set you back many man months.  Can your configuration management tool do this?</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/05/12/configuration-management-custspec/' addthis:title='Configuration Management &amp; Customer Specials Shouldn&#8217;t Be Difficult '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2011/05/12/configuration-management-custspec/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>From Merge Hell to Merge Master</title>
		<link>http://accurev.com/blog/2011/03/23/from-merge-hell-to-merge-master/</link>
		<comments>http://accurev.com/blog/2011/03/23/from-merge-hell-to-merge-master/#comments</comments>
		<pubDate>Wed, 23 Mar 2011 15:33:36 +0000</pubDate>
		<dc:creator>jsherwood</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[change packages]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[SCM Resources]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[version control]]></category>
		<category><![CDATA[branching and merging]]></category>
		<category><![CDATA[change management]]></category>
		<category><![CDATA[SCCM]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.accurev.com/blog/?p=2576</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/03/23/from-merge-hell-to-merge-master/' addthis:title='From Merge Hell to Merge Master ' ><a href="//addthis.com/bookmark.php?v=250&#38;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">&#124;</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div>Are you frequently called on to perform the daunting task of &#8216;the merge&#8217;? Does tension mount and do groans grow louder when it&#8217;s time for a merge?  Are only a select few are willing to stand up and do the work? Maybe these stages describe your merge process: Denial: It&#8217;s never going to work (in [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/03/23/from-merge-hell-to-merge-master/' addthis:title='From Merge Hell to Merge Master '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/03/23/from-merge-hell-to-merge-master/' addthis:title='From Merge Hell to Merge Master ' ><a href="//addthis.com/bookmark.php?v=250&amp;username=xa-4d2b47597ad291fb" class="addthis_button_compact">Share</a><span class="addthis_separator">|</span><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a></div><p>Are you frequently called on to perform the daunting task of &#8216;the merge&#8217;? Does tension mount and do groans grow louder when it&#8217;s time for a merge?  Are only a select few are willing to stand up and do the work?</p>
<p>Maybe these stages describe your merge process:</p>
<ol>
<li><strong>Denial</strong>: It&#8217;s never going to work (in a timely manner).</li>
<li><strong>Anger</strong>: Why do <em>I</em> have to do the merge?</li>
<li><strong>Bargaining</strong>: I’ll work on maintenance and support if I don’t have to do the merge.</li>
<li><strong>Depression</strong>: How many compiler errors? Why won&#8217;t the jsp work with firefox?</li>
<li><strong>Acceptance</strong>: Not really, it&#8217;s compiling and (mostly) passing tests.</li>
</ol>
<p>Before we try to get you through the 5 stages of merge, let&#8217;s a take a look at divergence, the cause of a complicated merge.</p>
<h2><strong>Converging Divergence</strong></h2>
<p>There are lots of reasons for divergence, and as many for merge product lines back together.</p>
<p>Maybe you&#8217;re delivering functionality to specific customers, creating customization and personalization of websites, internationalizing your product, even moving from Windows to Linux platforms. So what happens? These areas diverge, developers refactor code, and the product lines look very, very different over time. Sure, you try to propagate changes across the product lines, but each implementation is slightly different. Eventually you realize this is a maintenance nightmare, and some shared areas should be brought back in line (if not the whole product line moving to a single source).</p>
<p>Now comes the hard part. A select few of your developers have to start piecing the code back together. Determining what changes are acceptable, reviewing the functionality, and hopefully getting the appropriate test coverage to verify that the desired changes have been brought back into a single (or at least cleaner) product line. Here&#8217;s where tools really shine (or falter).</p>
<p>Now, I consider myself pretty experienced in the merge department. I&#8217;ve worked on a number of merges of different sizes, dealt with multiple languages (English/Italian), and even migrated to different platforms (Moving from Windows to Macintosh).  Sometimes, I found, tools were a complete hindrance- I remember back in the day, using PVCS or CVS was every man for himself. You just got it working, never mind worrying about who made what code decision, and hopefully extensive tests identified the problems. More modern tools, AccuRev in particular, give you another dimension with merge that I find to be an essential.</p>
<h2><strong>The Merge Master</strong></h2>
<p>AccuRev version tracking, and the changes it tracks (content, name, removal) really help in hunting down the straightforward changes that can result in truly subtle changes in product behavior. Simply knowing that files have been removed in one product, and merging those changes over with a click of a button can eliminate behavior that is hard to determine, especially when the developer doing the merge had a reasonable belief that the files may exist.</p>
<p>Even better, large or midsize merges, can be easily reviewed, grouped into areas of the code and dealt with in a manageable manner. I performed a merge that merged internationalization changes into a product at AccuRev. <strong><em>There were over 7000 files that were altered, added or removed that needed to be managed.</em></strong></p>
<p>Simply grouping the files by directory structure quickly identified which were doc, help, client, java, etc. Then these areas could be dealt with by developers in the specific areas. Further, because AccuRev performs simple <a href="http://www.accurev.com/merge-tracking.html">merges </a>quickly, I was able to perform the initial merges in these areas without having a strong need to understand them, and leave the complex changes to those who specialized in particular areas. This further reduced the amount of effort (and pain) that other team members experienced.</p>
<p>In this 7000+ file example, only about 400 files actually required more specialized investigation. And of the 400, only about 50 had truly complex changes where both sides of the merge made what looked like contrary decisions. Here is another place where AccuRev shines. <em>By looking at the changes made at different points in each of the product lines, and working with <a href="http://www.accurev.com/change-packages.html">change packages</a> that described what the developers where trying to accomplish, I was able to make intelligent decisions about how the code should integrate, instead of just picking &#8216;he who changed it last&#8217;.</em></p>
<p>The two product lines in this case had diverged for about 9 months, and had about 10 developers making changes in each product line. Even with the amount of changes that occurred over this time period, it only took a single developer about <em>2 weeks</em> time to bring the two product lines together. It took only a couple of <em>days </em>to complete the initial code process, walking through the changes and picking (via the AccuRev GUI) which of the changes to take, and editing inline where it was obvious.</p>
<p>During the first week, we were able to finish digging around developer changes via the AccuRev <a href="http://www.accurev.com/version-control.html">version browser </a>in order to help resolve initial compilation failures. This work brought the product to the point where it was compiling on multiple platforms (which is usually even a problem with nightly builds). After another week of going through the validation and user tests, the merge was stable enough to be considered the baseline for the next release. Of course development had already occurred during the two weeks that the merge process took, but with the version tracking <a href="http://www.accurev.com/">AccuRev</a> performs with merges, it became almost trivial to bring in the new changes- within 1 day they were validated and ready to be the new baseline.</p>
<p>Sounds like acceptance to me.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2011/03/23/from-merge-hell-to-merge-master/' addthis:title='From Merge Hell to Merge Master '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://accurev.com/blog/2011/03/23/from-merge-hell-to-merge-master/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

