Overview
I felt that this was our first "real" software engineering task. After learning the tools, standards, and practices, I finally got a chance to put these skills into use. I felt that the majority of the assignment was to exercise our ability to incorporate the use of Google Code, Subversion, HTTPUnit, and Java. I took on this portion of the project with my partner Arthur Shum. We met approximately 4 times during the course of this week, but spoke daily over a messenger service. Luckily, our communication was great and we easily got our ideas across to each other. Was the purpose of this project successful? Definitely. There were some ups and down, but overall: a great experience.
Breakdown
Google Code makes project hosting simple yet intricate. I found it really easy to throw in issues, classify them, then work on them. The fact that its all listed and easy to refer back to makes project organization really effective. One thing that I found intriguing is that the commit logs can easily reference a certain issue by just typing "Issue #". Wikipages! Great way to put up documentation pages. We threw up a User and Developer Documentation that is easy to follow to guide you through the hassles of figuring things out yourself.
HTTPUnit is great. I have had my share of "screen scraping" using PHP CURL module and getFileContents() function. Since PHP is more of a scripting language, I was more used to ripping apart the HTML by searching for keywords and tags and extracting information that way. HTTPUnit pretty much takes all that and does the work for you. I was blown away by the built in functions that were available, such as the getTableStartingWith, getCellAsText, and getFormWithName functions. I may even convert to doing all future "screen scraping" in Java because of this! Good stuff.
Once again Subversion made it really easy to work with a partner and program on the same files. This ties in with Google Code and the use of commit logs to track changes. It became really routine to run ant -f verify.build.xml before and after every commit, which is extremely good practice. This does lead into one annoying PMD error that I will talk about later on.
I have been programming with PERL and PHP for the past 5 months and to jump back into Java was a little strange for me, especially when it came to small trivial things like string matching/manipulation and the use of regular expressions. Java is a really powerful language and has so much to offer, I just felt like it was too much of a "step up" for these simple tasks. I guess the syntax of these scripting languages have taken its toll on me. I guess the best practice is to keep using Java and be aware of its different approaches and methods.
Issues
Now, the bad. This really irritating PMD error was persistent throughout the week and had something to do with a "Singleton" class. The only way than we could fix this was to throw in a public void method that wasn't static. Another issue I had with this project is the use of Wiki Markup. I can't believe that there is no < br / > equivalent in WikiMarkup! I found my self pulling my hair out, trying to make certain images on their own line without making it a bullet; I still don't know if this is possible.
Conclusion
I am real fortunate that we got through the assignment with no big headaches. Of course, this is due to the use of these tools that were available to us. I could not imagine trying to do this over a system where you must mentally keep track of an issues list or consistently emailing source code to one another only to find that there are conflicting lines of code that are incompatible. I also learned that effective communication is a huge factor in working together, which included prioritizing and distributing work evenly across group members to ensure a fair work flow. I look forward to advancing thing project with even more group members and functionality added to it.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment