Monday, January 25, 2010

Design Phase II

During this week's meeting our group established some more guidelines for our design project as well as various other details of the overall Dorm Energy Competition.

Choosing a Dorm:

During this week's meeting we established that the competition would most likely take place between two dorms instead of by floor. We also decided that the freshman towers provided the best competition grounds for a few reasons:

1. All the floors are even. One of the main reasons Frear was abandoned as a competition dorm was the fact that the floors are uneven. By this I mean that some floors have a laundry room, some floors have a study lounge each of which consumes various amounts of energy and gives floors unfair advantages over other floors.

2. Fulfills one of the goals for the competition. One of the goals is to raise awareness about energy conservation as early as possible. By using the freshman dorms as a competition we are able to reach students at the earliest possible stage and hopefully raise awareness that will stick with them throughout their academic careers and beyond.

Other Guidelines:

We also determined that we should have weekly floor leaders in order to promote healthy competition among the students on the floor. Ideally we would like to have lcd screen in the dorm lobby displaying such stats as the current dorm energy usage, the past week floor leader as well as various other data about the floors and their energy consumption. Additionally we reviewed the 3 main goals (which can be found here) of the competition and adjusted our guidelines as well as the way we educate the students in order to meet the 3 goals.

Monday, January 18, 2010

Kukui Design

For the first quarter of software engineering II I have been assigned to the Kukui design team. We are in charge of providing the interface for the user to be able to view specified energy related data and adjust their consumption accordingly.

Ideas:

As stated in class there should be some sort of chart (I think that a bar graph would do the job well) that displays the real time energy data with a 10 second delay. Also at this stage it might be impossible for us to measure personal consumption so maybe a more realistic goal might be to have a chart that displays the user's room energy consumption. Additionally I think that all of the data for all the dorms should be displayed on the login page. This would allow users to see how their dorms stand in comparison to the other dorms in the competition. Lastly I think that there should be some widget type box that displays the daily/monthly values (such as the cost of the energy consumption thus far, the amount CO2 that was emitted and what percentage of the dorm's total energy usage and CO2 emissions that the user has contributed).

Thursday, December 17, 2009

Final Thoughts

ICS 413 has been a very eye opening experience for me. I was able to apply what I learned before from previous Java classes which I enjoyed since I don't like to learn things and not get to see some practical application for it.

Valuable Experiences:

I found that most of the class provided very valuable information and incite to the world of software development. I think that the group experience was the best part as we were able to share knowledge and see different views on how to solve a problem. SVN in particular was an interesting experience since we were able to work on the project even if we weren't together, plus the ability to revert to a previous version was a nice feature for the projects. Also the Ant tools added an interesting aspect to the development process as it allowed for testing and the catching of errors that we otherwise might have missed when just looking over or simply just running the code and assuming there are no errors. Lastly I thought that Wicket gave some interesting experience as well as an introduction to web frameworks.

More Experience:

The only thing I felt needed improvement in the class was the coverage of Wicket. I found that Wicket was a particularly difficult language to get a hold of and I thought that the book did a fairly poor job of explaining how Wicket works, plus having it available to only 4 people at a time was a major inconvenience. With that said I think that more time should be spent on Wicket in order for students to full grasp and get the hang of using the language.

More Learning:

After taking this class, I have come to realize that I do not want to become a software developer. While I did enjoy working in groups, I found that software development is extremely time consuming and has the potential to be extremely frustrating. So really I have no interesting in continuing my learning in this area. However if I had to choose an area, I would like to learn more about web frameworks (maybe not Wicket) and how they integrate with Java, HTML and various other languages.

Overall:

I found this class to be extremely helpful in that it gives a great overview of the process and the tools of software development. I enjoyed the experiences from this class, not only for the basic knowledge of software development and the great experience of working in groups but also the fact that this course has helped me decide what I would like to do with my ICS degree when I graduate (most likely networking and IT work).

Greensmart Ver. 2.0

Greensmart Ver. 2.0 saw some major changes as well as some minor changes from the 1.0 version. We fixed the bugs found in version 1.0 and improved the overall look and feel of the website.

What does this do?

This project has two options. You can view the stoplight page or view the chart page. Should the user go to the stoplight page then they will find that there is a stoplight there that displays the current level of carbon intensity with a specific message to the color. If the user chooses to go to the chart page then they can select a date or a range of dates and the data will be displayed in chart form.

