Student Blogs - Carnegie Mellon Silicon Valley - Carnegie Mellon University

Student Blogs

MS in Software Engineering, Technical Track Blog

Wondering if a Carnegie Mellon degree is right for you? Read about our students' experiences through the MS in Software Engineering, Technical Track program.

Rahul is a full-time MS Software Engineering, Technical Track student. He loves traveling, trekking, swimming and is a complete movie buff.
Anthony is a 2nd year part time student in the MS Software Engineering, Technical track program and works at OSIsoft as a Software Engineer. He loves spending time with his family, hiking, biking, gardening, cooking, and sometimes photography.
Suma is an alumna of the MS Software Engineering, Technical Track program. A Mechanical Engineering undergrad, she loves writing and is passionate about music, shopping and dogs.
Minh is a Software Design Engineer at Microsoft and alumnus of the MS Software Engineering program. He is also a Vietnamese community activist, a cat-lover and passionate fan of film music.
Nick is a Software Engineer at Google and a first-year grad student at Carnegie Mellon Silicon Valley. He loves hiking, gaming, and both really extremely good and extremely bad movies.

Monday, March 3, 2008

Construction II – Wrapping Up Thick Client Development


Last week I wrapped up the 7-week Construction II class concentrating on thick client development on the Nokia N95. My team decided to build a J2ME-based application that allows you to use your Nokia N95 to take pictures on a vacation trip, organize them into albums, and allows you to share albums with other Nokia N95 users via Bluetooth and eventually present a slideshow (along with audio) directly to the TV from the device. Pretty cool, eh? It is an interesting product, albeit not necessarily innovative, but it did give my team ample opportunity to familiarize ourselves with J2ME development.

Comparing J2ME development with .NET CF development, I must say that J2ME development is much more complicated and troublesome. You really have to code everything from scratch or by hand, including the user interface. One can’t rely on graphical user interface development where you can graphically position your elements. Debugging on the device via Eclipse isn’t as pretty and straight-forward as I am accustomed to in the .NET CF world, and it also seems that J2ME/MIDP development is still relatively new - so the majority of sample or source code available on the web either is incorrect or just doesn’t even work. My team struggled a lot when we implemented the Bluetooth transfer of pictures and audio narrations, as the code also seemed somewhat unintuitive or more complex than it should be.

As far as software engineering processes, we did something differently this year. We developed a product from inception, and requirements engineering, to design and construction using an iterative approach. Unlike what we had learned in the requirements engineering class last year, when it was pounded into heads that one should do usability tests before any coding, this class encouraged coding user interfaces first, and then doing usability tests along the way to iteratively come to an effective user interface. The motto here was to show an early product out to potential users early and often. Like we did in the requirements engineering class last spring, we also videotaped our usability tests (that we conducted on co-workers, friends and significant others) and analyzed them afterwards to improve the usability tests.

In the end, after 7 weeks, my team delivered a working product that allows you to take pictures, annotate them with audio narrations, and transfer images; and we made a user story-centric presentation to faculty. The product also made use of the built-in GPS to geotag each image. In retrospect, I feel that we spent more time on requirements gathering, usability test and UI improvements than what I would have expected from a class focusing on construction, but I suppose the idea was to give more autonomy to the students in preparation for the practicum later this year. However, besides J2ME, the technology, I didn’t really learn much that we haven’t already covered in previous classes, so with Construction III starting next week, we will try to apply more software design patterns to our development, and I am looking forward to that.

posted by Minh Nguyen @ 3:25 PM  0 comments

Previous Posts Archives