<?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 reporting</title>
	<atom:link href="http://accurev.com/blog/tag/scm-reporting/feed/" rel="self" type="application/rss+xml" />
	<link>http://accurev.com/blog</link>
	<description>SCM and Agile Software Development Blog</description>
	<lastBuildDate>Fri, 03 Feb 2012 19:28:17 +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>Adrift in a Sea of Conflicting Priorities and Assignments? Here&#039;s a Life Preserver!</title>
		<link>http://accurev.com/blog/2008/03/28/adrift-in-a-sea-of-conflicting-priorities-and-assignments-heres-a-life-preserver/</link>
		<comments>http://accurev.com/blog/2008/03/28/adrift-in-a-sea-of-conflicting-priorities-and-assignments-heres-a-life-preserver/#comments</comments>
		<pubDate>Fri, 28 Mar 2008 19:00:38 +0000</pubDate>
		<dc:creator>damonpoole</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[defect tracking]]></category>
		<category><![CDATA[issue tracking]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[reduce project management meetings]]></category>
		<category><![CDATA[reduce rework]]></category>
		<category><![CDATA[requirements management]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[SCM reporting]]></category>
		<category><![CDATA[Software Configuration Management]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://blog.accurev.com/?p=146</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/03/28/adrift-in-a-sea-of-conflicting-priorities-and-assignments-heres-a-life-preserver/' addthis:title='Adrift in a Sea of Conflicting Priorities and Assignments? Here&#039;s a Life Preserver! ' ><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>Do you ever feel like things are out of control on your project, that you are adrift in a sea of conflicting priorities and requests? Do you suddenly find out at the last minute that you are the bottleneck and everybody is breathing down your neck asking you what is taking you so long to [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/03/28/adrift-in-a-sea-of-conflicting-priorities-and-assignments-heres-a-life-preserver/' addthis:title='Adrift in a Sea of Conflicting Priorities and Assignments? Here&#039;s a Life Preserver! '  ><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/2008/03/28/adrift-in-a-sea-of-conflicting-priorities-and-assignments-heres-a-life-preserver/' addthis:title='Adrift in a Sea of Conflicting Priorities and Assignments? Here&#039;s a Life Preserver! ' ><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>Do you ever feel like things are out of control on your project, that you are adrift in a sea of conflicting priorities and requests? Do you suddenly find out at the last minute that you are the bottleneck and everybody is breathing down your neck asking you what is taking you so long to create the moveStuff() method but you had no idea that anybody even cared about moveStuff() or that you owned it? Do you ever find yourself in the exact opposite position, wondering why Sue and Bob didn’t get their stuff done that you need and then your boss walks by while you are surfing the net waiting for Sue and Bob? And who is Bob anyway?</p>
<p>The solution is simple! All you need to do is get everybody to move to Project. Well, if you have somebody you can spare full-time to keep Project up to date of course. Oh and I almost forgot, you’ll need to start using a requirements tool. But that’s it really, other than integrating them all together over the weekend and of course that’s assuming you’ve already gotten a CRM tool for workflow.</p>
<p>There is a simpler solution. It isn’t perfect, and it doesn’t solve all problems, but it can definitely provide the following benefits:</p>
<ul>
<li>reduce the chaos</li>
<li>increase your vision into where you are and what’s going on</li>
<li>reduce the number of status and/or project management meetings</li>
<li>reduce the need to provide the same information over and over again</li>
<li>simplify collaboration both locally and for distributed teams</li>
<li>provide a more Agile workflow</li>
</ul>
<p>The answer is to reduce the amount of rework that you are already doing. Right now you are probably storing defects in a defect tracking system, enhancements (aka RFEs, requirements, etc) in a requirements management tool (usually Excel or Word but sometimes an actual RM tool), and if you are using a project management tool it is probably MS-Project. All three of these product areas evolved to provide different aspects of project management for different groups of people and as a result they have lots of overlap. Considering how hard it is to coordinate three different systems, why not consider standardizing on one system for most of the work? The only question is, which system?</p>
<p>If we are going to try to do most of our project management work in a single tool, we should first decide what the interesting activities are. I believe they are: recording enhancement requests and defects as they are gathered by marketing or reported by users, load balancing, estimated completion calculation, critical path determination, work assignment, workflow, and reporting.</p>
<p>First let’s consider how well suited Project is for doing most or all of these tasks. Project is good at taking a small static collection of large tasks and doing load balancing, estimated completion, and critical path determination. Thus, it is mostly used for the very narrow task of project management of enhancements.</p>
<p>Next let’s consider requirements management. For whatever reason, most people use Excel or Word as their requirements management tool instead of a “real” requirements management tool. Excel and Word are just not appropriate for project management.</p>
<p>Lastly, there is defect tracking. A defect tracking system covers the assignment, tracking, workflow and reporting of defects. There is usually a higher volume of defects than enhancements, and they are usually smaller in scope and have a more complicated and often more time critical workflow. If it works well for defects, it should work equally well for enhancements.</p>
<p>Based on this analysis, it makes sense to extend the project management that you are already doing with a defect tracking system to include enhancements. A generic name for something that is either a requirement, enhancement, or defect is “work item.” By using work items to track all work, it is easy to see where you are and what remains to be done. Now you can use a similar workflow for enhancements as you do for defects, for instance from newly entered, to triaging, to assignment, to test development, to completion, to test, to integration, to delivery. You can easily run a query to see which work items have their code written but do not yet have any tests. Similarly, you can see which work items are done from a coding perspective and have tests but have not yet been verified as done by QA. This will give you a much more complete view of your overall project status and progress.</p>
<p>Whatever you are currently using for defect tracking it will be straightforward to start getting the benefits of managing defects and enhancements together. Just add a field that indicates if a work item is a defect or an enhancement. You may need to make a few more changes to accommodate a slightly different workflow for enhancements than you have for defects, but I think you&#8217;ll find it is worth the effort. For one example of how this can work, you can take a look at how AccuRev does it using <a target="_blank" href="http://www.accurev.com/accuworkflow.html">AccuWorkflow</a>.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/03/28/adrift-in-a-sea-of-conflicting-priorities-and-assignments-heres-a-life-preserver/' addthis:title='Adrift in a Sea of Conflicting Priorities and Assignments? Here&#039;s a Life Preserver! '  ><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/2008/03/28/adrift-in-a-sea-of-conflicting-priorities-and-assignments-heres-a-life-preserver/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Eclipse BIRT and AccuRev for Developer Reporting cont&#039;d</title>
		<link>http://accurev.com/blog/2008/01/11/eclipse-birt-and-accurev-for-developer-reporting-contd/</link>
		<comments>http://accurev.com/blog/2008/01/11/eclipse-birt-and-accurev-for-developer-reporting-contd/#comments</comments>
		<pubDate>Fri, 11 Jan 2008 16:30:56 +0000</pubDate>
		<dc:creator>jsherwood</dc:creator>
				<category><![CDATA[AccuRev]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Tips and Tricks]]></category>
		<category><![CDATA[BIRT]]></category>
		<category><![CDATA[developer reporting]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Eclipse BIRT]]></category>
		<category><![CDATA[issue query in AccuRev]]></category>
		<category><![CDATA[SCM]]></category>
		<category><![CDATA[SCM reporting]]></category>
		<category><![CDATA[Software Configuration Management]]></category>

		<guid isPermaLink="false">http://blog.accurev.com/2008/01/11/eclipse-birt-and-accurev-for-developer-reporting-contd/</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/01/11/eclipse-birt-and-accurev-for-developer-reporting-contd/' addthis:title='Eclipse BIRT and AccuRev for Developer Reporting cont&#039;d ' ><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 prior blog on this topic I talked about the types of data I wanted to collect for developer reporting, and the basics I had to do to get the information out of the AccuRev software configuration management tool and into the Eclipse BIRT tool in Eclipse. I promised charts, but before I get [...]<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/01/11/eclipse-birt-and-accurev-for-developer-reporting-contd/' addthis:title='Eclipse BIRT and AccuRev for Developer Reporting cont&#039;d '  ><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/2008/01/11/eclipse-birt-and-accurev-for-developer-reporting-contd/' addthis:title='Eclipse BIRT and AccuRev for Developer Reporting cont&#039;d ' ><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 <a target="_blank" href="http://blog.accurev.com/2007/12/06/birt-and-accuwork/" title="BIRT and AccuWork">prior blog</a> on this topic I talked about the types of data I wanted to collect for developer reporting, and the basics I had to do to get the information out of the AccuRev <a target="_blank" href="http://www.accurev.com/downloads.html">software configuration management</a> tool and into the <a target="_blank" href="http://www.eclipse.org/birt/phoenix/">Eclipse BIRT</a> tool in Eclipse.</p>
