<?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:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Software Configuration Management</title>
	<atom:link href="http://blog.accurev.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.accurev.com</link>
	<description>Streamlining Change for Geographically Distributed, Parallel and Agile Development</description>
	<pubDate>Fri, 18 Jul 2008 18:30:07 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<language>en</language>
			<item>
		<title>How We Integrated our Offshore Development Team</title>
		<link>http://blog.accurev.com/2008/07/18/how-we-integrated-our-offshore-development-team/</link>
		<comments>http://blog.accurev.com/2008/07/18/how-we-integrated-our-offshore-development-team/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 17:54:48 +0000</pubDate>
		<dc:creator>Tahir</dc:creator>
		
		<category><![CDATA[AccuRev]]></category>

		<category><![CDATA[Best Practices]]></category>

		<category><![CDATA[Customer Guest Blogs]]></category>

		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Bangalore development]]></category>

		<category><![CDATA[Offshore development]]></category>

		<category><![CDATA[software release process]]></category>

		<category><![CDATA[UK-based development]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/?p=232</guid>
		<description><![CDATA[by Tahir Hussein, Alterian
This diagram shows one key aspect of our development process i.e. 3rd Line Support. It is critical to our operations because we support anywhere from the last 3 to 5 release steams. This includes monthly patch releases which address key customer defects and enhancements.
Prior to 2006 our development operation was UK based [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>by <strong><span style="font-size:x-small;color:#000080;font-family:Arial;"><span style="font-weight:bold;font-size:10pt;color:#000080;font-family:Arial;">Tahir Hussein, Alterian</span></span></strong></p>
<p>This diagram shows one key aspect of our development process i.e. 3<sup>rd</sup> Line Support. It is critical to our operations because we support anywhere from the last 3 to 5 release steams. This includes monthly patch releases which address key customer defects and enhancements.</p>
<div id="attachment_236" class="wp-caption alignleft" style="width: 214px"><a href="http://accurev.files.wordpress.com/2008/07/mediasurface_flowchart.jpg"><img class="size-medium wp-image-236" style="border:7px;" src="http://accurev.files.wordpress.com/2008/07/mediasurface_flowchart.jpg?w=204&h=300" alt="3rd Line Support" width="204" height="300" /></a><p class="wp-caption-text">3rd Line Support</p></div>
<p>Prior to 2006 our development operation was UK based (in a single location). Everything was straight forward! However, when we opened up a development centre in Bangalore, that situation changed. Once we had recruited and trained the developers it was time to get them using our SCM tool, Serena Dimensions. This has served us well since 2000 but the performance of the connection to Bangalore meant that the PC and Web clients were totally unusable for shared development work e.g.</p>
<p><strong>* </strong>It was taking over 5 minutes for them to browse change documents</p>
<p><strong>* </strong>Editing the attributes e.g. to specify the fix times etc was taking around 10 minutes</p>
<p><strong>*</strong> Making any kind of source code changes on a change document, especially one with a lot of additional related items or change documents was even longer.</p>
<p><strong>* </strong>To fetch all 9000 items from the repository for a sandbox development and build was an overnight job (if it worked at all!)</p>
<p>Hence we had to put our thinking caps on and come up with another solution.</p>
<p>We tried making use of Subversion and associated tools and initially this looked very promising. However, when we started putting our Development processes on top of Subversion, in particular “Branching” and “Merging”, it became apparent that the underlying SVN functionality was not going to be mature enough for the tools to be available to cater for this. The solution we were looking at was Subversion running in UK and Bangalore, with the replication of data taken care of by a product called WANdisco and the Application Lifecycle management by Polarion. We had a number of meetings and discussions with all of the above parties, including the Subversion developers, who gave us an insight into the future plans. In the end the overall solution was not going to be elegant and satisfy all our needs. We carried on looking and eventually came across AccuRev.</p>
<p>At first we were reticent to go down this route as it was a proprietary system. However, when we were demoed the system by the AccuRev guys it seemed to fit in exactly with what we were looking for. Even with the addition of merge tracking in SVN, AccuRev is still head and shoulders above with its merge, change and namespace tracking.</p>
<p>We then obtained a demo license and spent a month evaluating the product against our list of requirements. The sort of checks we carried out were:</p>
<p><strong>* </strong>How long does it take to create something e.g. stream, workspace in the UK and see it reflected in Bangalore and vice versa</p>
<p><strong>*</strong> Can you create/delete hundreds or steams without affecting the system performance</p>
<p><strong>* </strong>The critical one of can a number of developers on the UK and Bangalore work together on a set of changes in parallel and easily have those merged back together.</p>
<p>The whole thing ran so smoothly that we could no longer delay the decision to purchase. Last year around this time we purchased the required licences and then started the process of moving the development over to AccuRev.</p>
<p>So, where are we currently?</p>
<p>The intention has been to move over to using AccuRev and Jira combination (as Serena Dimensions covers both Issue Tracking and Source Control). However, as we have a limited number of resources available, and the fact that we require quite a lot of work to implement the appropriate workflow and associated build process, we have not had the time to do this. We are currently using AccuRev for ALL development and 3<sup>rd</sup> Line support work but still use Dimensions for the Issue tracking and build process. Given that none of the developers in Bangalore or UK are impacted by this and can get on with their day-day work then I am cool with this. The only person affected is me as I have an additional step to perform by moving changes between AccuRev and Dimensions and vice-versa. I am confident that in the near future we will fully move onto the AccuRev/JIRA system and gain even more benefits.</p>
<p>I hope this will be of help to others and I would be more than happy to answer specific queries.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/accurev.wordpress.com/232/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/accurev.wordpress.com/232/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/accurev.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/accurev.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/accurev.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/accurev.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/accurev.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/accurev.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/accurev.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/accurev.wordpress.com/232/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/accurev.wordpress.com/232/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/accurev.wordpress.com/232/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.accurev.com&blog=899576&post=232&subd=accurev&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.accurev.com/2008/07/18/how-we-integrated-our-offshore-development-team/feed/</wfw:commentRss>
	
		<media:content url="http://accurev.files.wordpress.com/2008/07/mediasurface_flowchart.jpg?w=204" medium="image">
			<media:title type="html">3rd Line Support</media:title>
		</media:content>
	</item>
		<item>
		<title>Why Traceability Matters</title>
		<link>http://blog.accurev.com/2008/07/16/why-traceability-matters/</link>
		<comments>http://blog.accurev.com/2008/07/16/why-traceability-matters/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 14:02:31 +0000</pubDate>
		<dc:creator>Matthew D. Laudato</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Best Practices]]></category>

		<category><![CDATA[AccuRev]]></category>

		<category><![CDATA[metrics]]></category>

		<category><![CDATA[process metrics]]></category>

		<category><![CDATA[requirements traceability]]></category>

		<category><![CDATA[SCM traceability]]></category>

		<category><![CDATA[software process management]]></category>

		<category><![CDATA[traceability]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/?p=224</guid>
		<description><![CDATA[In a recent blog post on CodeSqueeze (http://www.codesqueeze.com/the-blame-game-how-necessary-is-traceability/) the subject of traceability and its utility in software project management was discussed. This post is a response to the author&#8217;s points on traceability. While I agree with the author on some points (especially that traceability can be used proactively), I believe that traceability has much greater [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p class="MsoNormal"><span style="font-size:x-small;font-family:Arial;"><span style="font-size:10pt;font-family:Arial;"><span style="color:#000000;">In a recent blog post on CodeSqueeze (</span><a title="http://www.codesqueeze.com/the-blame-game-how-necessary-is-traceability/" href="http://www.codesqueeze.com/the-blame-game-how-necessary-is-traceability/" target="_blank"><span style="color:#000000;">http://www.codesqueeze.com/the-blame-game-how-necessary-is-traceability/</span></a><span style="color:#000000;">) the subject of traceability and its utility in software project management was discussed. This post is a response to the author&#8217;s points on traceability. While I agree with the author on some points (especially that traceability can be used proactively), I believe that traceability has much greater utility in the development process and in the management of software projects.</span></span></span></p>
<p class="MsoNormal"><span style="font-size:x-small;font-family:Arial;"><span style="font-size:10pt;color:#000000;font-family:Arial;">Traceability, both at the code and issue levels, provides you with fundamental process metrics. By removing these metrics, you lose objective insight into the state of the project. Using such metrics for a blame game may indeed be a sign of poor project management, but not having the metrics at your disposal is a sign that you are not controlling the process, and that puts your project at risk. I can&#8217;t imagine other engineering disciplines such as chemical engineering even having this conversation - you measure (almost) everything that can be measured, and then determine which metrics are most useful in improving the process. The best engineers on your team will welcome objective measurements into their code - like having the fastest time at the racetrack, doing well by a set a metrics that are not easily manipulated is something to be proud of, and something for more junior engineers to aspire to.</span></span></p>
<p class="MsoNormal"><span style="font-size:x-small;font-family:Arial;"><span style="font-size:10pt;color:#000000;font-family:Arial;">As for feature traceability, some of the comments on the blog point in the right direction - for example, that in regulated industries, such traceability is a requirement. &#8216;We all trust each other&#8217; doesn&#8217;t fly well with the FDA or DOD. But even beyond the regulated industries, traceability and related metrics answer questions that are too basic to leave unanswered:</span></span></p>
<p class="MsoNormal"><span style="font-size:x-small;font-family:Arial;"><span style="font-size:10pt;color:#000000;font-family:Arial;">- what requirement did this code satisfy?</span></span></p>
<p class="MsoNormal"><span style="font-size:x-small;font-family:Arial;"><span style="font-size:10pt;color:#000000;font-family:Arial;">- what ancillary issues (bugs, related requirements) is this code associated with?</span></span></p>
<p class="MsoNormal"><span style="font-size:x-small;font-family:Arial;"><span style="font-size:10pt;color:#000000;font-family:Arial;">- how long did it take compared to the initial estimate?</span></span></p>
<p class="MsoNormal"><span style="font-size:x-small;font-family:Arial;"><span style="font-size:10pt;color:#000000;font-family:Arial;">- how often since the fix was marked as &#8216;complete&#8217; did the code change?</span></span></p>
<p class="MsoNormal"><span style="font-size:x-small;font-family:Arial;"><span style="font-size:10pt;color:#000000;font-family:Arial;">I could (and just might) write another blog post on why these metrics are interesting and essential to software process management, but for now I leave it to commenters to elaborate.</span></span></p>
<p class="MsoNormal"><span style="color:#000000;"><span style="font-size:x-small;font-family:Arial;"><span style="font-size:10pt;font-family:Arial;">To the specific points that the author makes, lets look at them in turn. <strong>The author&#8217;s orginal points and counterpoints are in italics.</strong></span></span></span></p>
<ul type="disc">
<li class="MsoNormal"><em></em><span style="color:#000000;"><em><span style="font-size:x-small;font-family:Arial;"><span style="font-size:10pt;font-family:Arial;">Provides visibility of per person velocity - Visibility can occur during daily stand ups and weekly powerdowns.</span></span></em><span style="font-size:x-small;font-family:Arial;"><span style="font-size:10pt;font-family:Arial;">Sure it can, but that implies among other things that you are doing such standups. What if you are using an alternate process to coordinate the efforts of large, widely distributed teams? At some level, independent of your specific process, you need to be able to look into your SCM system and answer questions of who is doing what and why. Also, (and this touches on the second issue of accountability) not all developers communicate in the same way, so even if you are doing standups, as a manager you need objective facts to correlate with the verbal and written communications of your team.</span></span></span></li>
</ul>
<ul type="disc">
<li class="MsoNormal"><em></em><span style="color:#000000;"><em><span style="font-size:x-small;font-family:Arial;"><span style="font-size:10pt;font-family:Arial;">Creates a sense of accountability - Why the hell do you have people on your team that you don’t trust?</span></span></em><span style="font-size:x-small;font-family:Arial;"><span style="font-size:10pt;font-family:Arial;">  Trust doesn&#8217;t happen all at once. The basic principle of managing people, whether they are shipping clerks or software engineers is &#8216;trust but verify&#8217;. Once a person has established a track record of reliable communications that are consistent with the objective (and hopefully, automated) metrics, you might reduce the frequency of how often you check them against the metrics. But periodic checking is essential - if a previously reliable engineer has for some reason fallen off the tracks, they may be reluctant to admit it, or they may not even be aware of it. A properly constructed metric that is trending in the wrong direction will give you clue that there is an issue to be addressed with this engineer.</span></span></span></li>
</ul>
<ul type="disc">
<li class="MsoNormal"><em></em><span style="color:#000000;"><em><span style="font-size:x-small;font-family:Arial;"><span style="font-size:10pt;font-family:Arial;">Allows for possible learning opportunities - Either the bug is a bug (and no real lesson is to be learned), or senior developers did not properly guide less experienced devs through a design problem.</span></span></em><span style="font-size:x-small;font-family:Arial;"><span style="font-size:10pt;font-family:Arial;"> All bugs teach you something. The latter case that the author mentions is certainly one lesson, but it implies that senior developers don&#8217;t write buggy code or are somehow immune to design problems (or design-to-implementation translation problems) of their own. This seems unlikely. Most of the best engineers that I&#8217;ve worked with will admit to some whopper bugs - many written well after they had earned the title of &#8217;senior engineer&#8217; or &#8216;chief cook and bottlewasher&#8217;, or whatever. What a bug tells you is that you have code that needs attention, independent of whether it dropped out of a build process or was discovered by the janitor. The overhead for recording a bug, commenting on it and connecting it to the source code change that resolves it is minimal in a well-designed and well-tooled development process, so for a small amount of effort you get the benefit of a window into your code, its failings, and your process. Seems like a low price to pay for such potentially valuable information.</span></span></span></li>
</ul>
<p class="MsoNormal"><span style="font-size:x-small;font-family:Arial;"><span style="font-size:10pt;font-family:Arial;"><span style="color:#000000;">I&#8217;ll admit that traceability and metrics are on my mind often (see for example, my </span><a title="AccuRev-Rally integration" href="http://blog.accurev.com/2008/06/11/agile-requirements-traceability-with-accurev-and-rally/" target="_blank"><span style="color:#000000;">prior post on the AccuRev-Rally integration</span></a><span style="color:#000000;"> and how it assists in agile requirements traceability). Maybe it&#8217;s because my favorite toys as a kid were ruler, compass and slide rule and I just like measuring things for the heck of it. Or maybe it&#8217;s because I&#8217;ve seen too many engineering projects fail - projects that if the manager (myself included) had a bit less hubris and a few more objective facts at their disposal, could have been squarely in the success column.</span></span></span></p>
<p class="MsoNormal"><span style="color:#000000;"> </span></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/accurev.wordpress.com/224/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/accurev.wordpress.com/224/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/accurev.wordpress.com/224/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/accurev.wordpress.com/224/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/accurev.wordpress.com/224/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/accurev.wordpress.com/224/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/accurev.wordpress.com/224/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/accurev.wordpress.com/224/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/accurev.wordpress.com/224/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/accurev.wordpress.com/224/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/accurev.wordpress.com/224/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/accurev.wordpress.com/224/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.accurev.com&blog=899576&post=224&subd=accurev&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.accurev.com/2008/07/16/why-traceability-matters/feed/</wfw:commentRss>
		</item>
		<item>
		<title>AccuRev naming conventions</title>
		<link>http://blog.accurev.com/2008/07/08/accurev-naming-conventions/</link>
		<comments>http://blog.accurev.com/2008/07/08/accurev-naming-conventions/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 19:44:05 +0000</pubDate>
		<dc:creator>tomas62</dc:creator>
		
		<category><![CDATA[AccuRev]]></category>

		<category><![CDATA[Customer Guest Blogs]]></category>

		<category><![CDATA[Tips and Tricks]]></category>

		<category><![CDATA[AccuRev naming conventions]]></category>

		<category><![CDATA[naming conventions]]></category>

		<category><![CDATA[SCCM]]></category>

		<category><![CDATA[SCM]]></category>

		<category><![CDATA[Software Configuration Management]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/?p=218</guid>
		<description><![CDATA[By Tomas Lundström, ReadSoft
A consistent naming scheme makes your life easier and is also a good way of avoiding name clashes in AccuRev. Here follows my stab at it. (With one important disclaimer; for multi-depot installations, you should use a depot prefix for all streams, to avoid name clashes between depots)
 
AccuRev Codelines and Baselines
The following [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><span style="font-size:10pt;color:#000000;font-family:Arial;"><strong>By Tomas Lundström, ReadSoft</strong></span></p>
<p>A consistent naming scheme makes your life easier and is also a good way of avoiding name clashes in AccuRev. Here follows my stab at it. (With one important disclaimer; for multi-depot installations, you should use a <em>depot prefix</em> for all streams, to avoid name clashes between depots)</p>
<p> </p>
<h4>AccuRev Codelines and Baselines</h4>
<p>The following naming rules apply:</p>
<ul>
<li><strong>Character set</strong>. For scripting compatibility, allowed characters are English alphanumericals, underscore &#8216;_&#8217;, hyphen &#8216;-&#8217; and period &#8216;.&#8217;.<br />
In particular, blanks, Swedish characters and slashes are disallowed.</li>
<li><strong>Case</strong>. Product names and keywords exclusively use ALL UPPER CASE, other text and component names use mixed case.<br />
Examples:APPROVE_REL, Libraries_DEV</li>
<li><strong>Main codeline streams</strong>: <span>&lt;CODELINE&gt;_&lt;LEVEL&gt;</span><br />
Examples: APPROVE_REL, DOCUMENTS_DEV<br />
In the basic case, there are two (optionally three) levels of streams for a codeline:</p>
<ul>
<li><strong>REL</strong>. Release stream, where final main releases of products are done.</li>
<li><strong>QA</strong>. QA stream (optional). If not present, the REL Stream serves QA as well</li>
<li><strong>DEV</strong>. Development stream where developers share code, and perform initial integration.<strong><br />
</strong></li>
</ul>
</li>
<li><strong>Maintenance codeline streams (&#8217;branches&#8217;)</strong>: <span>&lt;CODELINE&gt;_&lt;VERSION&gt;_&lt;LEVEL&gt;</span><br />
Examples: <span>APPROVE_5-1_REL, DOCUMENTS_6-3_DEV</span><br />
Maintenance codelines may be single level, in which case it shall have the level REL, or it can be two or three levels, just like a main codeline.</li>
<li><strong>Other codeline streams</strong>: <span>&lt;CODELINE&gt;[_&lt;VERSION&gt;]_&lt;PURPOSE&gt;[_&lt;LEVEL&gt;]<br />
</span>Examples: <span>APPROVE_portToVS2005, APPROVE_5-1_hotfix47<br />
</span>These streams are used for e.g. hotfixes, service packs, substantial tasks, subprojects, teams, experiments and acceptance tests. Most streams will be single level, so the level can be omitted. In most cases, the version can be omitted as well, since it will be evident from the context (i.e. its parent stream).</li>
<li><strong>Snapshots</strong>: <span>&lt;PARENT STREAM&gt;<strong>_</strong>&lt;TIME&gt;[<strong>_B</strong>&lt;BUILD#&gt;][<strong>_</strong>&lt;PURPOSE&gt;]</span><br />
Example: <span>APPROVE_5-1_REL_D051127T1347_B6365_iRC01<br />
</span></li>
<li><strong>Workspace Streams:</strong> <span>&lt;PARENT STREAM&gt;[_&lt;host&gt;|&lt;number&gt;]_&lt;USER&gt;<br />
</span>Normally the default scheme should be used, where the AccuRev wizard attaches the user name to the stream name, i.e. the user name should never be explicitly written out when creating a Workspace!<br />
If a user has several workspaces on the same stream, they have to be distinguished by some kind of identification. For workspaces on different computers, the host name shall be used. For workspaces on the same computer, an integer number shall be used.<br />
Examples: <span>APPROVE_DEV_3_tomas, APPROVE_DEV_buildserver12_tomas<br />
</span></li>
<li><strong>Reference Trees:</strong> &lt;<span>PARENT STREAM&gt;_RT[<strong>_</strong>&lt;PURPOSE&gt;][_&lt;host&gt;|&lt;number&gt;]</span><br />
A reference tree cannot have the same name as an existing reference tree or workspace. In case of conflict, use the same distinguishing naming rules as for Workspaces.<br />
Example: <span>APPROVE_REL_RT_NIGHTLYBUILD_buildserver12<br />
</span></li>
<li><strong>Pass-through streams</strong>: <span>&lt;CODELINE&gt;_PT_&lt;PURPOSE&gt;<br />
</span>No changes &#8217;stick&#8217; to pass-through streams. However, include/exclude rules apply, so they can e.g. be used for grouping other streams/workspaces that share visibility rules.<span><br />
Example: Documentation_PT_APPROVE</span></li>
</ul>
<p class="MsoBodyText"><strong>&lt;CODELINE&gt;</strong> is typically a product or component name, such as <em>APPROVE</em> or <em>Utilities</em></p>
<p class="MsoBodyText"><strong>&lt;VERSION&gt;</strong> is the commercial product version, e.g. 5-1</p>
<p class="MsoBodyText"><strong>&lt;TIME&gt;</strong> is on the form: <strong><span>D</span></strong><span>yymmdd[<strong>T</strong>hhmm] </span>Time is optional.</p>
<p class="MsoBodyText"><strong>&lt;PURPOSE&gt;</strong> is used for additional comments:</p>
<ul>
<li>Hotfix number (<strong>HOTFIX</strong>yy)</li>
<li>ServicePack number (<strong>SP</strong>yy)</li>
<li>Release Candidates (<strong>iRC</strong>xx, <strong>eRC</strong>yy)</li>
<li>Other useful freetext information about the purpose of the stream, such as:
<ul>
<li>For customer specific development (e.g. pilot projects): the company name<br />
Example: APPROVE_Volvo</li>
</ul>
</li>
</ul>
<p>For tasks: The task name and/or unique identifier<br />
Example: APPROVE_PurchaseOrders</p>
<p> </p>
<div><span style="font-size:12pt;">best regards,</span></div>
<div><span style="font-size:12pt;">/Tomas</span></div>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/accurev.wordpress.com/218/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/accurev.wordpress.com/218/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/accurev.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/accurev.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/accurev.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/accurev.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/accurev.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/accurev.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/accurev.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/accurev.wordpress.com/218/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/accurev.wordpress.com/218/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/accurev.wordpress.com/218/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.accurev.com&blog=899576&post=218&subd=accurev&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.accurev.com/2008/07/08/accurev-naming-conventions/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/tomas62-128.jpg" medium="image">
			<media:title type="html">tomas62</media:title>
		</media:content>
	</item>
		<item>
		<title>Simple reporting tool for AccuRev</title>
		<link>http://blog.accurev.com/2008/06/30/simple-reporting-tool-for-accurev/</link>
		<comments>http://blog.accurev.com/2008/06/30/simple-reporting-tool-for-accurev/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 15:19:49 +0000</pubDate>
		<dc:creator>tomas62</dc:creator>
		
		<category><![CDATA[AccuRev]]></category>

		<category><![CDATA[Customer Guest Blogs]]></category>

		<category><![CDATA[AccuRev release notes]]></category>

		<category><![CDATA[AccuRev reporting]]></category>

		<category><![CDATA[AccuRev reporting tool]]></category>

		<category><![CDATA[reporting]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/?p=220</guid>
		<description><![CDATA[By Tomas Lundström, ReadSoft

Reporting is pretty basic in AccuRev. Here&#8217;s a simple tool for Windows you can try (this site would not allow zipped uploads). It&#8217;s a beta, feedback is welcome.
Excerpt from the README file:
WHAT IS &#8216;RELEASOR&#8217;?
Releasor (short for Release Notes Generator) is a simple reporting tool for AccuRev.
It basically answers the question &#8220;what Issues [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong><span style="font-size:10pt;color:#000000;font-family:Arial;">By Tomas Lundström, ReadSoft</span></strong></p>
<p><strong></strong></p>
<p>Reporting is pretty basic in AccuRev. <a href="http://www.cmcrossroads.com/component/option,com_fireboard/Itemid,593/func,view/id,91285/catid,91/" target="_blank">Here&#8217;s a simple tool for Windows you can try</a> (this site would not allow zipped uploads). It&#8217;s a beta, feedback is welcome.</p>
<p>Excerpt from the README file:</p>
<p>WHAT IS &#8216;RELEASOR&#8217;?<br />
Releasor (short for Release Notes Generator) is a simple reporting tool for AccuRev.</p>
<p>It basically answers the question &#8220;what Issues have been addressed in stream S between times t1 and t2?&#8221;</p>
<p>(A future version will also allow for difference reporting between arbitrary streams)</p>
<p>The resulting report is presented either as HTML or as a tab-separated text file, suitable for Excel.</p>
<p>Releasor was created by tomas.lundstrom@readsoft.com</p>
<p>SYSTEM PREREQUISITES<br />
* Windows XP/2003 (Vista not tested)<br />
* .NET Framework 2.0 installed<br />
* AccuRev 4.x.x installed<br />
* accurev.exe must be in the path<br />
* Minimum 1280 x 1024 desktop resolution</p>
<p>LIMITATIONS<br />
* Report format is Issues only (even though the preview can be viewed as transactions and files as well)<br />
* Preview fields are hardcoded at this time<br />
* Releasor does not log in to AccuRev on its own, so there must exist a valid Accurev session.<br />
* Help is limited to a few tool tips.<br />
* Error handling/recovery is not complete<br />
* Requires the default field &#8217;shortDescription&#8217; to be present in the Schema</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/accurev.wordpress.com/220/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/accurev.wordpress.com/220/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/accurev.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/accurev.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/accurev.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/accurev.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/accurev.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/accurev.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/accurev.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/accurev.wordpress.com/220/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/accurev.wordpress.com/220/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/accurev.wordpress.com/220/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.accurev.com&blog=899576&post=220&subd=accurev&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.accurev.com/2008/06/30/simple-reporting-tool-for-accurev/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/tomas62-128.jpg" medium="image">
			<media:title type="html">tomas62</media:title>
		</media:content>
	</item>
		<item>
		<title>The Seven Deadly Sins of Software Application Development - Part 2 of 2</title>
		<link>http://blog.accurev.com/2008/06/27/the-seven-deadly-sins-of-software-application-development-part-2-of-2/</link>
		<comments>http://blog.accurev.com/2008/06/27/the-seven-deadly-sins-of-software-application-development-part-2-of-2/#comments</comments>
		<pubDate>Fri, 27 Jun 2008 16:32:11 +0000</pubDate>
		<dc:creator>Lorne Cooper</dc:creator>
		
		<category><![CDATA[Agile]]></category>

		<category><![CDATA[Best Practices]]></category>

		<category><![CDATA[AccuRev]]></category>

		<category><![CDATA[agile development]]></category>

		<category><![CDATA[agile process]]></category>

		<category><![CDATA[application development]]></category>

		<category><![CDATA[automated regression test]]></category>

		<category><![CDATA[build process]]></category>

		<category><![CDATA[building a software team]]></category>

		<category><![CDATA[development process]]></category>

		<category><![CDATA[flexible process]]></category>

		<category><![CDATA[offshore application development]]></category>

		<category><![CDATA[Offshore development]]></category>

		<category><![CDATA[regression testing]]></category>

		<category><![CDATA[software application development]]></category>

		<category><![CDATA[software process automation]]></category>

		<category><![CDATA[test process]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/?p=216</guid>
		<description><![CDATA[by Lorne Cooper, CEO, AccuRev 
 
A Top 25 WordPress Blog Post of the Day
 
In Part 1, we looked at the sins of Building a Weak Team and Ignoring the Future.  Once you’re committed to hiring talent and building a forward-looking process, there are two more sins to avoid.
 
Sin #6: A Long Tail After Development is Complete
 
We [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p class="MsoNormal" style="margin:0;"><strong>by Lorne Cooper, CEO, AccuRev</strong> </p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><em><strong>A Top 25 WordPress Blog Post of the Day</strong></em></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;">In <a title="The Seven Deadly Sins of Software Application Development - Part 1 of 2 " href="http://blog.accurev.com/2008/06/26/the-seven-deadly-sins-of-software-application-development-part-1-of-2/" target="_blank">Part 1</a>, we looked at the sins of Building a Weak Team and Ignoring the Future.<span>  </span>Once you’re committed to hiring talent and building a forward-looking process, there are two more sins to avoid.</span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<h2 style="margin:12pt 0 3pt;"><em><span style="font-size:large;font-family:Arial;">Sin #6: A Long Tail After Development is Complete</span></em></h2>
<p style="margin:12pt 0 3pt;"> </p>
<p class="MsoNormal" style="margin:0;"><span>We constantly see organizations where the time from “requirements-in” to “feature freeze” is half the time to “solutions-out.”<span>  </span>That 50% “tail” on development provides no direct value to customers, but is there because of limitations in our development process. </span></p>
<p class="MsoNormal" style="margin:0;"><span> </span></p>
<p class="MsoNormal" style="margin:0;"><span><span>Sometimes that tail is twice the length of the initial development.<span>  </span></span></span></p>
<p class="MsoNormal" style="margin:0;"><span> </span></p>
<p class="MsoNormal" style="margin:0;"><span>Ironically, while the long heavy tail is grown to protect the organization from delivering bad product, it eventually decreases response time until it becomes an instrument in the organization’s death.</span></p>
<p class="MsoNormal" style="margin:0;"><span> </span></p>
<p class="MsoNormal" style="margin:0;"><span>But many industries have a long tail, don’t they?<span>  </span>Surely it doesn’t hurt the construction of bridges that the plans are completed long before the bridge is built.</span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;">For forty years people have tried to make analogies between software development and more mature engineering disciplines, say, like building buggy whips.<span>  </span>The designer of the buggy whip might make a sample or two to try it out on his children, then send it off to the factory, where a slew of Industrial Buggy Whip Engineers would spend months figuring out how to sew the damn things, buying up horse-hair, and hiring immigrants to sit at sewing machines. A year or so late, Pony Express delivers the new buggy whip to general stores all over the Grand Trunk Railway line.<span>  </span></span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">We can all certainly learn a lot from that.</p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">Now try telling your customer that the problem she’s been working around is well understood, and in fact fixed, but she’s not going to get it for three months.<span>  </span>She’ll be looking for alternative suppliers before the screen door has hit your butt.<span>  </span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">Everything moves too fast to use that tired old process.<span>  </span>Frankly, I use to blame computers.<span>  </span>Now I blame the Internet.<span>  </span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">When you take a hard look at the time it takes to get completed product out the door, you’ll probably find it dominated by two things: testing, and fixing bugs that the testers find.<span>  </span>Both stem from the problem that you’re not doing enough testing during the development process, and you’re trying to test too much at one time.</p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;">I’m no fan of Hawthorn-effects, or what the politically incorrect might call gimmicks, like pair programming or stand-up meetings, but projects that use an Agile development with automated regression test processes are certainly doing more right than wrong.<span>  </span></span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">Is it really so hard to manage by tasks/issues, normalize them to a small unit of work, merge in just one set of changes into each build, and test just that perturbation?<span>  </span>What if you knew you would consistently get better code out the back of the process, and therefore make your organization more responsive to your customers?</p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">Your development process must minimize latency, instead of trying to maximize bandwidth.<span>  </span>Don’t miss the changes in requirements and environments that produce opportunities for better products, or sooner or later you’ll end up locked in a suicide pact with a project no one wants.</p>
<p class="MsoNormal" style="margin:0;"> </p>
<h2 style="margin:12pt 0 3pt;"><em><span style="font-size:large;font-family:Arial;">Sin #7: Complacency</span></em></h2>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;"><span style="font-size:small;">Calais’s stone walls were so thick the city had no fear of invaders, until they showed up with cannons.<span>  </span>Napoleon’s Old Guard was undefeated in battle after battle, until they were cut down by Wellington at Waterloo.<span>  </span>Big Blue’s OS/2 would crush little Microsoft’s Windows product.<span>  </span>Big Microsoft’s Live Search would crush little Google’s search engine.<span>  </span></span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">Hubris on ice will leave you with a heck of a hangover.</p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">That brilliant team using that wonderful process you put together last year, is just a few months of complacency away from dysfunction.<span>  </span>People move and, thanks to the 13<sup>th</sup> Amendment to the US Constitution, may leave their jobs and there’s little you can do about it.<span>  </span>Environments change and architectures become outdated.<span>  </span>The marketplace changes and requirements change with them.</p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">One VP Engineering I know told me he asked his off-shore application development partner to give him 110%.<span>  </span>They did, but it turned out to be turnover.</p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">Your process needs to be constantly monitored and upgraded, because everything in the process is changing.<span>  </span>If your offshore partner has high turnover, their part of the process might require more code inspection and knowledge transfer.<span>  </span>If your biggest customer can’t use your product until it supports their new environment, you need to put a special team on building a custom version of the product, and then merge that back into main development.<span>  </span>If you have to replace an old veteran with a rookie, then you might create new integration points and a more rigorous test protocol.</p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">Recognize that everything will change, and the assumptions under which you built your last success are no longer valid.<span>  </span>Make small process changes early and often, or in the long run the big changes will be made by your replacement.</p>
<p class="MsoNormal" style="margin:0;"> </p>
<h2 style="margin:12pt 0 3pt;"><em><span style="font-size:large;font-family:Arial;">Stirring Conclusion</span></em></h2>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">Managing a software development organization is a very challenging task, as tough as playing a violin with your toes, and less fun.<span>  </span></p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">I don’t mean to trivialize important management functions <span>such as</span> customer management, budget and project tracking, running a good meeting, <span>and</span> designing effective compensation structures<span>. And</span> by all means, <span>hiring</span> someone to spend their time doing all of that.</p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">But that won’t protect you from the seven deadly sins.<span>  </span>Only you can do that.</p>
<p class="MsoNormal" style="margin:0;"> </p>
<p class="MsoNormal" style="margin:0;">I’ll finish with the Four Virtues, which are the antidote to the Seven Sins:</p>
<ol style="margin-top:0;" type="1">
<li class="MsoNormal">Hire great people or don’t hire.</li>
<li class="MsoNormal">Plan to build a product that will have a long life.</li>
<li class="MsoNormal">Keep your process nimble, and deliver less, faster.</li>
<li class="MsoNormal">Keep improving everything.</li>
</ol>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/accurev.wordpress.com/216/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/accurev.wordpress.com/216/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/accurev.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/accurev.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/accurev.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/accurev.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/accurev.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/accurev.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/accurev.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/accurev.wordpress.com/216/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/accurev.wordpress.com/216/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/accurev.wordpress.com/216/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.accurev.com&blog=899576&post=216&subd=accurev&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.accurev.com/2008/06/27/the-seven-deadly-sins-of-software-application-development-part-2-of-2/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/lornecooper-128.jpg" medium="image">
			<media:title type="html">lornecooper</media:title>
		</media:content>
	</item>
		<item>
		<title>The Seven Deadly Sins of Software Application Development - Part 1 of 2</title>
		<link>http://blog.accurev.com/2008/06/26/the-seven-deadly-sins-of-software-application-development-part-1-of-2/</link>
		<comments>http://blog.accurev.com/2008/06/26/the-seven-deadly-sins-of-software-application-development-part-1-of-2/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 21:03:12 +0000</pubDate>
		<dc:creator>Lorne Cooper</dc:creator>
		
		<category><![CDATA[Best Practices]]></category>

		<category><![CDATA[AccuRev]]></category>

		<category><![CDATA[development process]]></category>

		<category><![CDATA[Software Management]]></category>

		<category><![CDATA[application development]]></category>

		<category><![CDATA[software application development]]></category>

		<category><![CDATA[code reuse]]></category>

		<category><![CDATA[software architecture]]></category>

		<category><![CDATA[process automation]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/?p=212</guid>
		<description><![CDATA[by Lorne Cooper, CEO, AccuRev
A Top 25 WordPress Blog Post of the Day 
Here at AccuRev our business requires we dive into the development process of dozens of software development organizations each month seeking our expertise. While reasons for success differ, there seems to be a pattern in ways organizations fail to deliver on their goals.
Here [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>by Lorne Cooper, CEO, AccuRev</strong></p>
<p><strong><em>A Top 25 WordPress Blog Post of the Day</em></strong> </p>
<p>Here at AccuRev our business requires we dive into the development process of dozens of software development organizations each month seeking our expertise. While reasons for success differ, there seems to be a pattern in ways organizations fail to deliver on their goals.</p>
<p>Here are seven pitfalls and tarballs to avoid when managing a software development organization.</p>
<p><strong>Sin #1: Building a Weak Team</strong></p>
<p>Great people build great products that generate great value. The rest of them fill up meeting rooms discussing whether they can get that bug fixed by Friday.</p>
<p>Sure, sooner or later someone will show you a great product developed by a committee of average engineers. Until then, do what you have to do to get great talent, and demand exceptional things from them.</p>
<p>Not sure if they’re good or great? Ask them to do the impossible: the good ones will tell you why they can’t do it, the bad ones won’t understand the problem, and the great ones will smile, and then ask for a little more time.</p>
<p>What kind of people answered (what is claimed to be) Sir Ernest Shackleton’s ad for his expedition to Antarctica?</p>
<p><em>Men Wanted: For hazardous journey. Small wages, bitter cold, long months of complete darkness, constant danger, safe return doubtful. Honour and recognition in case of success.</em></p>
<p><strong>Sin #2: Blaming the Workers for their Bad Management</strong></p>
<p><strong></strong><br />
Is disaster a function of the people or the process? If great products come from great people, do failures signify you’ve hired too many chumps, and it’s time to play French Revolution with your development team? Can’t be the manager’s fault, after all, since the managers are the smart ones, or they wouldn’t have been made managers! Right?</p>
<p>Leadership and Management are the steering wheel and the accelerator. Development and QA are the engine. Why blame the engine for hitting the tree?</p>
<p>Can a project succeed despite poor management? Absolutely, and it happens all the time. Sometimes the needs are so dramatic, the architecture so obvious, and the team so experienced, that success is as certain as a Russian election.</p>
<p>But project failures are always the fault of management or leadership. If the engineers couldn’t do the job, good managers would swap them out, and good leaders would motivate them.</p>
<p>With added power comes added responsibility. Good leadership tolerates and anticipates engineering errors, but has little tolerance for management failings.<br />
<strong></strong></p>
<p><strong>Sin #3: Short Term Thinking</strong></p>
<p>If they paid you by how long it took to replace your software, you’d be a rich man, and could pay someone else to spend their time reading my blog.</p>
<p>When do you replace your underwear? When a new color comes out? When there’s a new innovation in cotton? If you’re an engineer, of any gender, you wait until that underwear is worn ragged.</p>
<p>And that’s the problem with software. It doesn’t wear out. In fact, it probably runs faster now than it did ten years ago when it was shipped. And it has more reports, more adapters, and more integrations than it did then, too. Ask any CIO: it’s hard to get rid of working software.</p>
<p>If you admitted your product was going to go through ten major revisions over eight years, and be used by 100,000 people, would you do anything differently? My guess is you would invest in a strong architecture, design code for re-use, and develop tons of automated tests. How about if it were to go through three revisions in two years and be used by 100 people? Same answer!</p>
<p>Investment in architecture is what determines whether your crack development team spends its time designing tomorrow’s skyscrapers, or on spreading spackle in the cracks in your old foundation.</p>
<p>Bad architecture is the answer to the question of “Where did all that money go?”</p>
<p>Good architecture is the answer to “How did someone so young get that job?”</p>
<p><strong>Sin #4: No Investment in Code Re-Use</strong></p>
<p>Good implementation recognizes that code’s going to be there for a long time, and what we build should be re-usable components. Ok, they don’t build bridges that way. But then again, the cost of building the second copy is a little higher.</p>
<p>If there’s one thing we can learn from the TQM experts, and even one might be optimistic, it’s that code reuse is the single most important thing you can do to improve your development organization.</p>
<p>If there’s one thing we can learn from experience (which might be even more ambitious, seeing how people drive in snow), it’s that Code Reuse is hard. Hard, and expensive.</p>
<p>Getting code that works properly is tough. It sure is nice to use something that already works. Tends to decrease the bug rate, increase development effectiveness, and best of all, gets the product to QA with fewer bugs.</p>
<p>Don’t forget that the amount of time it will take to get the product _out_ of QA is a function of the number of bugs it brought with it _into_ QA in the first place. An exponential function. Which, for those of you with Art History backgrounds, is a bad thing.</p>
<p>Code re-use is like changing the oil in your car. Slows you down, costs you money, but in the long run will save you a bundle.</p>
<p><strong>Sin #5: Manual Processes</strong></p>
<p>If you are going to have to do the same thing five hundred times, you’d certainly automate it. Same if you were going to have to do the same thing fifty times. How about five? With testing, the answer is yes, even if it takes ten times as long, as to do it once, you should automate it, because you’re very likely to be wrong and you will end up running the test twenty times.</p>
<p>This sin is pretty much the sin of “sloth” of which my grandmother used to accuse me every time she saw me pull off my shoes. Every development manager who has put on the stripes knows that good architecture code re-use, and automated testing is big. But each time we have short term project pressure, we find it hard to spend the extra time, and it’s not a little extra time; to invest in the infrastructure, streamline the functionality, expand the testing, and document the function, so we’re ready to meet tomorrow.</p>
<p><a href="http://blog.accurev.com/2008/06/27/the-seven-deadly-sins-of-software-application-development-part-2-of-2/" target="_blank">Part 2 </a>conclusion</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/accurev.wordpress.com/212/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/accurev.wordpress.com/212/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/accurev.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/accurev.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/accurev.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/accurev.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/accurev.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/accurev.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/accurev.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/accurev.wordpress.com/212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/accurev.wordpress.com/212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/accurev.wordpress.com/212/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.accurev.com&blog=899576&post=212&subd=accurev&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.accurev.com/2008/06/26/the-seven-deadly-sins-of-software-application-development-part-1-of-2/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/lornecooper-128.jpg" medium="image">
			<media:title type="html">lornecooper</media:title>
		</media:content>
	</item>
		<item>
		<title>Build Management with AccuRev and Maven</title>
		<link>http://blog.accurev.com/2008/06/25/build-management-with-accurev-and-maven/</link>
		<comments>http://blog.accurev.com/2008/06/25/build-management-with-accurev-and-maven/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 18:30:59 +0000</pubDate>
		<dc:creator>Matthew D. Laudato</dc:creator>
		
		<category><![CDATA[AccuRev]]></category>

		<category><![CDATA[Tips and Tricks]]></category>

		<category><![CDATA[build management]]></category>

		<category><![CDATA[Eclipse]]></category>

		<category><![CDATA[m2eclipse]]></category>

		<category><![CDATA[Maven]]></category>

		<category><![CDATA[release management]]></category>

		<category><![CDATA[SCCM]]></category>

		<category><![CDATA[SCM]]></category>

		<category><![CDATA[Software Configuration Management]]></category>

		<category><![CDATA[version control]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/?p=211</guid>
		<description><![CDATA[Build management is a long-overlooked area of software development. As is often the case with underserved areas, the open source community has several good solutions. Maven is among the most interesting and functional solutions for Java developers. I had the chance to take the AccuRev-Maven m2eclipse integration out for a test drive recently. This is [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Build management is a long-overlooked area of software development. As is often the case with underserved areas, the open source community has several good solutions. <a title="Maven website" href="http://maven.apache.org" target="_blank">Maven</a> is among the most interesting and functional solutions for Java developers. I had the chance to take the AccuRev-Maven <a title="m2eclipse website" href="http://m2eclipse.sonatype.org/" target="_blank">m2eclipse</a> integration out for a test drive recently. This is a recently announced integration (read the press release <a title="AccuRev-Maven Press Release" href="http://www.accurev.com/press-releases/050608-maven-scm-accurev.html" target="_blank">here</a> if you are interested, and see my video demo <a title="AccuRev-Maven Flash Demo" href="http://www.accurev.com/virtualbooth/Maven/flash/AccuRev-Maven-Demo.html" target="_blank">here</a>).</p>
<p>The integration follows the pattern of other <a href="http://www.accurev.com/software-configuration-management-resources.htm" target="_blank">software configuration management</a> (SCM) integrations with m2eclipse. A backend provider interface was written to support AccuRev, and the provider was integrated into the m2eclipse environment via the SCMHandler mechanism. I used m2eclipse in conjunction with <a title="AccuBridge for Eclipse" href="http://www.accurev.com/accubridge-eclipse.html" target="_blank">AccuBridge for Eclipse</a> (the AccuRev-provided Team plugin) to materialize Maven projects into a new AccuRev workspace from within Eclipse, and then did some basic Maven build and AccuRev SCM operations.</p>
<p>To get started, I needed to install m2eclipse from Sonatype. I used the Eclipse Update Manager to do this, by creating a new remote site in Update Manager for Sonatype (<a title="m2eclipse Update Site" href="http://m2eclipse.sonatype.org/update/">http://m2eclipse.sonatype.org/update/</a>). I already had the AccuBridge for Eclipse plugin installed, also obtained via Update Manager (<a title="AccuBridge for Eclipse Update Site" href="http://www.accurev.com/download/eclipseupdate/32/">http://www.accurev.com/download/eclipseupdate/32/</a>). After restarting Eclipse, I was ready to test.</p>
<p>In my test environment, I had an AccuRev stream called maven_int that I had pre-loaded with (of all things) the source and test code for the Maven integration itself. My goal was to create a new AccuRev workspace based on this stream from within Eclipse that was Maven- and AccuRev-aware. To do this, I used the Eclipse Import functionality and selected the “Checkout Maven Projects from SCM” option. Since I was using AccuRev, I chose the AccuRev provider from the drop down list box. Like other integrations with Maven, AccuRev supports a URL format for specifying where to obtain code. The URL lets you specify the AccuRev user and login credentials, as well as the exact depot and stream from which to import the code. I also chose the make workspace checkout option, which tells the plugin to create an actual AccuRev workspace in a specified location.</p>
<p>After pressing the Finish button on the Import wizard, m2eclipse called out to AccuRev, created a new AccuRev workspace, and created new Eclipse projects (based on whatever Maven POM files were found in the maven_int stream) containing the source code. I then associated the Eclipse projects with AccuRev using the Team Share option so that I would have full access to AccuRev functionality.</p>
<p>Since the projects were all Maven-based, building was done by right clicking on the POM file and selecting one of the build options. To convince myself that the AccuRev functionality worked, I did some edits to a few files, saved the changes, and then used the AccuRev promote option to version that file in the AccuRev repository.</p>
<p>Overall, the integration worked as I expected. The installation of the plugins was fast, it was easy to materialize Maven-based projects from AccuRev, and all of the important Maven and AccuRev functionality was available in the respective plugins. If you are an AccuRev user and want to use Maven, then the combination of m2eclipse and AccuRev integrated inside of the Eclipse environment is a practical desktop tool for managing your local builds.</p>
<p> </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/accurev.wordpress.com/211/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/accurev.wordpress.com/211/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/accurev.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/accurev.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/accurev.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/accurev.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/accurev.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/accurev.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/accurev.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/accurev.wordpress.com/211/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/accurev.wordpress.com/211/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/accurev.wordpress.com/211/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.accurev.com&blog=899576&post=211&subd=accurev&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.accurev.com/2008/06/25/build-management-with-accurev-and-maven/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Continuous Integration: Begin Again</title>
		<link>http://blog.accurev.com/2008/06/12/continuous-integration-begin-again/</link>
		<comments>http://blog.accurev.com/2008/06/12/continuous-integration-begin-again/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 15:40:15 +0000</pubDate>
		<dc:creator>jsherwood</dc:creator>
		
		<category><![CDATA[Best Practices]]></category>

		<category><![CDATA[continuous integration]]></category>

		<category><![CDATA[CruiseControl]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/?p=207</guid>
		<description><![CDATA[We&#8217;ve been using CruiseControl productively for a number of years. First as a stop gap in ensuring build success on multiple operating systems, later as a quick check of tests. More recently we&#8217;ve added reporting, and tests as part of a larger memory analysis platform.
But, being a bunch of software developers means we are continuously [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>We&#8217;ve been using <a href="http://cruisecontrol.sourceforge.net">CruiseControl</a> productively for a number of years. First as a stop gap in ensuring build success on multiple operating systems, later as a quick check of tests. More recently we&#8217;ve added reporting, and tests as part of a larger memory analysis platform.</p>
<p>But, being a bunch of software developers means we are continuously craving something different, like switching to Haskell and using Ruby on Rails. Joking aside (and nobody panic) it is more that we look at areas of our build processes to identify the pain points, and what can be done to improve them. I mean, that&#8217;s how we provide value right? By continuously improving processes and features.</p>
<p>This time we took a look at things we don&#8217;t change often, but end up injecting a lot of pain into the process each time they are done. And these pain points become more obvious as we increase our agile usage, as they occur more frequently than they did in the past.</p>
<p>How often do you go through your &#8220;official&#8221; <a href="http://www.accurev.com/index.html" target="_blank">release process</a>? In my past life it used to be this occurred every six months at best, a year or so on a bad year and a long time ago (in a far far away land) I had the opportunity to work on a project that lasted 7 years. Now granted I certainly wasn&#8217;t on it for seven years, people tended to drift on and off the project but it took seven years to ship. That was a long time ago.</p>
<p>Today we are looking at monthly cycles, or in the case of very specific changes even two week cycles. Those painful processes that were blotted out with 6 months between them now happen pretty frequently. We used to not bother with the problems, just moan a little and trudge through it. But agile changes that. <a href="http://www.accurev.com/cgi-bin/offer.cgi?type=wp-continuous-integration" target="_blank">Continuous Integration</a> changes that. These processes should work, be easy to change, and adapt quickly. Anything that doesn&#8217;t adapt you want to drop as quickly as possible.</p>
<p>To do that we&#8217;ve started looking at new tools for our processes. Because new tools solve all your problems right? As soon as you started compiling in C++ from C all your problems went away right? Okay not really. Tools are nice, tools make a good impetus for change, but change solves your problems. Yes moving to C++ provides you with access to new functionality, but only until you actually implement and use exception handling in a structured manner do you really get value out of the tool.</p>
<p>Sometimes it&#8217;s felt that the tool is enough. I mean when you switched <a href="http://www.accurev.com/accurev-more.html">SCM products</a> you kept your old processes. Sure, maybe they didn&#8217;t quite fit the new tool and you had to write a lot of scripts, but it was what you were used to. You may even be nodding your head right now. Nothing like shoe horning a process you created 5 years ago into a tool adopted last year. If you didn&#8217;t change your process how did the new tool provide value? Performance and scalability may get you some value, but new features and usage patterns get you a lot farther.</p>
<p>As part of examining our build and integration tools, we looked at processes. What areas of our process are not formal? Is there a specific person who knows the incantations to make it work? What happens when machines fail, do we have alternative machines that can take up the slack? Can we run multiple builds on the same machine? Multiple tests? How do we get and review our results? What are the top 3 pain points for each person involved?</p>
<p>Not only does asking these questions help us understand the process better, but it identifies the areas of change. And with these changes we can leverage both our existing tools as well as the new tools we&#8217;ve chosen to acquire. It helps our existing team, and it helps those who join us in the future. They&#8217;ll be more productive faster. We&#8217;ll have time to work on the features our customers want, and instead of just getting by we&#8217;ll be able to use forward looking technologies.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/accurev.wordpress.com/207/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/accurev.wordpress.com/207/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/accurev.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/accurev.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/accurev.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/accurev.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/accurev.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/accurev.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/accurev.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/accurev.wordpress.com/207/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/accurev.wordpress.com/207/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/accurev.wordpress.com/207/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.accurev.com&blog=899576&post=207&subd=accurev&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.accurev.com/2008/06/12/continuous-integration-begin-again/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Agile Requirements Traceability with AccuRev and Rally</title>
		<link>http://blog.accurev.com/2008/06/11/agile-requirements-traceability-with-accurev-and-rally/</link>
		<comments>http://blog.accurev.com/2008/06/11/agile-requirements-traceability-with-accurev-and-rally/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 17:35:24 +0000</pubDate>
		<dc:creator>Matthew D. Laudato</dc:creator>
		
		<category><![CDATA[AccuRev]]></category>

		<category><![CDATA[Agile]]></category>

		<category><![CDATA[News]]></category>

		<category><![CDATA[agile project management]]></category>

		<category><![CDATA[issue tracking]]></category>

		<category><![CDATA[Rally]]></category>

		<category><![CDATA[requirements traceability]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/?p=208</guid>
		<description><![CDATA[Today, AccuRev and Rally announced our technology partnership. You can read the press release here. Since I was part of the engineering team that did the initial proof-of-concept integration between AccuRev and Rally, I thought I&#8217;d spend few moments writing about the integration and how it helps customers connect requirements managed in Rally with code [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Today, <a title="AccuRev Home Page" href="http://www.accurev.com" target="_blank">AccuRev</a> and <a title="Rally Home Page" href="http://www.rallydev.com/" target="_blank">Rally</a> announced our technology partnership. You can read the press release <a title="AccuRev-Rally Press Release" href="http://www.accurev.com/press-releases/061108-accurev-rally-agile-partnership.html" target="_blank">here</a>. Since I was part of the engineering team that did the initial proof-of-concept integration between AccuRev and Rally, I thought I&#8217;d spend few moments writing about the integration and how it helps customers connect requirements managed in Rally with code changes managed in AccuRev.</p>
<p>First, for those of you who prefer the movie to the book, you can view a short video demonstration that I recorded <a title="AccuRev-Rally Video Demonstration" href="http://www.accurev.com/virtualbooth/Rally/AccuRev-Rally-Demo.html" target="_blank">here</a>. It highlights the main functionality of the integration.</p>
<p>Now to the details. Rally provides agile project management, including story and defect tracking, to assist customers in managing the rapidly changing flow of requirements and issues that are common in Agile development processes. AccuRev provides innovative stream-based SCM and integrated issue tracking to enable software process automation within the SCM tool. The integration ties AccuRev and Rally together to tighten the loop between requirements and defects, and the code changes that developers perform in order to satisfy those requirements or fix the defects.</p>
<p>The integration, written in Ruby and Perl, consists of three parts.</p>
<p>1. The integration queries AccuWork, the integrated issue tracking system that is available with AccuRev, for all &#8217;New&#8217; defects. It then transfers these defects into Rally, and makes an annotation in a custom Rally field called &#8216;AccuWork&#8217;. This field stores the AccuWork issue ID number.</p>
<p>2. When developers working in AccuRev make a code change, they will promote that code to an AccuWork issue, and place the ID of the Rally defect (created in the first part of the integration) in the promote comment. The AccuRev server_post_promote trigger (written in Perl) then fires and executes another piece of Ruby code that parses the promote transaction and sends relevant information about the code change to the Rally defect specified in the promote comment. This information is entered into Rally automaticaly and shows up as a &#8216;Discussion&#8217; entry on the defect. Currently the integration posts the names and version identifiers of the AccuRev files that changed, the user id of the developer who did the change, and the timestamp of the change.</p>
<p>3. Finally, when a developer or Product Owner using Rally sees the code change, they can set the status of the defect to &#8216;Fixed&#8217;. Ruby code can then be run automatically that looks for all &#8216;Fixed&#8217; issues in Rally, and changes their status to &#8216;Fixed&#8217; in AccuWork. It does this by looking for the custom field &#8216;AccuWork&#8217; created in the first part of the integration, extracting the issue ID number, and formulating an update XML message to AccuWork instructing AccuWork to update the specified issue.</p>
<p>That&#8217;s pretty much it. Working in Ruby and using Rally&#8217;s Ruby REST API was very straight-forward, as was working with the AccuRev XML API for querying and updating AccuWork. The end result is an early stage integration that provides basic requirements traceability between issues in AccuWork and Rally, and the coding activities of developers. I hope that if anyone is interested they&#8217;ll view the video and let us know what other features they&#8217;d like to see, so we can add them to our backlog and to future iterations of this integration in engineering.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/accurev.wordpress.com/208/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/accurev.wordpress.com/208/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/accurev.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/accurev.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/accurev.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/accurev.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/accurev.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/accurev.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/accurev.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/accurev.wordpress.com/208/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/accurev.wordpress.com/208/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/accurev.wordpress.com/208/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.accurev.com&blog=899576&post=208&subd=accurev&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.accurev.com/2008/06/11/agile-requirements-traceability-with-accurev-and-rally/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Right Process, Wrong Tool? Getting Ready for Agile</title>
		<link>http://blog.accurev.com/2008/05/30/right-process-wrong-tool-getting-ready-for-agile/</link>
		<comments>http://blog.accurev.com/2008/05/30/right-process-wrong-tool-getting-ready-for-agile/#comments</comments>
		<pubDate>Fri, 30 May 2008 18:04:01 +0000</pubDate>
		<dc:creator>Matthew D. Laudato</dc:creator>
		
		<category><![CDATA[Best Practices]]></category>

		<category><![CDATA[SCM Resources]]></category>

		<category><![CDATA[AccuRev]]></category>

		<category><![CDATA[agile process]]></category>

		<category><![CDATA[agile software development]]></category>

		<category><![CDATA[agile webinar]]></category>

		<category><![CDATA[branching and merging]]></category>

		<category><![CDATA[continuous integration]]></category>

		<category><![CDATA[multi-stage continuous integration]]></category>

		<category><![CDATA[ready for agile]]></category>

		<category><![CDATA[SCCM]]></category>

		<category><![CDATA[SCM]]></category>

		<category><![CDATA[SCM tool]]></category>

		<category><![CDATA[Software Configuration Management]]></category>

		<category><![CDATA[software process automation]]></category>

		<category><![CDATA[SPA]]></category>

		<guid isPermaLink="false">http://accurev.wordpress.com/?p=205</guid>
		<description><![CDATA[Yesterday I was a panelist for a Webinar on agile tools, focusing on software configuration management (SCM), build and software process automation (SPA), the latter term referring to the set of defined, repeatable and measurable automated development workflows that engineers use to transform requirements into shippable software products. Contrary to what I&#8217;ve read about the [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Yesterday I was a panelist for a <a href="http://www.accurev.com/cgi-bin/offer.cgi?type=we-200805-agileready" target="_blank">Webinar on agile tools</a>, focusing on <a href="http://www.accurev.com/software-configuration-management-resources.htm" target="_blank">software configuration management</a> (SCM), build and software process automation (SPA), the latter term referring to the set of defined, repeatable and measurable automated development workflows that engineers use to transform requirements into shippable software products. Contrary to what I&#8217;ve read about the disdain that some agile devotees have for tools, most of the attendees were hungry to know what features their <a href="http://www.accurev.com/scm_comparisons.html" target="_blank">SCM tool</a> should have in order to support <a href="http://www.accurev.com/agile-scm.html" target="_blank">agile software development</a> and SPA. Here are some of the highlights, and of course, my take on why I think AccuRev is the best tool for agile software process automation.</p>
<p>There are five key feature areas that an SCM tool needs to support in order to be ready for agile:</p>
<p>* Support for flexible process models</p>
<p>* Continuous integration support</p>
<p>* Support for issue-based development</p>
<p>* Efficient branch and code management</p>
<p>* Private version controlled developer workspaces</p>
<p>Let&#8217;s take a look at each of these in turn.</p>
<p>* <strong>Support for flexible process models.</strong> Agile is often one of several processes being employed within a software development organization. Unless your SCM tool is flexible and process-neutral, you will have a hard time implementing agile (say, for product development) and more traditional processes like waterfall (for example, for product maintenance work) in the same SCM tool. AccuRev streams are a natural way to model any process, and thus are a good fit when agile needs to coexist with other development processes. As for software process automation (SPA), AccuRev streams again are a great fit, since they enable users to model any arbitrary stages of code transformation that a development team sees fit to define as part of their process. By adding triggers and workflow to a stream hierarchy, teams can implement SPA directly in AccuRrev.</p>
<p>* <strong>Continuous integration support.</strong> <a href="http://www.accurev.com/reg/virtual_booth_reg.php?WBN24=1&amp;ms=WBN-CMCagile-200802" target="_blank">Continuous integration</a> is one of the core process elements associated with agile development. By building and testing frequently and acting on the results of tests, teams can uncover defects or test gaps earlier in their development cycle, saving time and money compared to such discoveries late in the cycle. But continuous integration goes beyond just testing the nightly build. With <a href="http://damonpoole.blogspot.com/2008/01/advanced-multi-stage-continous.html" target="_blank">multi-stage continuous integration </a>in AccuRev, code is automatically promoted up the stream hierarchy into more stable configurations as it passes tests. At each stage, continuous integration takes over to build and test, typically with a wider scope of testing as the code nears the release stage. Legacy <a href="http://www.accurev.com/scm_comparisons.html" target="_blank">SCM tools</a> make this type of automated integration factory somewhere between difficult and impossible due to the complexity involved in setting up the hierarchy and in automatically moving and merging code as it flows up the hierarchy.</p>
<p>* <strong>Support for issue-based development.</strong> Apparently there is a lot of contention about the need for filing issues and defects in agile development. This has puzzled me greatly. While I&#8217;m in favor of developers identifying and fixing issues as they are discovered, you lose valuable process information when a defect or enhancement ticket is not filed and later associated with a code change. Without an issue that describes what the problem was, someone looking at the code changes for audit purposes or for group code reviews is at a disadvantage. Why was this code change made? Is it related to other changes? How long did it take? Was it done to fix a bug or to add a feature. In AccuRev, issues either in the integrated AccuWork issue tracking system, or in a 3rd party issue tracking system, can easily be associated with code changes via the AccuRev Change Package mechanism. This establishes basic traceability between issues and the code changes that developers make in order to satsify the requirements of those issues. Issue-based development is well-defined, repeatable and measurable - all hallmarks of good software process automation.</p>
<p>* <strong>Efficient branch and code management.</strong> Any time you&#8217;re working on more than one project, you need to isolate that project&#8217;s code from other projects. With agile and multistage continuous integration, even a single project requires multiple code lines in order to separate in-progress code from unit tested code from system tested code that is ready for release. If an SCM tool makes <a href="http://www.accurev.com/product-overview.html" target="_blank">branching, merging</a> and labeling difficult, teams tend to practice branch avoidance, which I sometimes like to call &#8220;fear of branching.&#8221; This is a classic example of letting a tool dictate what processes you can implement. In AccuRev, streams replace branches as the mechanism for isolating codelines. Since streams are represented inside of AccuRev as data separate from the actual file versions, creating streams is fast - really fast, like, a second or two - and managing a system with hundreds of streams spanning multiple projects and processes is easy.  For continuous integration, AccuRev snapshots and time-based streams are also fast and easy to create and manage, and give users a straight-forward way to &#8220;label&#8221; an interim or milestone codeline without having to place markers in thousands of source files.</p>
<p>* <strong>Private version controlled developer workspaces.</strong> Software developers are the heartbeat of any engineering organization. Executives at any development shop will tell you that hiring talented engineers and keeping them well-tooled and productive is the single largest challenge that they face. For agile, this is even more of a challenge, since coding cycles tend to be shorter, and thus anything that gets in the way of individual or team productivity tends to have a greater negative impact on the project. Private version controlled workspaces like the AccuRev workspace model improve productivity, since they enable developers to work in isolation (while they are &#8216;heads down&#8217; coding). Private workspaces in AccuRev also give developers full SCM capabilites in their workspaces without the need to share in-progress code prematurely. By using the &#8216;keep&#8217; operation, developers make safe copies of their work in the AccuRev repository, and later can &#8216;promote&#8217; the code to an integration stream to combine their work with that of their teammates. Individuals are more productive in this way, and if continuous integration builds are frequently testing the integration stream, so are teams.</p>
<p>In a nutshell, agile requires tools, and these tools need to support different modes of operation than with other processes. SCM can help or hurt you in setting up and executing an agile process, so these guidelines are a way to help you get your SCM tool ready for agile - easy of course if your tool is already AccuRev!</p>
<p>If you&#8217;re interested, you can view the webinar recording.</p>
<p>Is Your Software Development Environment Agile-Ready?<br />
Free On-Demand <a href="http://www.accurev.com/cgi-bin/offer.cgi?type=we-200805-agileready" target="_blank">Webinar </a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/accurev.wordpress.com/205/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/accurev.wordpress.com/205/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/accurev.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/accurev.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/accurev.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/accurev.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/accurev.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/accurev.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/accurev.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/accurev.wordpress.com/205/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/accurev.wordpress.com/205/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/accurev.wordpress.com/205/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.accurev.com&blog=899576&post=205&subd=accurev&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.accurev.com/2008/05/30/right-process-wrong-tool-getting-ready-for-agile/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>