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.
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/
Checkstyle http://checkstyle.sourceforge.net/
Findbugs http://findbugs.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