It’s Called A Head-to-Toe Exam For A Reason

Posted on Friday, November 07, 2008
0 commentsAdd comments

I was quite excited this week when presented with the idea of a Software ICU (SICU) for gauging the health of a software project based on a number of “vital signs”. Just like an Intensive Care Unit of a hospital, the idea of a SICU is to provide round-the-clock status monitoring a software project, in this case, the patient. The patient’s vitals consist of both measurable statistics that can be compared to a set of agreed upon quality development norms, as well as, additional statistics that offer insight, although somewhat ambiguous and less deterministic, as to a project's health.

Measurable Vitals
• Coverage Testing represents the amount of code a project’s test cases cover.
• Complexity determined through analysis of branching and looping in the project.
• Coupling reflects the bounding of the project classes to other classes (external and internal) and reliance by other classes (external and internal) upon them.
• Churn represents the amount of code change over a period of time.
• Code Issues determined by the number of compilation issues a project incurs.


Less Deterministic Vitals
• Size (LOC) reflects the size of the project in lines of code.
• Development Time reflects the aggregated development time of project members.
• Commits reflect the number of SVN commits members have made during the period.
• Builds represent the number of builds members have made during the period.
• Tests represent the number of test runs members have made during the period.

I’m a programmer, not a doctor, Jim!
A SICU allows a programmer to put on the hat of a software doctor, or perhaps more precisely, become a software surgeon. This is because, a SICU provides project team members the opportunity to focus attention where the patient most needs it. Just as a real ICU monitors the appropriate vital signs for its patients, when one or more of these vitals needs attention, the team of experts is able to focus quickly and exactingly where the problem is occurring. A SICU provides developers a direct measurement of the health of their project, and where vitals deviate from the accepted norms; they focus their attention and bring the patient back inline with those norms.
Exam Room 2 Is Open.
If you have been following my blogs over the past few weeks, you should be well aware that my partner and I have been working on the project DueDates-Silver, which queries libraries to return the items checked out by the user to a console window. Our objective this week was to connect our project to the electrodes and other measuring equipment provided by the Hackystat system. Just like an ICU, Hackystat provides all these measurements from a centralized location.

There were many steps to connect all the Hackystat electrodes to the DueDates-Silver project to get monitoring of its vitals on a daily basis. However, Hackystat has an excellent set of tutorials which make the process very clear and easy to follow, implement, and achieve with little hassle or issue.

We’ve got a pulse, doctor!
Being quite anxious to see what the vitals of DueDates-Silver would be, I took the time to get our project set up as quickly as possible. I was very pleased with our initial set of vitals, which continue to reaffirm the “measure twice, cut once” philosophy our project has used from its inception. Our vitals were:

vitals

It should be noted that the Size(LOC) column is not calculating appropriately at this time and should reflect at ~2400 lines of code.

When May I Schedule Your Follow-up Exam?
The information a SICU provides a team of developers is so empowering. It empowers them to focus on what is important and needs to improve, but more importantly it provides a holistic approach to management and evolution of the project. While DueDates-Silver fairs moderately well by its initial readings, it has room for improvement. I would like to decrease the project’s complexity to the range of 1.0 to 1.5. The coupling is manageable for now, but I would not like to see it increase much. And testing will continue to be a challenge to maintain at 90% as each new code line, block, method, and object class requires new tests be added to ensure the coverage remains at appropriate levels.

Comments (0)

Subscribe to: Post Comments (Atom)