Including Overestimates in MSF Agile Burndown Report

Posted on Dot net Slackers See other posts from Dot net Slackers
Published on Fri, 26 Mar 2010 00:00:00 GMT Indexed on 2010/03/26 16:53 UTC
Read the original article Hit count: 561

Filed under:

After using the MSF Agile Burndown report for a few weeks in our new TFS 2010 environment, I have to say I am a huge fan.  I especially find the assignment of Work (hours) portion to be very useful in motivating the team to keep their tasks up to date every day.  Here is a view of the report that you get out of the box.

image

However, I have one problem.  Id like the top line to have some more meaning.  Specifically, when it is changing is that an indication of scope creep, mis-estimation or a combination of the two.  So, today I decided to try to build in a view that would show overestimated time.  This would give me a more consistent top line.  My idea was to add another visual area on top of the graph whenever my originally estimated time was greater than the sum of completed and remaining.  This will effectively show me at least when the top line goes down whether it was scope change or over-estimation.

Here is the final result.

image

How did I do it? 

Step 1: Add Cumulative_Original_Estimate field to the dsBurndown

My approach was to follow the pattern where the completed time is included in the burndown chart and add my Overestimated hours.  First I added a field to the dsBurndown to hold the estimated time.

        <Field Name="Cumulative_Original_Estimate">
         
<DataField><?xml version="1.0" encoding="utf-8"?><Field xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:type="Measure" UniqueName="[Measures].[Microsoft_VSTS_Scheduling_OriginalEstimate]" /></DataField>
         
<rd:TypeName>System.Int32</rd:TypeName>
       
</Field>

Step 2: Add a column to the query

SELECT
{
   
[Measures].[DateValue],
   
[Measures].[Work Item Count],
   
[Measures].[Microsoft_VSTS_Scheduling_RemainingWork],
   
[Measures].[Microsoft_VSTS_Scheduling_CompletedWork],
   
[Measures].[Microsoft_VSTS_Scheduling_OriginalEstimate],
   
[Measures].[RemainingWorkLine],
   
[Measures].[CountLine]

Step 3: Add a new Item to the QueryDefinition

<Item>
<ID xsi:type="Measure">
<MeasureName>Microsoft_VSTS_Scheduling_OriginalEstimate</MeasureName>
<UniqueName>[Measures].[Microsoft_VSTS_Scheduling_OriginalEstimate]</UniqueName>
</ID>
<ItemCaption>Cumulative Original Estimate</ItemCaption>
<FormattedValue>true</FormattedValue>
</Item>

Step 4: Add a new ChartMember to DundasChartControl1

The burndown chart is called DundasChartControl1.  I need to add a ChartMember for the estimated time.

<ChartMember>
 
<Label>Cumulative Original Estimate</Label>
</ChartMember>

Step 5: Add a ChartSeries to show the Overestimated Time

<ChartSeries Name="OriginalEstimate">
 
<Hidden>=IIF(Parameters!YAxis.Value="count",True,False)</Hidden>
 
<ChartDataPoints>
   
<ChartDataPoint>
     
<ChartDataPointValues>
       
<Y>=IIF(Parameters!YAxis.Value = "hours", IIF(SUM(Fields!Cumulative_Original_Estimate.Value)>SUM(Fields!Cumulative_Completed_Work.Value+Fields!Cumulative_Remaining_Work.Value), SUM(Fields!Cumulative_Original_Estimate.Value-(Fields!Cumulative_Completed_Work.Value+Fields!Cumulative_Remaining_Work.Value)),Nothing),Nothing)</Y>
     
</ChartDataPointValues>
     
<ChartDataLabel>
       
<Style>
          <FontFamily
>Microsoft Sans Serif</FontFamily>
          <FontSize
>8pt</FontSize>
        </
Style>
     
</ChartDataLabel>
     
<Style>
        <Border
>
          <Color
>#9bdb00</Color>
          <Width
>0.75pt</Width>
        <
/Border>
        <Color
>#666666</Color>
        <BackgroundGradientEndColor
>#666666</BackgroundGradientEndColor>
      </
Style>
     
<ChartMarker>
       
<Style />
      </
ChartMarker>
     
<CustomProperties>
       
<CustomProperty>
         
<Name>LabelStyle</Name>
         
<Value>Top</Value>
       
</CustomProperty>
     
</CustomProperties>
   
</ChartDataPoint>
 
</ChartDataPoints>
 
<Type>Area</Type>
 
<Subtype>Stacked</Subtype>
 
<Style />
  <
ChartEmptyPoints>
   
<Style>
      <Color
>#00ffffff</Color>
    </
Style>
   
<ChartMarker>
     
<Style />
    </
ChartMarker>
   
<ChartDataLabel>
     
<Style />
    </
ChartDataLabel>
 
</ChartEmptyPoints>
 
<LegendName>Default</LegendName>
 
<ChartItemInLegend>
   
<LegendText>Overestimated Hours</LegendText>
 
</ChartItemInLegend>
 
<ChartAreaName>Default</ChartAreaName>
 
<ValueAxisName>Primary</ValueAxisName>
 
<CategoryAxisName>Primary</CategoryAxisName>
 
<ChartSmartLabel>
   
<Disabled>true</Disabled>
   
<MaxMovingDistance>22.5pt</MaxMovingDistance>
 
</ChartSmartLabel>
</ChartSeries>

Thats it.  I find the improved report to add some value over the out of the box version.  You can download the updated rdl for the report here

Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here.



Email this Article

© Dot net Slackers or respective owner