UML Modeling with Gaphor
Alexandria is coming up to a design phase, and alongside capturing requirements the next big task will be modeling the new system. I hope we can be a bit more formal about it than is currently the case; we really need to have a few dozen core use cases before we move forward, otherwise we’ll just be adding features in an ad-hoc way, which is part of what’s got us into our current crisis of extensibility. After turning our vague statements of requirements into use cases, we should probably then proceed to domain modeling and sequence modeling.
So, we’ll need a modeling program, and we should probably just choose a single one which we can all use. Gaphor is a clean and simple UML modeling program for GNOME. It is, naturally, free software, released under the GNU GPL. It’s written in Python, is easy enough to install and very easy to use. It supports class, sequence and communication diagrams: the main diagrams we’ll be interested in.
It also produces nice, sharp, easy-to-read diagrams which can be exported to SVG or PNG.

It also has a plugin system (and docs to help you write new plugins) if we ever need extra features. If I could magically add a major feature, it would be a plugin to allow collaborative editing of models (rather like Gobby does with source files). In the mean time, we can just push gaphor files around via Jabber file transfer and use chat to discuss the changes we’re making. The gaphor file format is stable and XML-based (so it can be stored in subversion).
Like the ISBN example above, I’m going to be coming up with a few design sketches to suggest how various parts of Alexandria’s domain might be modeled. But they’re just preliminary ideas; we need to make sure that our eventual model matches the use cases rather than the other way around.

josephmethod:
Gaphor’s cooler than I expected it to be. It doesn’t work on Ubuntu Gutsy out of the repository, but if you do `apt-get install python-setuptools` and use the ez_setup option on their website, it works perfectly.
4 January 2008, 11:59 pm