views:

35

answers:

1

I'm beginning the design of a medium-sized web application. I usually like to design from the top down, i.e., start at the highest level and design my way down. I am planning to have the following layers:

  • Presentation (PHP/Ajax)
  • Business Logic
  • Data Access
  • Database

Now I'd like to start sketching out the major objects in each layer and the interaction between layers. Is there a tool more specific to this purpose than just using a graphics/diagramming tool like Visio?

A: 

This is the sort of thing for which UML is intended. There are lots of UML diagram editors around. I hesitate to recommend one over another though. The degree is (probably) lesser than with source code editors, but users still tend to form strong opinions about which are good, bad, or indifferent, so trying to recommend one seems (to me) pretty useless.

The one bit of advice I'd give is not to get too wrapped up in the UML -- it allows you to specify lots of details, often in relatively subtle ways (e.g. whether an arrow-head is hollow or filled). Diagramming the major classes and how they interact at a high level is extremely useful -- but it's easy to go overboard and start trying to include excessive detail. This can be a huge waste of time. Worse, it can tend to lock your thinking into one specific design way too early in the process, before you've done enough to be sure that design is really right.

Jerry Coffin
I have used UML diagrams in the past and they seemed to be a lot of work for the value they provided, mainly for the reasons you mentioned. I hadn't considered UML in this situation because of the non-OO layers (presentation and db) but I guess it could work as long as I stay at a high level.
BenV