<p>I promised charts, but before I get there, I realized I had to do a little more work to massage the data for use with BIRT. When you do an issue query in AccuRev (see <a target="_blank" href="http://blog.accurev.com/2007/12/06/birt-and-accuwork/" title="BIRT and AccuWork">prior post</a>) the details for AccuRev users are only exported as the id number. To get this to look nice I ran a second command (<b>accurev show -fx users</b>) to get the user information as xml data. Most AccuRev commands have xml output in the format of &lt;AcResponse&gt;&#8230;&lt;/AcResponse&gt; so I then ran this result through another xsl parser. My xsl file is straightforward and looks like this:</p>
<p>&lt;?xml version=&#8217;1.0&#8242; encoding=&#8217;utf-8&#8242; ?&gt;<br />
&lt;xsl:stylesheet xmlns:xsl=&#8221;http://www.w3.org/1999/XSL/Transform&#8221; version=&#8221;1.0&#8243;&gt;<br />
&lt;xsl:output method=&#8221;xml&#8221;/&gt;</p>
<p>&lt;xsl:template match=&#8221;/&#8221;&gt;<br />
&lt;users&gt;<br />
&lt;xsl:apply-templates select=&#8221;/AcResponse&#8221;/&gt;<br />
&lt;/users&gt;<br />
&lt;/xsl:template&gt;</p>
<p>&lt;xsl:template match=&#8221;AcResponse&#8221;&gt;<br />
&lt;xsl:apply-templates/&gt;<br />
&lt;/xsl:template&gt;</p>
<p>&lt;xsl:template match=&#8221;Element&#8221;&gt;<br />
&lt;user&gt;<br />
&lt;number&gt;<br />
&lt;xsl:value-of select=&#8221;@Number&#8221;/&gt;<br />
&lt;/number&gt;<br />
&lt;name&gt;<br />
&lt;xsl:value-of select=&#8221;@Name&#8221;/&gt;<br />
&lt;/name&gt;<br />
&lt;/user&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;/xsl:stylesheet&gt;</p>
<p>This generated user tags which I could then use as a lookup when converting the issue data. The output of running this gave me the following xml file (names removed):</p>
<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;&lt;users&gt;<br />
&lt;user&gt;&lt;number&gt;1&lt;/number&gt;&lt;name&gt;&#8230;&lt;/name&gt;&lt;/user&gt;<br />
&lt;user&gt;&lt;number&gt;2&lt;/number&gt;&lt;name&gt;&#8230;&lt;/name&gt;&lt;/user&gt;<br />
&lt;/users&gt;</p>
<p>I could now run the issue xml through another xsl translation, which would use the xml above as a lookup table for user details. The issue xsl I used looks like this:</p>
<p><span id="more-92"></span></p>
<p>&lt;?xml version=&#8217;1.0&#8242; encoding=&#8217;utf-8&#8242; ?&gt;<br />
&lt;xsl:stylesheet xmlns:xsl=&#8221;http://www.w3.org/1999/XSL/Transform&#8221; version=&#8221;1.0&#8243;&gt;<br />
&lt;xsl:output method=&#8221;xml&#8221;/&gt;</p>
<p>&lt;!&#8211; Begin Lookup table of users &#8211;&gt;<br />
&lt;!&#8211; Setup key &#8211;&gt;<br />
&lt;xsl:key name=&#8221;user-lookup&#8221; match=&#8221;user&#8221; use=&#8221;number&#8221;/&gt;<br />
&lt;!&#8211; Setup variable for users lookup file &#8211;&gt;<br />
&lt;xsl:variable name=&#8221;users-top&#8221; select=&#8221;document(&#8216;activeUsers.out&#8217;)/users&#8221;/&gt;</p>
<p>&lt;!&#8211; Setup match for lookup of users &#8211;&gt;<br />
&lt;xsl:template match=&#8221;users&#8221;&gt;<br />
&lt;xsl:param name=&#8221;curr-user&#8221;/&gt;<br />
&lt;xsl:value-of select=&#8221;key(&#8216;user-lookup&#8217;, $curr-user)/name&#8221;/&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;!&#8211; End setup match for lookup of users &#8211;&gt;<br />
&lt;!&#8211; End Lookup table of users &#8211;&gt;</p>
<p>&lt;!&#8211; Setup match for submittedBy &#8211;&gt;<br />
&lt;xsl:template match=&#8221;submittedBy&#8221;&gt;<br />
&lt;xsl:apply-templates select=&#8221;$users-top&#8221;&gt;<br />
&lt;xsl:with-param name=&#8221;curr-user&#8221; select=&#8221;.&#8221;/&gt;<br />
&lt;/xsl:apply-templates&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;!&#8211; End match for submittedBy &#8211;&gt;</p>
<p>&lt;!&#8211; Setup match for assignedTo &#8211;&gt;<br />
&lt;xsl:template match=&#8221;assignedTo&#8221;&gt;<br />
&lt;xsl:apply-templates select=&#8221;$users-top&#8221;&gt;<br />
&lt;xsl:with-param name=&#8221;curr-user&#8221; select=&#8221;.&#8221;/&gt;<br />
&lt;/xsl:apply-templates&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;!&#8211; End match for assignedTo &#8211;&gt;</p>
<p>&lt;!&#8211; Setup match for closedBy &#8211;&gt;<br />
&lt;xsl:template match=&#8221;closedBy&#8221;&gt;<br />
&lt;xsl:apply-templates select=&#8221;$users-top&#8221;&gt;<br />
&lt;xsl:with-param name=&#8221;curr-user&#8221; select=&#8221;.&#8221;/&gt;<br />
&lt;/xsl:apply-templates&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;!&#8211; End match for closedBy &#8211;&gt;</p>
<p>&lt;xsl:template match=&#8221;/&#8221;&gt;<br />
&lt;xsl:apply-templates select=&#8221;/acResponse&#8221;/&gt;<br />
&lt;/xsl:template&gt;</p>
<p>&lt;xsl:template match=&#8221;issues&#8221;&gt;<br />
&lt;issues&gt;<br />
&lt;xsl:apply-templates/&gt;<br />
&lt;/issues&gt;<br />
&lt;/xsl:template&gt;</p>
<p>&lt;xsl:template match=&#8221;issue&#8221;&gt;<br />
&lt;issue&gt;<br />
&lt;issueNum&gt;<br />
&lt;xsl:value-of select=&#8221;issueNum/.&#8221;/&gt;<br />
&lt;/issueNum&gt;<br />
&lt;status&gt;<br />
&lt;xsl:apply-templates select=&#8221;status&#8221;/&gt;<br />
&lt;/status&gt;<br />
&lt;state&gt;<br />
&lt;xsl:apply-templates select=&#8221;state&#8221;/&gt;<br />
&lt;/state&gt;<br />
&lt;severity&gt;<br />
&lt;xsl:apply-templates select=&#8221;severity&#8221;/&gt;<br />
&lt;/severity&gt;<br />
&lt;priority&gt;<br />
&lt;xsl:value-of select=&#8221;priority/.&#8221;/&gt;<br />
&lt;/priority&gt;<br />
&lt;dateSubmitted&gt;<br />
&lt;xsl:value-of select=&#8221;dateSubmitted/.&#8221;/&gt;<br />
&lt;/dateSubmitted&gt;<br />
&lt;dateClosed&gt;<br />
&lt;xsl:value-of select=&#8221;dateClosed/.&#8221;/&gt;<br />
&lt;/dateClosed&gt;<br />
&lt;dateCompleted&gt;<br />
&lt;xsl:value-of select=&#8221;dateCompleted/.&#8221;/&gt;<br />
&lt;/dateCompleted&gt;<br />
&lt;dateAssigned&gt;<br />
&lt;xsl:value-of select=&#8221;dateAssigned/.&#8221;/&gt;<br />
&lt;/dateAssigned&gt;<br />
&lt;submittedBy&gt;<br />
&lt;xsl:apply-templates select=&#8221;submittedBy&#8221;/&gt;<br />
&lt;/submittedBy&gt;<br />
&lt;assignedTo&gt;<br />
&lt;xsl:apply-templates select=&#8221;assignedTo&#8221;/&gt;<br />
&lt;/assignedTo&gt;<br />
&lt;closedBy&gt;<br />
&lt;xsl:apply-templates select=&#8221;closedBy&#8221;/&gt;<br />
&lt;/closedBy&gt;<br />
&lt;/issue&gt;<br />
&lt;!&#8211; xsl:apply-templates/ &#8211;&gt;<br />
&lt;/xsl:template&gt;</p>
<p>&lt;xsl:template match=&#8221;status&#8221;&gt;<br />
&lt;xsl:attribute name=&#8221;name&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;.&#8221;/&gt;<br />
&lt;/xsl:attribute&gt;<br />
&lt;xsl:attribute name=&#8221;value&#8221;&gt;<br />
&lt;xsl:choose&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;New&#8217;&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;1&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;Reviewed&#8217;&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;2&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;Scheduled&#8217;&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;3&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;Closed&#8217;&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;4&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:otherwise&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;0&#8242;&#8221;/&gt;<br />
&lt;/xsl:otherwise&gt;<br />
&lt;/xsl:choose&gt;<br />
&lt;/xsl:attribute&gt;<br />
&lt;/xsl:template&gt;</p>
<p>&lt;xsl:template match=&#8221;state&#8221;&gt;<br />
&lt;xsl:attribute name=&#8221;name&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;.&#8221;/&gt;<br />
&lt;/xsl:attribute&gt;<br />
&lt;xsl:attribute name=&#8221;value&#8221;&gt;<br />
&lt;xsl:choose&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;Verified&#8217;&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;3&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;Complete&#8217;&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;4&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:otherwise&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;0&#8242;&#8221;/&gt;<br />
&lt;/xsl:otherwise&gt;<br />
&lt;/xsl:choose&gt;<br />
&lt;/xsl:attribute&gt;<br />
&lt;/xsl:template&gt;</p>
<p>&lt;xsl:template match=&#8221;severity&#8221;&gt;<br />
&lt;xsl:attribute name=&#8221;name&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;.&#8221;/&gt;<br />
&lt;/xsl:attribute&gt;<br />
&lt;xsl:attribute name=&#8221;value&#8221;&gt;<br />
&lt;xsl:choose&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;A'&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;1&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;B'&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;2&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;C'&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;3&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;D'&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;4&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:when test=&#8221;.=&#8217;E'&#8221;&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;5&#8242;&#8221;/&gt;<br />
&lt;/xsl:when&gt;<br />
&lt;xsl:otherwise&gt;<br />
&lt;xsl:value-of select=&#8221;&#8217;0&#8242;&#8221;/&gt;<br />
&lt;/xsl:otherwise&gt;<br />
&lt;/xsl:choose&gt;<br />
&lt;/xsl:attribute&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;/xsl:stylesheet&gt;</p>
<p>I had to scratch my head how to setup a lookup xml file, until I found <a target="_blank" href="http://www.ibm.com/developerworks/library/x-xsltip.html" title="XSLT lookup Tables">this article</a> on the IBM developerWorks site. It took some experimenting, but the xsl file above did the trick. I could have done a similar lookup for the status/state changes that are also in this xsl file, but it was quicker to enter these values directly. The side effect to keep in mind is because I don&#8217;t dynamically(today) get these values then if they change the xsl file needs to change.</p>
<p>After using this xsl file I get my new issue xml which looks like this (names removed and formatted for display):</p>
<blockquote></blockquote>
<p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;<br />
&lt;issues&gt;<br />
&lt;issue&gt;<br />
&lt;issueNum&gt;1092&lt;/issueNum&gt;<br />
&lt;status name=&#8221;Closed&#8221; value=&#8221;4&#8243;/&gt;<br />
&lt;state name=&#8221;Verified&#8221; value=&#8221;3&#8243;/&gt;<br />
&lt;severity name=&#8221;D&#8221; value=&#8221;4&#8243;/&gt;<br />
&lt;priority&gt;0&lt;/priority&gt;<br />
&lt;dateSubmitted&gt;943077600&lt;/dateSubmitted&gt;<br />
&lt;dateClosed&gt;1188926921&lt;/dateClosed&gt;<br />
&lt;dateCompleted&gt;1172186181&lt;/dateCompleted&gt;<br />
&lt;dateAssigned&gt;943077600&lt;/dateAssigned&gt;<br />
&lt;submittedBy&gt;&#8230;&lt;/submittedBy&gt;<br />
&lt;assignedTo&gt;&#8230;&lt;/assignedTo&gt;<br />
&lt;closedBy&gt;&#8230;&lt;/closedBy&gt;<br />
&lt;/issue&gt;<br />
&lt;issue&gt;<br />
&lt;issueNum&gt;2614&lt;/issueNum&gt;<br />
&lt;status name=&#8221;Scheduled&#8221; value=&#8221;3&#8243;/&gt;<br />
&lt;state name=&#8221;Complete&#8221; value=&#8221;4&#8243;/&gt;<br />
&lt;severity name=&#8221;C&#8221; value=&#8221;3&#8243;/&gt;<br />
&lt;priority&gt;0&lt;/priority&gt;<br />
&lt;dateSubmitted&gt;1007048693&lt;/dateSubmitted&gt;<br />
&lt;dateClosed&gt;1149106741&lt;/dateClosed&gt;<br />
&lt;dateCompleted&gt;1189024691&lt;/dateCompleted&gt;<br />
&lt;dateAssigned&gt;1120772200&lt;/dateAssigned&gt;<br />
&lt;submittedBy&gt;&#8230;&lt;/submittedBy&gt;<br />
&lt;assignedTo/&gt;<br />
&lt;closedBy&gt;&#8230;&lt;/closedBy&gt;<br />
&lt;/issue&gt;<br />
&lt;/issues&gt;</p>
<p>Phew. That being done, I now had a fairly automated method for extracting project issues, lookup tables for extraneous information, and xsl files to massage the data before processing in BIRT. Now I could bring the data into BIRT and begin setting up charts.</p>
<p>I spoke to some extent in the previous blog about the calculated fields I used in BIRT. I&#8217;ve since added a few more. I added a computed column which combines status and state, to make it easier to create certain chart groupings. Because these are two string fields it was as simple as putting in <b>row["status"]+&#8221;/&#8221;+row["state"]</b> as the expression.</p>
<p>I then also added the days to complete an issue, using this expression: <b>(row["dateCompleted"]-row["dateSubmitted"])/86400</b></p>
<p>I now had enough information to create the 7 charts I wanted. I&#8217;ll highlight two that worked well for my purposes.</p>
<p>For completed issues by developer, I used the &#8216;assignedTo&#8217; row as the Category (X) series, turned on grouping and set the interval to 0 so that each developer would get their own line. The Value (Y) Series was then the &#8216;issueNum&#8217; row. From this I got the following chart:</p>
<div style="text-align:center"><img src="http://www.accurev.com/blog/wp-content/uploads/2007/12/issuesbydeveloper.png" alt="Completed Issues By Developer" title="Eclipse BIRT and AccuRev for Developer Reporting cont&#039;d" /></div>
<p>Not bad, and it served my purpose. I could get a quick overview of how the issues were distributed. Some developers may cringe at seeing this type of information, as they fear they are not doing as much as their coworkers, but those reviewing the information have to keep in mind that there are lots of reasons for the issue distribution that is seen. Developers may be assigned more difficult work or not be on the project full time, and these basic numbers will not reflect the extent of these external factors. If you find you cannot easily answer these questions, then you need to find a way to track these external factors and include them in your <a target="_blank" href="http://www.accurev.com/issue-tracking.html">issue management system</a>.</p>
<p>For Severity Distribution, I wanted to take a look at what the general types of issues were that were resolved in the release. This was pretty easy. I created a pie chart, using issueNum as the series and severity as the category (grouping as text and getting the count). Using this I quickly got this chart:</p>
<p><a href="http://www.accurev.com/blog/wp-content/uploads/2008/01/severitydistribution.jpg" title="Severity Distribution"></a></p>
<div style="text-align:center"><a href="http://www.accurev.com/blog/wp-content/uploads/2008/01/severitydistribution.jpg" title="Severity Distribution"><img src="http://www.accurev.com/blog/wp-content/uploads/2008/01/severitydistribution.jpg" alt="Severity Distribution" title="Eclipse BIRT and AccuRev for Developer Reporting cont&#039;d" /></a></div>
<p>Not a bad chart. Our use of severity A is in indication of crashes, so while some were fixed hopefully that is not the focus of the release. By the same token severity D and E cover a lot of cosmetic issues, so this release was a good distribution of the type of issues that should be addressed when preparing a release.</p>
<p>That&#8217;s about it for now. We&#8217;ve started adopting more agile practices, and in particular scrum methodologies, so now I want to revisit the BIRT configuration and start modifying it to generate burn down charts. Perhaps when I&#8217;ve made some progress here I&#8217;ll share some more.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://accurev.com/blog/2008/01/11/eclipse-birt-and-accurev-for-developer-reporting-contd/' addthis:title='Eclipse BIRT and AccuRev for Developer Reporting cont&#039;d '  ><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/2008/01/11/eclipse-birt-and-accurev-for-developer-reporting-contd/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

