Monday, December 8, 2008

Final Project: DueDates-ulaula 2.0

Over period of time we meet and interact with different people in our lives and more times than not we learn new things from these folks that we associated with.

DueDates-ulaula team consist of Tyler Wolff, Aric West and I. We all meet together few times a week and communicate through Google chat as well. I felt kind of intimidated at first because Tyler and Aric seemed more experienced programmer than I am but I did my best to contribute fairly over the course on our project. Aric worked on configuring the mock libraries, background processing and some test cases, etc. Tyler, because he had more exprerience on creating CSS formatting he did most of that and he also created some of the configuration files, DeveloperGuide, and some test cases also. And I did of the test cases like TestResultPage and TestAlertPage, ResultPage and UserGuide. Most of the time we need to modify some other files to add better features or functionalities so we jump into different pages to do that, especially Aric and Tyler.


DueDates Web Application


Due Dates is a simple web application that is capable of obtaining information for users about their borrowed items (books, DVD, VHS, etc.) from the University of Hawaii Library and Hawaii State Library.

As of now, our project looks healthy (at least the coverage > 90) except for Coupling and Churn. There were many lines that were modified and added in a commit, so that would contribute a lot on why our Churn is too high.







Our group member contribution is summarized on the graph below. I had few problems last time on my ant sensor and some eclipse problems debugging codes so I guess that's the reason why my DevTime on Hackystat is higher than Tyler and Aric. I also stumbled upon some other problems on JAXB because I had the 2.0 version and for some reason the parser or something on that version wasn't working. So I had to uninstall that version and installed the 2.1 version and everything worked fine. Aric helped me to figure out that particular problem I had on Jaxb and some on my xml file. They had more commits than me because they did a lot of modifications especially for creating better features and functionality on our project and more times than not two people are working on the same part of the project.


Fig. 1 Member Build Count
_______________________








Fig. 2 Member Commit
______________________










Fig. 3 Member Dev Time


Overview

Working with different people always bring you new experience and new knowledge. In duedates-ulaula team we didn't have any designated leader so that made us probably more responsible enough to accomplish our own task. It is always good to have a group leader but I think it depends on that particular team also how to handle their own responsibility. I had a great time working with the rest of the team because whenever we have problems we update each other what is going on and we try to communicate to solve that particular problem.

Monday, November 24, 2008

Stack Wicket Application

I've always love to create or design a website. I have a bit knowledge about "html codes" and such but doing a web application using Wicket is kind of strange to me. Not very strange though...because the more I got exposed in using it in this application I've learned so much more each day.

Stack Wicket Application is a web application that implement Stack that implements functionality such as "Push"(adding item on the stack); "Pop" (deleting item on the stack) and "Clear"(removing all the item on the stack).


















Problems: PMD, Checkstyle, RuntimeException, etc.

Perhaps, the only thing that took me while to do on this project was fixing all those endless annoying errors. PMD complains a lot about using string literals so much or when you compare objects using booleans. Secondly, Checkstyle complains about this particular thing about "package-info: Doesn't exist" and little did I know that the problem is in my build.xml file. Oh and finally, RuntimeException - the greatest problem of all. Especially, on Wicket it gives you this particular stacktrace but it doesn't really say much, so you are actually staring at that particular line number (where it indicates where the problem was) forever and don't see anything wrong...but I am so glad I got that fix.


Overview

Learning Wicket could be fun but at the same time it's "wicked". Despite, of all the problems I had I began to like it and hoping to learn more about it. These past few days that I was doing this web application on Wicket I gained a lot of ideas although it is not so easy to grasp every aspect of it right away. I am looking forward to learn more and maybe in the future I will be able to design a bigger website using Wicket. Here is my stack wicket distribution file.

Friday, November 14, 2008

Enhancement for DueDates 1.2

This particular version of DueDates we are asked to enhance the capability to do an email alert if there is anything due at a particular given time. In doing so the Purple Team continue to gain more knowledge in using Continuous Integration and Software ICU. This week we were able to obtain a very good coverage by improving the quality and robustness on our code.





