The JDEEP Project plan
November 1st, 2007The aim of our project is to build a plugin for the eclipse environment to measure time productivity. We believe that working on code is a matter of style, creativity and high experiences. But these qualities have to do with time constraints, especially if coding is our work or it is our business revenue; in this case there should be a trade-off between the time we would spend on working on code and the time that is expected to be done for that work. For all these reason (and many others) we’re developing the JDEEP Plugin. We decide to create an extension for Eclipse because we think that it is nowadays one of the most used IDE for developing Java applications, and we also expect that the huge community that exist around this language and this IDE may be interested in this plugin and would like to join with us.
With this small program we would like to monitor the time that everybody of us spend on coding on our projects. As our final vision of the project, there should be the capabilities for the plugin to analyze in deep detail the time productivity into single pieces of code.
Since we are in a planning phase we propose now the overall schema and the step we are going to perform for this plugin in the next month.
The schema
The plugin is structured into several classes (remember divide et impera…) and everyone of that does a specific job. The plugin must be activated on Eclipse startup and it has to save information about activities of the previous eclipse session.
The overall behavior is this: the plugin measure the time we spent on coding single classes of our java project. For now we keep a detail level only on whole single java classes with the intention to do improvement about the detail of code monitoring as the project grows. To clock the time there is a thread that it is managed by a class: the thread is a simple timer that receive some parameters on the startup (like the clock rate to measure the user activity) and measure the time the programmer is involved in writing down the code for that specific file. Every time the programmer switch to an other java class there will be an event that call some methods and these methods will stop the thread timer, receive the interval of time and pass it to another class that managed a little registry.
Beacuse every session has to be monitored the plugin create appropriate flat text file to collect the data (no DBMS for the moment, any suggestion?). The programmer can recall in every moment a gui to obtain the information about the collected data. These data would be presented in various ways. Granularity and statistical information should be displayed to the user and any other representation of the data, like diagram and graph, could be obtain from the collected data, but we don’t care of it: the main purpose of this plugin is to achieve useful information to get data quality and the matter of how to represent them isn’t our primary goal, and we believe that this part (data representation) could be a good extension point of the plugin to everyone who is interested in.
Now we briefly list some feature of JDEEP plugin:
- there is a class that it’s started as soon as the user launch Eclipse and it has the task to initialize and set-up the plugin and recall the saved data
- There is a class that implement the interface of action listener for the gui of Eclipse, in particular the editor UI
- While the programmer is coding on different file (java classes) the extension measure the time and collect data
- There are some classes that managed the data, aggregating it and storing them on flat file
- In every moment the user can recall information about his/her activity and there is a class that read the file and present the information in a popup GUI
You can view the graphical schema of the plugin at the wiki page on sourceforge.