Monday, February 25, 2008

REST principle

I was introduced to the REST architecture in our class. REST is basically a software architecture that outlines how resources are defined and addressed. Some key-features of REST includes:
- All resources has a unique URI.
- Each request is an independent transaction, i.e. stateless communication
- Employs standard methods, namely GET, POST, PUT, DELETE

We are working on building a Hackystat sensor for Visual Studio. REST is a very reasonable architecture but I don't think we need to provide a RESTful interface for the sensor. Basically, the sensor is build as an Add-In to Visual Studio where it extracts user activities and sends the data to the Hackystat SensorBase via the SensorShell. Since data transfer is done by the SensorShell, the main job is the sensor is to communicate between the SensorShell and the Visual Studio and so it doesn't need to employ REST principles. For example, it does not have use standard GET and POST methods.

The Hackystat SensorBase follows the REST principle pretty well. Resources are given their unique URIs and they are employing the standard HTTP methods which are GET, PUT, DELETE, HEAD, and POST.

On the other hand, I don't think the Hackystat ProjectViewer follows the REST principle. Resources all share the same URI. Users are not able to retrieve a particular resources by typing in URI alone.

Monday, February 11, 2008

Introduction to Hackystat

This assignment didn't take me too long as I have gone through these step already. I installed Hackystat at the beginning of the semester for my thesis and so this assignment was mainly just a re-visit of the tutorials. I didn't encounter any problem this time. However, I remember havinh problem with the Ant sensor the first time I use it as I was confused with how to set up the environment variable but that was just a minor problem that was easily fixed. Other than that, I don't think I went into any other problems. The detail documentation along with screenshots were really helpful and that solved a lot of potential problems during installation of Hackystat.

For this semester, I hope to first get an idea of my own software engineering practice through Hackystat. I wish to get a better idea of how I organize my time around a project. It will hopefully help me develop a healthier software development process, i.e. a steady and persistent trend of time spend on the project instead of staying up for nights before the project is due. I am also very interested in knowing other aspect of my software development process such as whether I am following the test driven development practice or not.

Also, for our project this semester, we will be building sensors for Hackystat. The first sensor that we are going to build is designed for Visual Studio. In order to build a sensor for Hackystat, it is essential to get familiarized with how to use Hackystat to collect data. So we will probably be employing Hackystat with IDEs that we use most frequently such as Eclipse.

From my experience with Hackystat so far, I feel that it fulfilled all three of the Prime Directives successfully. It surely accomplishes a useful task: collect metrics for software development process and analyze them. An external user can also successfully install and use the system based on the result of this assignment. Finally, for external developers, there are detail documentation for each subproject of Hackystat which makes enhancing the system easier.

I have been reading the documentation and just playing around with Hackystat to familiarize myself with it for a while. I guess I am at a point where I feel comfortable to explore more of it and try out different possibilities with it and I am very much looking forward to that.