Assigned Task

I was assigned to implement the timer-based reporting for DueDates. In doing so we have to implement some of the functions of the Java Timer and TimerTask. Implementing the timer wasn't that bad, I looked at the API and there was also a tutorial link that was provided by Dr. Johnson, which helped a lot. The other member of our teams -Daniel, implemented the JavaMail and John was responsible for working on the complexity, improving the coverage, etc. The good part about in our team is the good communication and good cooperation. We were able to meet and discuss the tasks and issues about the project 1-2 hours a day on weekdays. As for the weekends, since we weren't able to get together due to some other personal commitments communicating through google chat is the only solution.

Minor Problems

The problem I had stumble upon this week was running the JAR file. Everytime I tried to run the jar file on the command line it gives me this particular exception stacktrace about "javax mail". And little did I realize that we weren't the only team who was having a problem so are the other teams. So after seeing emails from other groups who had experienced the similar problem and who also posted a possible solution (Ronn and Art) helped me to solve my own. By putting the "mail.jar" into the JDK library is not enough because that didn't solve the problem, so I had to also put the "mail.jar" into the JRE library extension to make it work. In addition, these past few days I also had a couple of weird connection failures. I could be in the middle of working on something on the net and out of the blue my internet connection would just fail. Despite of everything that happened I was still able to do my part in the project and so is the rest of the purple team.


Overview


As the day go by on the incremental of our project I am continuing to improve my knowledge about creating a good software and what software engineering is all about. Good and clear communication in our team is one of the keys in determining the accomplishment of our project. Finally, being able to keep track about the status of our project using Software ICU and Hackystat were very helpful.

Friday, November 7, 2008

Hackystat Sensor: Project Health Monitor

















Hackystat sensor is a program that shows analysis, chart, graph, interpretation and vital signs development of a project. On this project we use Software ICU to monitor the vital signs of our project health. The concept of SoftwareICU is pretty similar to monitoring the vital signs of patients in the hospital's ICU. The Software ICU vital signs include coverage (emma coverage), churn (measure the lines of code), complexity (measures how complex the loops and branches on your code), coupling (measures number of dependencies between classes), code issue (number of warnings), commits (measure number of commits by developers to the repository), builds (number of builds in the system), devtime (measures time spent by developers editing code), UnitTest (measures number of unit test invoked) and size (amount of code in the system).







To be able to use all of these features of hackystat sensor we have to install Eclipse, JUnit, Emma sensor, DependencyFinder, JavaNCSS, SCLC, SVN sensors, etc. I did that by updating all the {tool} .build.xml files and modify the {tool} target so that {tool}.build.xml file to depend upon {tool}.sensor.


DueDates Purple Project on SoftwareICU

As you can see on the above Software ICU that the coverage health of our project (duedates-purple) is not really healthy and not really unhealthy either. So it's sort of average health and to be consider as a healthy project the coverage should be above 90%. I monitored the health of our project and tried to raise the coverage but it seemed like it didn't make a lot of difference, as you can see below. I'm just glad that our project is not red because that would be a bad implication. The only few changes are the progress on the churn from nothing to 149.0; coupling from 5.0 to 3.2 (healthy project suppose to have LOW coupling); and commit from nothing to 7.0. We'll try these next few days to raise the coverage so we can have a healthy project.













Overview

Hackystat sensor and Software ICU is a very good visual tool to monitor a project's health therefore, developers or programmers will be able to analyze the development of their own project. Setting up the sensor tools and environment variables for SCLC, DependencyFinder, and JavaNCSS, etc., were very straightforward. The only problem I had was when I tried to invoke "ant -f svn.build.xml" it failed because of User mapping error. So I had to actually create a UserMap.xml file to fix it and duedates-purple-dailybuild on Hudson is back to sunny day. I've learned a lot by gaining my familiarity on using and interpreting Software ICU and Hackystat.

