Monday, November 24, 2008

Big improves to Portfolio

Big improves to Portfolio
Last week I have implemented a big improvement to Portfolio Page. The feature is to color the previous uncolored measures by the member participation. The idea is from here: http://code.google.com/p/hackystat-ui-wicket/issues/detail?id=118

Most of the previous uncolored measures are implemented using the member-level telemetry except FileMetric. Therefore, it is possible and useful to color the chart according to the participation of the members to the project according to these measures, because a health project anticipates equal contribution from each member.

When fixing Issue 97, I added a interface called StreamTrendClassifier to let user select different coloring method for a measure. I thought this would faciliate future development and it does in some extent. When implementing participation coloring, I am using the Classifier interface to specify new classifier to the measure. But the problem I did not realize in the beginning is that, configuration to the new classifier, which requires text fields of member percentage, threshold value and frequency percentage, is quite different from the stream trend one, which requires higher/lower threshold and higherbetter check box. So I modify the interface greatly to let each classifier provide its own configuration panel. And this idea may be apply to the DPD page, where each data model provides its own data panel instead of letting the session to create the panel for it.

After complete the functionality, I change the interface of the configuration panel greatly to make it looks better. The old format that each measure occupys a row of table and each field use a column works fine with uniform configuration fields, but not with various field between measures. For example the first three measures have higher/lower threshold and higherbetter, and the latter three have member percentage, threshold value and frequency percentage, then the higher threshold will aligned in the same column as member percentage, but they just have nothing in common. This may cost users' confusion in both concept and vision. After some tryings, I finally arrange fields of a stream classifier veritically inside a table cell. A screen shot of the new interface is like below:

This is much clear that different configuration fields are following the classifier selection, and do not implicit any common over different measures, or say classifiers. As a result of this change, the configuration panel now lays between the input panel and detail panel because it is too high and narrow to put it above the detail panel now.

Plan for this week
Two priority jobs for this week is issue 113, which provide sortable column in portfolio table. And the issue track for ant sensor.

Monday, November 17, 2008

Portfolio and Issue sensor

Effort estimation of sortable portfolio columns

It is very useful to let the portfolio table sortable by value of the measures. There is two way to do it:
  1. Make the table headers links that will sort the table according to the value of the measure.
  2. Re-implement the portfolio detail table using DataTable, which support sorting.
Major effort of the first approach is to code the comparator, and the second's is to deploy the DataTable. The work to deploy DataTable is surely more because we have to implement the comparator after all. The benefit for that is, the DataTable looks more elegant. And we have more control over the content of each cell because each column can has its own class and html to define its display. However, as the current portfolio detail table looks good enough, I would prefer to go the first approach to add the feature with less work.

Issue Sensor

I start the sensor from the SVN sensor because it is using data from internet(svn repository) and therefore more similar to issue sensor than the other ant sensors which use data from local tools such as JUnit and EMMA. The issue sensor will grab data from feeds of Google Project Hosting, such as Feeds of hackystat-ui-wicket. I found a java api for RSS and ATOM named ROME to parse the feeds. The information of issue sensor data will include open/close an issue, change state of an issue and/or new comment to an issue. The initial implementation should be finished in this week.

Wednesday, November 12, 2008

Review of two papers

[1]A risk based economical approach for evaluating software project portfolios

[2]Portfolio management of software development projects using COCOMO II

The software project portfolios mentioned in these two papers are quite different from the software portfolio I am working and doing research on. The software portfolio they talked about are the portfolio used to evaluation investments on software projects to maximum the profits and help manager to optimize resource distribution, while our software portfolio is used to monitor the health state of software projects and help users to improve their development practices. However, there is an opportunity that these two kind of portfolio can cooperate together.

When estimate a project, [1] use a term called Risk Level and [2] introduce a set of factors to represent the similar attribute. In our portfolio, the chance a project may fail is indicated by the health state of the project. It is more accurate and objective than the risk value given by the manager. If we combine these two kind of portfolio and use our portfolio to evaluate projects' risk level, the estimation of final profits should be more reasonable and accurate.

Monday, November 10, 2008

Every thing seems going well

I am glad that students in ICS 413 are starting to use Hackystat now. I read some of their blog postings about it. They seems like the project portfolio quite a bit. Some of them did complain about the installation difficulties, but I complained it too when I am new to Hackystat, because we are all spoiled by the "click next to finish" install package.

Portfolio drill down to DPD

I was trying to add feature to portfolio that allow users to click on a value from detail table and retrieve a corresponding DPD analysis page. It will be an easy job if I can add REST API support for DPD page. But after some dig into codes of DPD page, I found it is not easy to accomplish because from there is no way to know what content sensitive menus are used in a specified DPD analysis programatically. So both when constructing the URL for a certain analysis, and parsing a URL to retrieve a page, we have to write hard-wired code to teach the system what argument to use for a certain analysis and how to parse/construct it. This will introduce a high risk of bugs for modifying DPD page. In my opinion,we should modify the logical structure of DPD page to better suit this and potential need of changes, if we have time to do so. At this momment, may be the best and fast way is to provide a incomplete functional REST API for DPD, which just include day, projects and analysis, not including the arguments. We can see how it feels before planning further steps.

Telemetry

Now users can specify the size of the chart in telemetry page. They can enter any size they want, the only restriction is the total size cannot be larger than 300,000 in pixel, which is a limitation in google chart.

Thesis

I am reading two papers and will write some review of them tommorrow probably.

Monday, November 3, 2008

To-date and portfolio

Portfolio and ToDate

As function of portfolio page comes to a relative complete level, we start the To-Date page. I started it by copying the code from portfolio page and modify it a little to make it satisfy its goal. All difference between to-date and portfolio is the end date is fixed to today, and cumulative parameters are fixed to true. When test to date, I open the relative portfolio page to compare the result. Then I suddenly realize that, all functionality of to-date can be produced from portfolio, and the code is just a redundancy. Then why we bother to create another page for to-date analysis?

So we are thinking about remove to date page and direct potential users to use portfolio to retrieve "to date" analysis. We can add a button in portfolio to provide an easy way to get to-date analysis. Or even just make some documentation to tell user how to use portfolio to achieve their purposes. Either way, we will not need to continue the to-date page anymore at this moment.

Thesis

The need for coding for project browser is now reduced a lot. So it is a good time to seriously start again the long postponed thesis research work. The major task currently is to do more literature review. Also the students evaluation is about to start, so we should just sit tied and wait for the users' feedback before do more crazy coding to our system.