Saturday, October 18, 2008

DueDates

Introduction
Finally we were given an assignment that exposes to the class to software engineering. The task for week nine and for the rest of semester is to develop an open source project. DueDates is an application that helps keep track of borrowed books and should evolve into a rental tracker. In this week's blog installment I will talk about the overall development, the team, the issues I encountered, and my opinion of the assignment.







Screen shot of Team Purple's project site.

The distribution, executable, and Javadoc
DueDates source code
DueDates jar file
DueDates Java Docs

The Team
For week nine's development evolution I am assigned to Team Purple which is made up of myself, John Ancheta, and Marilee Flestado. John having the most experience out of the group took the lead role, assigning tasks, choosing the development scheme, and overseeing the entire project. The group met Monday through Friday for at least one hour to mull over code and figure out which issues needed attention. Each time the team met we were able to make meaningful additions to the project whether it was through documentation or coding. With three team members we performed trio programming with John being the conductor. I felt that the process was efficient and should not be altered.

The Development
We decided to deal with only the Univeristy of Hawaii at Manoa library website. The feeling was to keep the project simple, fullfill the requirements first and make additions to the project if there was time. The most challenging aspect of the code was dealing with command line input for the unit test and JUnit build file. John and I investigated Ant's and Java's documentation for a solution. After a day of searching John found an answer to the problem. Java's System class can handle standard input allowing the unit test to take in arguments from the command line.
 /** Instance variable, instantiated to take in a command line argument. */
private static final String "variable" = System.getProperties().getProperty("args");

/** Instance variable, instantiated to take in a command line argument. */
private static final String "variable" = System.getProperties().getProperty("args");
To deal with the JUnit build file so the command line arguments could be passed in when invoking ant -f, we made use of sysproperty.
<sysproperty key="<arg1>" value="${<arg1>}"/>
<sysproperty key="<arg2>" value="${<arg2>}"/>
Another interesting aspect about DueDates is working with screen scraping and getting data from a website. The backbone of DueDates is the task of retrieving salient information from a library or rental internet site. To handle the parsing of data we are using HttpUnit an open source website-unit tester. HttpUnit is a nifty tool that allows the developer to check on links, tables, frames, etc.
DueDates is written in Java so it will run on any OS supported by the platform. The nice thing about DueDates is it's open source not only is it free but any Java developer can make a contribution to the project. The big thing I realized about working with open source development is the vast amount tools that is available for free.

The Pitfalls
Being an absolute beginner in project development I felt overwhelmed with the entire process. For starters, I forgot that I needed to update the local directory because I proceeded to commit my version of the code to the repository overwriting Marilee's files.

The Updates page is a mess I was continually making updates to the repository without checking the Issues page and not inputting the issue that I was modifying. After making a commit I would swear at myself for not listing the issue in the comment area thus making the issue un-trackable. After several warnings from John about losing points I finally got the hang of working with SVN client and made doubly sure an issue is listed in the commit.



My Thoughts
The highlights of this assignment, we are working on a true project which is open source and putting to use the tools we learned in the first eight weeks of class. The lowlights of the exercise, to be honest I was quite fearful of the project. After looking at the specifications I was not sure with where to start or what needed to be done. Thankfully John was able to take the lead and guide the team through the process. After learning from John's development experience, I feel confident that I can be a more contributing factor in the stage of the project.

Conclusion
I am excited about this project and hopeful that the class can create a fully functional DueDates application. With each week I am learning something new which adds to my programming experience. I also, see that I do not have to be frighten of the next task because I have the tools in front of me to complete the work.