Monday, November 3, 2008

"Behind the dark clouds there is a sun that still shinning."









Darker Days


Me and the rest of the purple team pretty much meet at least an hour or so everyday except for the weekends because some of us has to go to work and do some other personal matters. So on weekends we just communicated through Google chat. This second version of doing the project seemed a lot harder than the first one. Because we have to build more classes and test cases for each class. On top of that, we also stumble upon problems on the .classpath file, every time I tried to compile and run the program on eclipse it would just crash.

Therefore, we ended up editing the .classpath file and fixing the build class path on eclipse. While I had that particular problem on eclipse I just pretty much did my compiling and running on DOS prompt. In addition, there are also a lot of pressure in our group especially in getting things done in certain ways. If someone forget to verify and when you tried to run the build on your program it fails and because of that someone can just assume that you broke the build.

Shinny Days

Despite everything we've been through we got everything done. We also updated our wikis (Homepage, DeveloperGuide and UserGuide) and checked all the Javadoc documentations. Last time we got deducted some points because of not having enough sample input and output on our UserGuide so I added some screen shots and better sample output for the program.

Saturday, November 1, 2008

Code Review: Second Time Around

We've been given a second opportunity to improve our DueDates project and of course, that accompanied by double effort and double work to be done. We did a review on the duedates-blue team.

















Their homepage and wikis (DeveloperGuide and UserGuide) were very detailed and informative. The output formatting of their program is really nice though they only used a basic formatting as oppose to using the String format with field and width precisions. In addition, they didn't really implement a lot testing cases and if they did, that will probably help to raise the emma coverage on their program. My additional review for the blue team is located here.

_______________________________________________________________

Our DueDates program was reviewed by duedates-violet They stated on their review that they weren't able to pass "ant -f verify.build.xml" on the first attempt. Also, due to time constraint they weren't able to really look at and test all the functions of the additional classes that we implemented. However, they did their best to give us constructive criticism such as needing to do a little clean up on our comment tags so that we won't be having errors in running PMD and checkstyle. Finally, they liked the improvement on our wikis (DeveloperGuide and UserGuide) that included with screenshots and more enlightening guide.

_______________________________________________________________


Overview:

Everyone works hard on this phase of the project. My team and I meet each other everyday except on weekends because of work and personal matter. We did our best to review and comment on the blue team's project and it's up to them whether to disregard it or at least consider it. And the violet's review on our project are quite helpful and something to consider and look forward to.

Thursday, October 23, 2008

Project Review

Ups and Downs

Examining different codes from various people helps me to broaden my knowledge about programming. The people who reviewed our code were kaneshige, shum, leung, ly, reeves and tian. All of them who reviewed our code gave some constructive criticisms on how they like our javadocs, test cases and the print out of the stack trace but at the same time they also pointed out some things that can be improve such as meaningful comments, user guide output example and fix build failed because of the missing "xbean.jar".

The DueDates project codes that I reviewed are the following:

First, the duedates-violet used few abstract classes and they implemented those really well. The only thing though I tried to run the verify but their program had couple checkstyle problems. Then, I also tried to run their program on the command line using my own information (id and lastname) with valid and invalid inputs but it only prints out a stack trace on both conditions.
Second, upon reviewing the duedates-red project code it was very neat, it has a nice output formatting and it prints out the correct error message. The only thing that they didn't have are test cases and their program didn't really check for invalid inputs. Finally, the last thing I reviewed is the duedates-yellow and they have the best output formatting that I've seen so far. Their program also output the right error message for valid and invalid inputs but their user manual didn't really have detailed information guide for external users in downloading and running the program.


Overview

By checking out or doing some reviews on other people's projects helped me on how to become a better programmer in the future. I have seen some really good program codes that I think will really help us to get some ideas from. And receiving those feedback from other peers on how to improve our project were very helpful. We are currently working on how to develop a better detailed user guide, meaningful comments and trying to analyze on how to fix the build.xml file that contains the error about the "xbean.jar".