Changes:

Originally we only had one page which took a date and then printed the resulting carbon intensity, carbon intensity level and the hour in a long chart that didn't fit on a screen. However in version 2.0 we changed that. Now there is a home page where you can choose to go to either the chart page (which displays carbon intensity data) or the stop light page which takes the current computer time and calculates the carbon level then displays the results on a stop light with a corresponding message depending on the color of the level. On the chart page we now use Google Charts to graph the carbon intensity and the hour and use background colors to show the level of the intensity instead of printing everything out in a table. Also the user is now able to choose to graph either the carbon intensity or the energy for a given time period.

We also changed the look of the page by changing the background color to the color white and also added "web 2.0" buttons and a new logo that we designed ourselves. Also we created a contacts page and now all of the pages have links to all of the other pages of our project which makes navigation around the site a breeze. To further improve the look of the page we incorporated the date picker to the chart page so now the user has the option to visually pick out which date or which date ranges of data they wish to view.

In addition to the date picker the other extra credit option that we choose to implement was the nice urls. This eliminates the strange wicket generated urls and replaces them with text which gives the project a more professional look to it.

Lessons Learned:

Through this project I was able to gain basic knowledge of Wicket and how it interacts with both Java and HTML. Another thing that I learned was while the project might meet the specifications (like our ver. 1.0), the user interfaces must be easy and friendly to use without too much clutter and a lot of intuitiveness for ease of use for any user no matter how computer literate they are. Lastly I realize that had the option been available it would have been better for us to specialize in certain areas of the project. For example one person does the HTML work, one person does the Wicket and one one person works on the Google charts, ect. Specialization would have allowed for less errors as well as a faster production time.

Tuesday, November 24, 2009

Wicket Peer Review

For the Wicket review I tested out the Greendepot system.

A. Review the System

I was able to download and build the system without any errors.

B. Review system usage

When I ran tests on the system I noticed that I was able to input a date and have the application recognize the date, however no data would be printed out. Also while testing false values (entering strings or invalid dates) I noticed that all of them resulting in crashing the program. However the interface is simple and self explanatory.

C. Review the JavaDocs

All of the package, class and method summaries provide high-level descriptions with a self contained first sentence. Also the relationships between packages, classes and methods is well described. However the description of the system summary could be better than "a greendepot client". Also all of the JavaDocs conform to the standards put forth in chapter 4.

D. Review the names

In the GreenDepot.java there is a variable called "x". This variable should be renamed into something with meaning. Other than that all of the names in the JavaDocs as well as the actual code conform to the standards set in chapter 3 of Elements of Java Style.

E. Review the testing

There were no tests included with this system besides the HelloWorld test from the example system.

F. Review the package design

The design of the package is good and reflects a logical structure for the system. I found it interesting that the .wicket was left out of the package and instead just went to edu.hawaii.greendepot.

G. Review the class design

Each class is well organized and accomplishes one well defined task. However I think that some of the accessor methods could be set to private as they aren't called on outside of the class that they are contained in.

H. Review the method design

The methods are all short and easy to understand. However in the getCarbonList method of the CarbonCalculator.java I think that the code that creates a timestamp should be in its own method. That way it can be called by other classes and allows for the method to accomplish only one task instead of 2.

I. Check for common look and feel

The look and the feel of the code is consistent. However to improve the coding I would add more comments as there are very few now which causes the code to be a little harder to understand.

J. Review the documentation

The project home pages does a good job of providing the goals for the project as well as what the system accomplishes. However there is no screen dump of the system available.
The UserGuide provides a great step by step method to download and run the system. Just as a small note, I would bold the section titles just so it is easier to find and it doesn't look like one big paragraph.
The DevelopersGuide does a great job of explaining the system and how to extended, but it does not include instructions to build the file, but those can be found in the UserGuide pages.

K. Review the Software ICU data

The ICU seems to be gathering data consistently and reliably. Currently the overall health of the project is good with the only negative aspect being the churn rate. The from the data we can see that the majority of the work took place recently due to the spike in the DevTime and Build fields at the end. Also with the exception of the huge spike in the churn rate we can see that the source code is constantly at a medium to high quality rate.

L. Review the issue management

The issues page was never used during the development of this system.

M. Review continuous integration

