Monday, December 8, 2008

Wicket Experience With Existing Project

Introduction

During last two weeks, our group duedates-alaka worked on duedates-1.2 project to enable web accessibility using Wicket. Our group members agreed to start this project from duedates-blue because we thought that starting from one project would be better. Duedates-alaka project can be downloaded for simple user and developer at here


Problems during the development

During the first software ICU feedback in the class, I found that my commit and build information were not sent to hackystat. I figured out that my sensor reported an error because it could not find other authors name in my configuration. I did not know why that was happening. Finally, I noticed that I did not update my hackystat sensors and I could solve this problem by downloading newer version of hackystat sensors and replaced it.


Group project

Duedates-akala group has four members: Arthur Shum, Daniel Arakaki, Daniel Tian, and me. At the beginning of the project, I had hard time to understand the base project. For the first few days of the project, what I did for the project was setting up hudson projects and hackystat for the group project and writing test cases for the project. Writing test cases for web pages that has Wicket enabled was a challenge to me and author helped me a lot when I wrote test case for the Wicket pages. I realized that the Wicket example that provided was very useful to understand the Wicket and it's structure.


Software ICU



Duedates-akala project's Coverage, Complexity, Coupling and Churn data displayed with green colors and we can assume that our group project has a healthy project status. the bar-graph for coupling is displayed in red because Coupling status has been increased slightly. However, the number is still below 10 and we still can say that our project is healthy.


Experience with Wicket

I could learn more about the Wicket during this project. It was challenge to me to write test case for our main homepage because our homepage is secured page by using login id and password. Since the program read information from user's .duedates/duedates.xml file, it was hard to implement log inprocess in test cases. Therefore, we added a alternative constructor that enables initialization of id and password from the passed instance.  


Saturday, November 22, 2008

Display a Java Program on The Web Browser

For the past week, I tried to upgrade the stack-johnson project. My basic goal was add wicket to the system so that anybody can run the program on the web browser with their own session. The stack project has very simple functionality and it was simple and nice enough to start with Wicket. My screen shot of the project is below.

Preparing for the Wicket
For using Wicket with your Java Project, I needed to download few tools below.

Jetty 6.1.9
Wicket 1.3.5
Slf4J 1.5.0

Problems Encountered During The Development
Setting environmental variables and classpath for this project was also as difficult as other project. I spent pretty much time to make sure program runs both on command window and eclipse environment. Also adding session to the project so that many users can using the stack project with their own session was challenge to me. I also had a small problem when I tried to display lastly pooped item on the screen. It was impossible to make a local variable and save popped item into that, because the java file renewed when any button clicked. So, I created a variable in the application java file and saved and retrieved the item from the application . By doing this, I clearly understood the why we need to have a application file when we using Wicket. The biggest challenging part was fix bugs from PMD. When I tried to verify the system, the PMD reported error for Jetty.java below:

All methods are static. Consider using Singleton instead. Alternatively,
you could add a private constructor or make the class abstract to
silence this warning.
I could not remove this warning for a while, and I finally added a method like below:

public void doNothing() {

System.out.println("Should not use this method");

}

Conclusion
Wicket is very useful tool when we need to run the application using Java and display the output of the program on the Web browser. I believe this was really good project to be done before doing duedates projects with Wicket.

Download Link
www2.hawaii.edu/~jeho/ICS413/stack-johnson-5.0.1124.zip

ICS Industry Day at UH Manoa

On Last Thursday, November,20,2008 I went to participate ICS Industry Day at University of Hawaii at Manoa. Total of seven Hawaiian computing companies did presentation about their company and current their works. I went there at about noon and it seemed three companies already did their presentation. So, I was only able to see the presentations from Datahouse, Ikayzo and Camber. Ikayzo company's presentation was delayed to after the Camber company because the presenter was late. After the Ikayzo company's presentation, I had to leave the presentation to go to next class. The most interesting thing from Ikayzo's presentation was that the company made techhui and many famous companies(Oracle and Bank of America) are their clients. Other interesting thing from Ikayzo was they have own subvision system which is simmilar to Google Projects that we using for the ICS413 class.

Final Thought

I am an international student and I found that most of companies are hiring only US citizen. Even though I am planning to go back to Korea after my gradution, it was really good chance to learn how the local companies doing in here Hawaii.

Monday, November 17, 2008

Continue Integration Practices With The Hudson CI Tool

Enhance DueDates project with new capabilities
Our group has been worked on modifying previous version of DueDates project from the last week. The new feature of this project is below:

  • support "-console" option.
  • support "-email" option.
  • support "-wakeup" option.

Upgraded version of the program can be downloaded at below:
executable jar file : http://duedates-green.googlecode.com/files/DueDates.jar
distributed version of the project: http://duedates-green.googlecode.com/files/DueDates-1.2.1117.zip

