I had planned on writing an exhaustive review of good web application design/architecture/engineering, but that never came to pass. So, I am going a different route.

A (longer) while ago, I had planned on writing a small web app that would serve the basic functionality of putting up a web photo album. To combine these two tasks, I am going to go ahead and write the web app and over-engineer/over-design the snot out of it; all the while, blogging away with justifications and reasoning for my design decisions. We will see how long this holds my attention span...

First up, we need to define some rudimentary requirements. There will be two classes of users. One will be the "photographer" who uploads pictures, defines layout, provides captions, etc. The other will be the simple user who browses to the web page, views the thumbnails, and clicks on them to get a larger image.

User Requirements

  1. Able to view thumbnails.
  2. Able to click on thumbnails to view larger image.
  3. Able to see caption from thumbnail view and easily associate it with the appropriate picture.
  4. Picture caption also appears when full image is viewed.

Questions Left by User Requirements

  1. Does the larger image appear in a new window, the same window, or is there an option presented for the user to do one or the other?
  2. How many thumbnails are presented on each page? And, is this configurable by the user?
  3. How are the thumbnails organized? Can the user choose in what manner of organization the thumbnails are presented? If so, what are the options -- by date such as month, week, year; by a category, just choose to show 'n' thumbnails?



Photographer Requirements

  1. Able to upload pictures.
  2. Able to provide optional captions and associate them with individual pictures.
  3. Able to organize them in some manner.

Questions Left by Photographer Requirements

  1. Is the size of the thumbnail configurable for each picture?
  2. Can the photographer define the layout of the pictures i.e. provide relative X and Y coordinates for the pictures to be presented in a table view?
  3. What kind of organization options will there be -- sub-folder for year, month, week; categories such as "summer pics," "Bahama vacation pics," "pet pics"... both?
  4. Will the photographer be able to define the max number of thumbnails to appear on any given page?

That's a good start for the requirements phase. Once those questions are answered (with the full irony of knowing I, the person coding it, will be the one answering the questions), then the design decisions can be made.

J$
#!/usr/bin/perl
J=>money
;$_=ord$"<<s>>$J>,s-.-
$&*$'+$&-e&&y[%_(8)]]J]
&&print chop;print chr

Trackbacks

Comments

over-engineer/over-design the snot out of it

I'm so good at that..and I think it's a good quality when controlled. For me at least, I tend to over design because I don't want to have to write it more than once, or I want to make it as flexible as possible (base classes, interfaces, etc).

Both admirable desires in programming, unless, like me, you don't know when to say uncles and just code something. :-)

Posted by Chris on May 27, 2003 06:29 PM