»
S
I
D
E
B
A
R
«
Using jgraph to make your burndown chart
September 21st, 2009 by cjbarroso

In the begining, there was Excel…
As most of the new practitioners, I started to make my charts in a spreadsheet (Excel, OO Calc). Like all the tools made too generalistic, I don’t like it, and felt that something is terribly wrong in the universe.
Then I start a search for a tool that:

1- Can be used from the CLI
2- The graphic can be written / modified by the most quantity of tools possible.
3- Use a text-only format. Well, this wasn’t a requirement at first, but becames one when I find this tool

This excellent tool, found here was written by James S. Plank, at the University of Tennessee. In his own words, “Jgraph is a program that takes the description of a graph or graphs as input, and produces a postscript file on the standard output.”. This is an oversimplified description, and soon you will discover why.
Let’s get to work. In order to make a simple guide chart to attach to the wall, for example, we will write a simple text file called .jgr:


newgraph
newcurve 0 26 25 0 linetype solid

That’s it. This is a chart that I can attach to my wall and complement with some color markers while the current runs:

Burndown Chart 1

Chart 1

Well, that isn’t very impressive, right ? First, I will explain the parameters

Let’s add a caption for the graphic and the axes, and ajust a little the scale, so it becames really useful:


newgraph
title : Chart for project "My Project"
newcurve pts 0 26 25 0 linetype solid
xaxis size 9 label : Days
yaxis size 5 label : Story Points

This give us:

Burndown Chart, version two

Well, it’s getting better. Now let’s add a real line, and the line that represents the mean of work that have to be accomplished in the current . The code is as follows:

newgraph
title :  Chart for project "My Project"
newcurve pts 0 26 1 25 2 23 9 23 50 0 linetype solid
newcurve pts 0 26 50 0 linetype dotted
xaxis size 9 label : Days
yaxis size 5 label : Story Points

blog-burndown3As you can see, we have a dotted line representing the mean work and the line that represent th actual work done in each day. Now, this is all that I need to print and attach to the wall.

Making the source file useful

We are missing the one characteritic that wil make this post useful: the ability to edit the source file with automated tools easily. For doing this, we must make some changes to our last graph file, splitting the newcurve lines like this:

newgraph
title :  Chart for project "My Project"
xaxis size 9 label : Days
yaxis size 5 label : Story Points
newcurve
linetype dotted
pts 0 26
pts 50 0
newcurve
linetype solid
pts 0 26
pts 1 25
pts 2 23
pts 9 23

Note that we have splitted the lines representing the dots in the curve, and rearranged the file a little for automated edition purposes. This is a good time to explain the lines of the graph file:

  • newgraph: Start a new graphic
  • title: The title of the graphic, located below it
  • xaxis: This keyword has two attributes now, the size in inches and the label of the axis.
  • yaxis: Same as xaxis but for the vertical one :P
  • newcurve: Start to plot a new curve in this graphic
  • linetype: The type of line to plot, in this case a solid line
  • pts: Each of this line represents a dot in the graphic. The dots are automatically connected with a line.

You’ll see that I’ve used two linetype keywords, one for each newcurve keyword. This means that I’ll represent the mean time with a dotted line, and the real progress with a solid one. Having one dot per line allows me to edit this file using standard CLI tools. Attached to this post I’ve written a script to manipulate this file, it’s really more a proof of concept than anything else, but it can give you useful ideas.

In my case, I use Trac along with the agiletrac extension to control my process. I can write and attach a script triggered by the actual change in Trac, so the source .jgr file gets modified automatically, and the next day I just print the last version of the document again. I use two charts in my wall: First, the Release burdown chart, with the sum of the agreed stories as the total and the estimated time. The second with *this* , showing tha ammount of work commited to do and the length in the X axis.

Using the tool

If you have already intalled jgraph, go ahead. If not, download and build the source yourself or obtain a precompiled package for your OS. In my case (using Debian GNU/Linux 5.0) I just type:

root@casa:~#  aptitude install jgraph

You will also need ghostscript, a printing command that understand it or the ps2pdf tool. Use your imagination, my way to do the charts is as follow:

charlie@casa:~$ jgraph -P -L .jgr | ps2pdf - .pdf

I will have then the .pdf file containing the plotted graphic with it’s two curves. The -L parameter makes the grapic landscape, and the -P option outputs postscript code instead of encapsulated postscript.

Conclusion

If you are like my and love the CLI, then this is the tool for your burndowns. It’s a little help for your process and one trouble less for the post-standup meeting hour.

If you want more information on the use of the tool, don’t hesitate to write me. Best regards!


Leave a Reply

Powered by WP Hashcash

»  Substance: WordPress   »  Style: Ahren Ahimsa