Department of Computer Science and Engineering CSE 134A
University of California at San Diego Fall 2002

Project 4

DUE FRIDAY, DECEMBER 6, 2002, AT 5 PM.

 

The task here is to handle greeting cards via computer.  A sender should be able to design a card through a web browser.  Then the recipient should be able to get the card either as PDF or as HTML.

You can organize your work on this project as follows.

(1) Figure out how to store greeting cards in a MySQL database.  A greeting card includes the following:

Choose a standard format for images such as GIF, and store them in the database as "blobs," i.e. binary large objects.  

(2) Create your own XML document type definition (DTD) to represent greeting cards.  When a card is retrieved from the database, it must be converted into XML.  

(3) Next, you should create two XML style sheets (XSL) for converting a card into multiple formats.

(4) The U.S.P.S. provides a web site that gives the zip+4 code and standardized spelling for any address in the U.S., using the POST feature of the HTTP protocol.  You should create a web service that encapsulates this functionality in a SOAP (simple object access protocol) interface.  You should implement your SOAP server on ieng9.ucsd.edu using the NuSoap library.

You may also use the University of Buffalo address server, which may recognize more accurately when an address does not exist.  Note that the U.S.P.S. already provides an XML-based web service for validating addresses, but this requires user registration and is based on an HTTP GET interface, not SOAP.  

(5) Finally, you should implement your whole system.  Designing a good user interface for the system is your responsibility.  Users should be able to

You must provide some simple security method that prevents users from viewing other people's cards.  This mechanism must not be burdensome for recipients.  In particular recipients should not need to register in advance.  Your system should validate the addresses on letters by acting as a client that calls your SOAP server.  Give appropriate feedback to senders.

Important:  You can build a preliminary version of your entire system without using XML or SOAP at all.  Then after you have finished each of steps (1) to (4), you can extend your system to use the code written for that step.

Project organization:  You should describe all your work in a well-written report of length at most six pages, single-spaced.  The report should provide high-level documentation for your software by explaining all the important design decisions that you make for the project.  As before, the most important design issues that you must discuss include usability, scalability, security, and modularity.  Another important design issue for this project is extensibility.  Your report should explain all the important decisions you make concerning each of these issues.

Similar to previous projects, this project will be graded as follows:

Your software should have commenting of professional quality, and a README file.  In all, your documentation should be sufficient for another software engineer to maintain the program easily.  Remember that good documentation is necessary but not sufficient. Comments and user instructions cannot alleviate bad engineering.

We will provide instructions for how to submit your software and report, and how we will test your system.  Don't forget to attach a copy of the team self-evaluation form, and check the class web page and Discus regularly for updates to this project description.    Be sure to follow all the rules and guidelines explained in the general course description.  Complete academic honesty is always required.