Sunday, November 20, 2011

Issue Based Project Management


In this blog entry I summarize an experience with issue-based project management, using and evaluating Google project hosting (GPH) and the Jenkins continuous integration server.

Google Project Hosting

For open source projects, Google project hosting enables anyone a free collaborative development environment. It enables fine-grained control and configuration, choice of repository, features an issue tracker, wiki pages, downloads, and more. I found it relatively simple and very reliable, and it reportedly scales well.

Jenkins

Jenkins is the leading open-source continuous integration server. It monitors executions of repeated jobs, such as building a software project, and in our case specifically, running an Ant script that verifys the system. The script compiles the code, builds the javadoc, runs our Junit tests, and then runs QA tools  checkstyle, PMD, and findbugs. Every time we do a commit, Jenkins assures the system builds by doing all this automatically and reporting failures.

The Process

My partner and I worked in different locations, using the GPH issue management system to effectively create, maintain, and evolve tasks and issues for implementing and managing  this project. It is like a global “white-board”, or can be used that way - as it is very flexible and customizable. Each commit (I used Tortoise SVN for Windows) can be linked to issue(s) using syntactic metadata in the commit log message. There are so many useful features in GPH I cannot possibly cover them all here.
Figure 1. Google Project Hosting Issues Page hale-aloha-cli-jz


Our basic workflow for each issue/task was to apply/change labels at the appropriate time as: new (ownerless), accepted (owner), started (implementing), fixed (finished), and verified (other team member looks at code and agrees). Even non-coding tasks were easy to capture using GPH. It is so effective, we rarely had to email back and forth as you can imagine might be required for collaborating on a software development project. This process really worked well for us. From inception and specification, through implementation, and testing, and verification, it all went smoothly.

The Project

Wattdepot

The wattdepot open-source project developed at the University of Hawaii is a collection of technologies and tools for collecting and storing data from electricity meters for smart grid research and experimentation. From the wattdepot Google hosting site: “WattDepot is an open source, RESTful web service that collects electricity data (such as current power utilization or cumulative power utilization) from meters and stores it in a database. The data can then be retrieved by other tools for visualization and analysis. It is designed to provide infrastructure for experimentation and development of "Smart Grid" applications.”

Hale-aloha-cli-jz

Our project, hale-aloha-cli-jz is a command line interface program written in the Java programming language, that interacts with wattdepot. Using hale-aloha-cli-jz can help those persons interested to understand various aspects of energy use without having to write code against the wattdepot API.

Functionality Implemented

The hale-aloha-cli-jz command line interface provides an interface to a subset of the wattdepot energy and power API .


Available Commands
  • current-power displays the current power in kW for the requested tower or lounge.
  • daily-energy displays the energy in kWh used by the requested tower or lounge for the specified date.
  • energy-since displays the energy used from date specified to now.
  • rank-towers displays a list in sorted order from least to most energy consumed between the start and end dates specified, for the four hale-aloha towers (buildings).
  • quit terminates the program.
  • help displays the available commands and command line options.
The Command Syntax


current-power [tower | lounge]
daily-energy [tower | lounge] [date]
energy-since [tower | lounge] [date]
rank-towers [start date] [end date]
quit

help



Overall quality of software  

I feel the quality of the code we developed is good, and in fact - better that it would have been without using Google Project Hosting and Jenkins. More importantly, I believe we developed the code faster, with less conflict and errors had we not used these project management tools.

Links to more information

Hale-aloha-cli-jz                               http://code.google.com/p/hale-aloha-cli-jz/
Google Project Hosting                     http://code.google.com/hosting/
Jenkins Continuous Integration         http://jenkins-ci.org
WattDepot                                       http://code.google.com/p/wattdepot/
Ant                                                  http://ant.apache.org/
Checkstyle                                       http://checkstyle.sourceforge.net/
Findbugs                                          http://findbugs.sourceforge.net/
PMD                                                http://pmd.sourceforge.net/
Tortoise SVN                                    http://tortoisesvn.net/
Eclipse                                            http://www.eclipse.org/
Jacoco Code coverage tool               http://www.eclemma.org/jacoco/























No comments:

Post a Comment