Friday, November 7, 2008

Hackystat and monitoring the "health" of a project

The latest tool being integrated into team orange's development of the Due Dates application is a monitoring tool called Hackystat. It's analogous to a hospital ICU patient monitoring system, but for software development. Various vital signs of a project are regularly recorded through various sensors embedded into developer's IDEs and code repositories. Hackystat can then display trends and latest statistics on the project including statistics on complexity, coupling, testing, lines of code, number of builds, developer time, and others.

assertTrue(this.version.equals(hackystat.getRequirements()))

After a bit of reading up on the material, I started first be setting up my local system to be able to report my usage through my Eclipse IDE, but immediately ran into a rather crippling problem, despite just a few very simple steps. The Hackystat plugin simply would not show up as an option to configure. I readded it several times, a bunch of Eclipse restarts, and a couple computer restarts, and double checked the instructions and my version of Eclipse against the requirements. Later, realizing/told that I was using a older version of Eclipse, 3.3.0, rather than the newer 3.4.0., though Hackystat required only 3.3.0, I installed the upgrade. At that point, Hackystat worked with no problems, so I notified a Hackystat developer about the situation.

Saved again

Having gotten the hard part out of the way, I was able to get start exploring the interaction between my projects and the Hackystat collection tools, which tended to be pretty verbose! At this point my partner had already set up Team Orange's data collection, but I went over it again to make sure everything was in place, which it appeared to be. For the most part the process was smooth but I did get a stuck a couple times with issues in /.hackystat/sensorshell. The first one being, I couldn't figure out where it was. I was a little confused about how it got there, how Hackystat found it, and what I could do about moving it since it was automatically created in a dreaded directory-with-spaces-in-the-name. Then, I seemed to miss the part about setting three variables, but saw the part about if this is your first time you won't need to change anything (else). I was rather perplexed for a time that I could not find the server. Eventually though my partner was able to get me back on track and Hackystat sensors started to pick me up on radar under all of the different build tools.

Our mostly healthy project

After seeing the first build, the project was appearing pretty healthy. Low complexity and coupling, over 80% coverage, though no real work in the last 24 hours. From there, we've gotten to see a few more days of monitoring. Due to some changes with handling, our rather intensive test suite and some design changes, the coverage had dropped off dramatically. Most other stats were healthy, so it's no cause for panic yet, and should pick up soon. I personally haven't had too much opportunity to commit code lately so hoping to get some of that done this weekend, and hammer out some additional details with my partner about our design and testing. I'm optimistic the results will boost our project well into the healthy range, and hopefully no major surgery will be necessary.

No comments: