WeSay has never claimed (or intended) to do “Extreme Programming“. While we are into the goals of Agile processes, we know that one size doesn’t fit all. For example, we are doing a fair bit of Test-Driven development, but we rarely pair and unfortunately don’t have an on-site customer. We often design with CRC Cards, but we value high-level documentation to help developers understand the system.

I’ve started reading XP Refactored: The case against XP and though there isn’t much new in there, it has inspired me to get some diagrams of our design “out there”.

Alas, I haven’t been able to find any free UML tools that I’m remotely happy with. I tried the free “community editions” from MagicDraw and Visual Paradigm, but these are so limited even a UML beginner like me can’t get far. I think I could live without the automatic “reverse engineering” of the free/cheap versions, though that’d be nice to have, if they had such basic things as XMI import/export.

Surprisingly, Visio 2007 beta 2 does a scandalous job of handling c#’s properties. It puts them in the operations section of the class diagram, and displays them as methods, complete with parentheses! Worse, it does not appear to have an XMI export option, so it feels like I’m being locked in to a non-free, proprietary format.

I tried using the build-in diagram feature in Visual Studio 2005, but it is tied to the actual code. But I want diagrams which convey what someone needs to know; if they want the actual facts and details, I expect them to read the code. For example, if I have a Lexicon which has a collection of, say, LexEntries, I want the diagram to show a composition line from Lexicon to LexEntry. I don’t want one from Lexicon to the actual collection class, such as List<LexEntry>.
Lexicon to LexEntry diagram

Ah well, enough whining. For now, here’s the result of my playing around with Visual Paradigm. I’ve trimmed down the diagram to what I think someone wondering what we’re doing would want to know.

Here’s the Lexical Model (click to get it full size):
Lexical Model

And here’s the view from the project:
Project view

Some major pieces that I haven’t diagrammed are our data and UI layers. Does seeing these help anyone following this project? Please write and help us learn how much documentation is enough.