There are no long gaps in between commits and with the exception of the first bad build all failed builds are fixed extremely quickly. Also there is a continuous integration job that executes on commit and executes all of the appropriate Ant tasks. Lastly there is a daily build job that executes once a day and executes all of the correct Ant tasks.

Summary

I think that the greendepot system is an ok system. The coding is sound except I think that it could use more comments. Also the lack of outputs, error handling and testing is also a down side to this system. However the based on the ICU and the continuous integration the group seems to be working well and producing good quality code and I think that the next version of this system has the potential to be a well functioning web application.

Monday, November 23, 2009

Wicket Web Development

I found that Wicket was hard to learn and that it is actually quiet complicated. However the teamwork helped me to get a better grasp on the Wicket framework and how it relates to the Java coding.

The good:

I thought that at first the basic Wicket syntax such as the HTML tagging and the basic set up of the corresponding Wicket tags in the Java code was really easy to setup and were clearly defined. Also the WattDeopt commands to get the data were easy to figure out since we had previous experience writing code to get WattDepot data.

The bad:

Other than the basic set up of the tags and basic objects I found that Wicket was very hard to use. Throughout the project I found myself constantly thinking that JavaScript could do the same function, in less code and in an easier way to understand (or at least thats what I think). However in the end we were able to reason the framework out and complete the system.

System design:

I think that our system is very solid. We have all of the requirements fulfilled but we would have liked to put pictures that correspond to the carbon intensity level instead of merely listing the level. Also I believe that the system can be upgraded easily.

Teamwork:

I thought that our team worked very well in that we divided the tasks up and everyone did their part. Also if one of us got stuck we could ask the other members for help and get a greater incite to what we might have been doing wrong. Also often times if someone got stuck, the other members would stop and help look at the code and figure out a solution.

ICU:

Here is a link to the ICU for the past 7 days. The coverage is about average but the complexity and the coupling are good. However the churn rate is really bad which means that we were constantly changing our source code and adding or deleting lines. the rest of the fields remain average. So over all the development for this project was good, however it seems that we tended to refactor our code very often.

Monday, November 16, 2009

CLI Ver. 2.0

This assignment allowed us to take a look back at our version 1.0 code and take into account the reviews that were given by our classmates. From there we were able to implement the appropriate changes as well as use a revised library. Along with this revised library came 3 additional methods that were implemented to the end of our code. The newest distribution of the Eono system can be found here.

Version 2.0:

In this version we extended our code to meet the requirements in a better way. The first step was we implemented a different interface. Originally the interface had many method signatures, but in this design we made only one method signature (doCommand) available. Also we took the individual commands and made them into their own class. Lastly we implemented extensive testing as opposed to our last build where we only used the tests supplied in the example system.

Group meetings:

We would meet as often as we felt necessary which would be a couple times a week. In addition we would work individually and collaborate over instant messenger. Also we divided the work equally and I believe that the both of us each carried our own weight.

Software ICU:

The software ICU statistics suggest that our project is not healthy but at the same time not sick. We seem to be in between the two leaning more towards the healthy side.

Here are the statistics for Eono


According to the screen cast our coverage as well as the churn rate were unhealthy, but our complexity, coupling, DevTime, commit and build were all healthy. Also we since we created our test cases last, our test column value is unhealthy.

Questions:

All questions were answered by adding and additional test class and then changing the test class to meet the requirements of the questions. The test class will not be added to the final distribution of the system.

1. 2009-11-02T19:00:00.000-10:00 : 9.835E8
2. 2009-11-02T04:00:00.000-10:00 : 4.97E8

The above answers were found by starting a date at 2009-11-01T00:00:000-10:00 and ending at the end of the day. The time would be incremented by 1 hr in a loop and the largest or smallest value would be held in a counter and returned at the end.

3. highest: 2009-11-02 (monday) : 14764.0 MWh
4. lowest: 2009-11-07 (saturday) : 14089.0 MWh

The above was found by calculating the energyGenerate by the grid each day and the lowest/highest levels were kept and returned at the end.

5. highest: 2009-11-04 (wednesday) : 2.9959472E7 lbs
6. lowest: 2009-11-07 (saturday) : 2.2908808E7 lbs

The above was found by calculating the carbonGenerated by the grid each day and the lowest and highest values were kept and returned at the end.