Real Projects For Object-Oriented Design
Reuse in the Classroom: Classifying and Sharing O-O Course Materials

Michael Werner, Associate Professor (wernerm@wit.edu)
Electronics, Computer Science, and Mechanical




I teach Software Design and Development at Wentworth Institute of Technology in Boston, MA. In this class group projects serve the role of demonstrating the practical application of analysis and design techniques. The projects involve analysis, design and at least partial implementation of a substantial software system. The projects are either toy projects which are created for teaching purposes only or real projects which are built for an actual customer with the expectation that the system will be deployed when finished.

In my experience the real projects generate much more enthusiasm, involve greater complexity and better prepare the students who participate in them. In choosing a real project to do I require that the project either be internal to the institute or else be for an external non-profit organization.

Some of the real projects my students have done:

1. A database for a bowling league designed to track league members, set up teams for bowling meets by matching players by ability, record scores, etc.

2. A database system designed to track and report on the delivery of services to homeless people by a local shelter.

3. A room reservation system for a non-profit retreat and conference center.

4. A system for the college placement office to enter job openings and make them available to students who qualified themselves to access the listings by submitting resumes and attending orientations.

5. A student information system to allow students to access their transcripts, schedules, grades and financial status using the internet.

6. An extensible CASE system to allow future software design students to create graphics and repositories of design data following various methodologies and generate source code.

All of the above projects offered good opportunities to demonstrate object-oriented analysis and design techniques. In each case a real customer was identified at the beginning and the students conducted interviews with her in order to fix the requirements. For the CASE tool I played the role of customer.

Project Deliverables:

Student teams submit the work in three phases:

1. Requirements Analysis & Preliminary Design
2. Design
3. Implementation

At the end of each phase the teams give a presentation. Our program requires students to take a course in technical communications part of which is devoted to oral presentations. Each student is required to participate in at least two presentations even if English is not their native language. Students typically use overhead transparencies or Powerpoint for visuals. To enhance communication, documents and graphics must conform to a methodology such as OMT or UML.

Implementation typically involves both a database language such as Access or Oracle and an object-oriented programming language such as Java or C++. Web applications also involve HTML and often Perl scripts. As a course requirement teams need to implement the main usages of the system, but not exceptional usages or extensive data validation. Of course the real projects need to be completely implemented and thoroughly tested to be useful.

What happened with these projects?

The bowling league project was completed and delivered but suffered from the fact that the customer, the league secretary, was only occasionally available for interviewing and some of those interviews were in the bowling alley itself, a very noisy environment. The students had to guess at some of the club rules and the system requirements making the resulting product unusable as delivered. However, I believe that the system was subsequently patched by someone else and eventually deployed.

The homeless shelter project yielded a viable design which was subsequently used. However, deployment was not possible when the course was given since the shelter had first to cobble together a local area network out of truckloads of outmoded computer equipment which were contributed to it.

The retreat room reservation system resulted in an outstanding database design. Implementation failed when the students tried to use a poorly documented database management system which was advertised as producing worldwide web date entry forms. The design will probably be used by the retreat in the near future.

The job listing project was completed and deployed.

The student information system was completed but never deployed since it was dependent on a security and authentication subsystem that was to be provided by our computer center but never was.

The CASE system has gone through several incarnations over the years the course has been given. One of the better implementations was done using Tcl/Tk. Most recently a team did an excellent object-oriented design for it but foundered when they tried to implement the graphics editor using the Microsoft Foundation Classes. The learning curve was simply too steep for them to master MFC in one semester.

Benefits to Real Projects:

The real projects were extremely motivating to the students who usually put in extensive time on them.

Each project involved unforeseen complexity, they were harder than toy problems and more typical of what the students will see on the job.

The customers always got something useful in return for their time, in some cases a functioning system, in some a reusable design, in all cases a better understanding of their own business.

The work was guaranteed to be original. There was little question of students recycling something they had done for another course or had found on the Internet.

Drawbacks and Problems:

The projects had to be completed in a single semester.

Customers were often unavailable for interviewing. The student teams were on tight schedules but were often held up by customers.

Advice:

Real projects are an excellent teaching tool. Choose projects which are small enough to be doable in one semester but large enough to pose some complexity. Internal projects within the university pose less risk than external ones and the customers are more likely to make themselves available to the students. On the other hand, external projects for non-profits are more of a thrill for the students and allow them to experience feelings of giving something back to the community-at-large.

Back