Problems that our group went into during the development
Our group met 3 times last week to work together. We usually went each other's home to do pair programming. Most of the code work was done by my computer because we were little worried about conflict and merge the source files. When I ran -verify.build.xml before commit a small changes of source file, it was pretty easy to fix bugs from checkstyle, pmd and findbugs. However, it took really longer time to fix bugs when I tried to verify.build.xml before commit. Thus, I had hard time to decide a appropriate time for commit and verify.

About the Hudson CI Tool
Hudson CI tool helps users to keep their project healthy. Currently, information about our group project shows that our project is in bad healthy status. First of all, our group project has very low coverage rates. We need to increase the coverage rates before the next development. Also, the complexity of the program has increased through the week because we used many loops in the program. Except Coverage and Complexity, other status still looked good.

Friday, November 7, 2008

Experience with Software ICU

What is Software ICU?

Software ICU get information from Eclipse, Ant and Hudson and shows vital signs about the state of a software projects such as coverage, complexity, coupling, churn, code issues, builds, commits, unit tests, size and developing time. A project user or group members can set up their project with Software ICU and always can check their project health status. The software ICU tool we used is HackyStat project. In order to use HackyStat, it requires users to download and install Eclipse sensor and Ant sensors. For more information on how to using HackyStat, check hackystat tutorial.
Current Health of Our Project - DueDates-green



Coverage
Duedate-green project currently has very low coverage rate. (Hacky Stat displays in red color when it is low). Our group need to increase coverage rates by write more JUnit test cases before next step.

Complexity
Complexity status of duedate-green looks healthy since it is below 10.0 and displayed in green color.
Coupling
Coupling status of duedate-green looks healthy since the average of the dependencies is below 10.

Churn
Since we did not working on any source code, it displays N/A.
CodeIssue
Since I checked my source code passes "ant -f verify.build.xml" before commit, there is no issues from checkstyle, findbugs and PMD.

Size
I am still trying to fix the size of the project by modifying sclc.build.xml so that sclc target depend upon sclc.sensor.







Friday, October 24, 2008

Review Other Group's Code

DueDate Project - Review
DueDate project is currently developing by many groups. I and my partner have been developing the project from last week. The detail of the project is described here. This week, we are assigned to review other group so that we can interact with other group members.

What I Learned From The Review
This was not the first time to review other people's code, however, at this time I had much more chances to learn about the tools for review other project. The first thing I did for the review was make our project on google to be ready for review from other group members. We copied our original source codes into the tag directory for this step. By doing this, I and my partner can keep developing our project without worry other people. After that I started to review other groups' project. During the reviews on the other group's work, I realized that why the wiki pages and JavaDoc are so important to satisfy the prime objective 2 and 3. Fortunately, all groups that I reviewed had pretty well written javaDocs and wiki pages on google project and this helped me to understand their code easier and faster.
On the other hand, our group has six reviewer and we got many advices and comments from them. It was so good to show our work to other people so that we can get useful thoughts and advices because it will save us a lot time to fix our source by ourselves.

Conclusion
I learned and found many good things from reviewing other groups' project for the same project. I was also exciting to find various approaches and solutions to the same problem that I had hard time to solve.

Monday, October 20, 2008

Developing DueDate Project Using Google Project

At this time, I and my partner Yasuyuki Kaneshige worked on a team project called "DueDates". DueDates get information from UH library site and displays information about checkout items from the library. This was my actual first team project that requires a lot participation from and interaction between the group members. There are two downloadable version of project that one for User and the other one for the other developers.
Related Links:
Google Project address: http://code.google.com/p/duedates-green/
DueDate-green project executable jar file: http://duedates-green.googlecode.com/files/DueDates.jar
DueDate-green Project Developer Version:
http://duedates-green.googlecode.com/files/DueDates-1.0.1020.zip


For the pair programming, it was pretty hard to set up a meeting time for everyday. We could start pair programming after 2 days passed from the project released.
The preparation of the project also took more time than we thought. It was pretty challenge to me to set up correct classpaths in the build.xml. The new thing that I found through this project was that how the Google Project is efficient for the online based group development programming. Google Project has many tools and I liked the tools called Wiki and Issue. Wiki helps developers to write a instruction of the project more faster. Also, Issue tool helps developers to interact with other developers more efficiently.

For the programming part, I had hard time to figure out how to run the project with the eclipse because our classpath did not work perpectly. To solve this program I set up a class path in the 'Run Configuration'. By run the program on the eclipse, I could save a lot time to spent to type in the command.

Tips for the Pair Programming
Bring your eclipse in your Laptop and eclipse in your pocket for the pair programming!