CS 204: Software Design

First steps towards a databae-driven web application

When you search imdb.com for a movie, the interaction goes roughly like this:

This style of interaction (person → browser → web server → database → web server → browser → person) is at the heart of many of the most useful websites (not to mention the not-so-useful sites as well). During the next couple weeks, we are going to develop a database-driven web application.

Your work is going to proceed in phases, approximately like so:

  1. Choose and obtain a dataset to work with.
  2. Create a prioritized feature list.
  3. Create mock-ups of your web page structure and rough appearance.
  4. Create a detailed development plan (which will include the phases below, but with more detail, as appropriate to your particular application). Your development plan will include a testing plan.
  5. Implement an end-to-end system that follows the pattern described in the imdb example above, but without useful queries and results. This will be sort of a database-driven client/server "hello world" application.
  6. Design the interfaces between the various software entities (e.g. in what form do the queries from the browser arrive at the web server, and in what form do the replies get sent back?).
  7. Design your database structure and load your data into it.
  8. Implement and test one feature at a time, according to your development plan. In between stages of this part, you might adjust your development plan to adapt to new understanding of the project. (This phase, one small testable bite at a time, is called iterating. (Um, watch out...it may be that the language in the video I just linked isn't entirely classroom-appropriate.)

This project will get you beginning experience with quite a few important software technologies, including HTML (including forms), HTTP, the standard Python CGI library, MySQL, the standard Python MySQL library, XML and/or JSON, and (if you're interested and have time) Javascript. In the process of developing this project, we will also discuss use cases/user stories, test-driven development, the design of functional and client/server interfaces, automation with Makefiles, documentation, a variety of code construction topics, and undoubtedly other stuff that will come up as we proceed.

Your first assignment is to do steps 1, 2, and 3 from this list. Hand in a single PDF file called web-app-plan.pdf containing:

In case you're interested, here are a few Carleton-specific datasets that you might be able to combine into an interesting web application.