DrProject Architecture

Posted

I posted a picture of DrProject’s database schema a while ago. Last week, I found myself drawing its architecture on the blackboard in class, so I figured I should post that too. (It would have been up two hours ago, but my Mac died again…)

architecture1.png

Here are the key elements:

(I left out the Apache and Postfix configuration files, both of which have to be edited as well as part of an installation.)

I have two observations about this diagram:

  1. DrProject is actually a fairly simple system compared to many in widespread use today. An equivalent diagram for SourceForge would probably have three times as many boxes on it; Indigo's order tracking system wouldn't fit onto your screen (I don't care how big your screen is, it wouldn't fit). While we're making progress on debugging programs (even multithreaded ones—see Zeller's book), I haven't seen any substantive work on debugging configurations: if you don't get it write, all you can do is tweak and pray. Anyone who wants to be rich, famous, and popular should consider tackling this problem.
  2. This diagram combines several of Kruchten's 4+1 views into one: it shows a logical view of the system's components, a process-level view of the system's concurrency, and a development view of which code relies on which. It equally shows elements from all the major divisions in John Reekie's system (which I've been using in class, and have been finding very useful). I see this whenever I try to explain any system's architecture to anyone: I always want to mix entities of different types in my pictures, because every sensible narrative about the system incorporates them all.

I’d be interested in seeing pictures of other applications’ architectures if anyone has pointers—I rather suspect that everyone else is making up notations on the fly to fit their needs as well.