1.2. Hackystat's Architecture

One way of viewing Hackystat's architecture is as a client-server system:

Figure 1.1.  The client-server architecture of Hackystat.


The client-server architecture of Hackystat.

In this view, the "clients" are development environment tools, such as editors (Emacs, Eclipse, Vim), configuration management systems (CVS, Harvest), build tools (Ant, Make), Unit Testing tools (JUnit), and so forth. For each of these tools, a custom Hackystat sensor must be developed. It is "custom" in the sense that it must use the plug-in or extension point API for the tool, and "custom" in the sense that the type of product or process data that it collects is specific to the tool it supports.

Once data is collected by these client-side sensors, it is transmitted using SOAP to the "server", which is a custom web application running within a conventional servlet-supporting web server such as Apache Tomcat. Note that the client-side sensors have the ability to cache data in the event that a network connection cannot be made to the server and resend it later, allowing the developers to work offline.

Upon receipt of the "raw" sensor data by the server, various analyses can be run. Some of these analyses are run automatically by the server each day, others are run only when invoked by developers from a Web Browser interface. The goal of these analyses are typically to create abstractions of the raw sensor data stream that help developers and managers to interpret the current state and trajectory of the project and gain insight into possible problems or opportunities for improvement going forward.

In certain cases, these abstractions can be automatically emailed back to the developers on a daily basis, creating a feedback loop.