Unfortunately, Dia is really a drawing program with UML objects, not a UML editor. Let's look at the details.
Tuesday, March 24. 2009
Class and Sequence Diagrams: Poor. Class diagrams are simple to create and modify. Sequence diagrams... not so much. They have multiple problems that I'll go into in more detail; for now, let's just say that drawing class diagrams is fantastically easy, but sequence diagrams is rather difficult.
Configurable Display: Very Good. You'd expect a drawing program to be configurable, and Dia is. You can change colors to your heart's content, modify fonts and styles, and generally modify anything. It goes a little deeper than that, though: Dia's UML tools provide a myriad of options that modify your diagram in compliance with UML standards.
Of course, there are a lot of possibilities in the UML standards, and supporting them all takes a lot of dialog space. Dia does a good job of hiding the complexity, mostly by using separate tabs for operations and attributes. I think it could benefit from some context sensitivity, but I was never frustrated by creating a new element.
Group Selection and Movement: Fair. In class diagrams, Dia provides outstanding group selection and movement. In fact, it works just like a drawing tool. Alignment is easy, too. In sequence diagrams, things get a little harder. Dia can't move the lifelines around as a group. Stuff gets unstuck and has to be rerouted. The process bars aren't resized when new method calls are made, and there's no attempt to keep the message lines straight.
Infinite Undo: Outstanding! Dia seems to have an infinite undo queue. I never ran into any problems with it.
Supports Synchronous, Asynchronous, and Reflexive Messages: Fail. There is no way to generate a reflexive message arrow. Since Dia provides all the standard drawing tools, you might be able to fake it; I tried, but the arrow kept going the wrong way. I need reflexive messages.
Dynamic Document Size: Great. There was a moment when I thought I'd be hampered by page limits. However, selecting past the viewport boundary quickly dispelled that idea. After that, I had no trouble adding classes or lifelines past the boundary.
Scrolling: Unsatisfactory. Dragging a selection past the boundaries causes Dia to scroll, but you're better off using the scrollbars. Connecting message arrows to off-screen classes was a pain; there was no scrolling, so I had to either zoom out or make the connection in multiple steps. Either way, there was no way to be certain that the line was actually straight.
Shared Data Model: Fail. Dia is just a drawing program, not a UML editor. There is NO DATA MODEL. While this makes creating quick diagrams easy, it makes maintenance a nightmare.
Supports Large Projects: Fail. Since there's no data model, there's no import capability. There's also no consistency. Your large project is nothing but a stack of diagrams, with no enforcement of consistency, uniqueness, or relatedness. I suppose you could say that Dia supports large projects, since you can create all the diagrams you want. But that's a little disingenuous, I think.
For niceties, Dia has the best alignment and spacing tools I've seen yet (although it doesn't have ArgoUML's "Broom"). The orthogonal inheritance lines were no problem, even when I stacked the dashed lines up. Image saving was a breeze, and it saved only the portion of the diagram that was actually populated. While I thought the styles were a little large and blocky, they're ideal for projecting to a room full of programmers during peer review: readable from the back. And if I really didn't like it, I could've changed the styles.
Final Verdict: Dia is a drawing tool, much as its name implies. It has some nice UML elements, particularly with respect to class diagrams. If I ever need to whip up a class diagram for somebody, I might reach for Dia. But with its poor sequence diagram functionality and utter lack of a data model, I can't possibly use it for my serious work.
platform, so nothing heavy-weight like Eclipse.
I was thinking to use HSQLDB and some article said it was a good idea to use a UML tool called 'Dia' to do the
toplevel ERD design, which would link into a tool called 'tedia2sql' to validate my design, and actually build the
database in the target RDBMS.- i.e an small IDE. Some hope !
Although Inkscape covered all my drawing needs until now, it has no UML support, so as Dia had promise of the
above, I installed it and drew my 20+ table ERD. But I was then unable to find a working tool to generate SQL
code from the Dia file, or even validate the drawing was a correct ERD. My 'ERD' currently stands in isolation,
unable to test or use. I have spent weeks searching the web for alternatives, >95% UML articles are for non-SQL
targets. OMG, the controlling body, states UML is tailored to the target system using 'Standard Profiles', but
have not defined a Standard Profile for SQL !! I imagine lack of a common SQL Profile is a big hindrance using
UML for db design.
I am a complete a newbie to UML modelling. Last time I designed a db, UML didnt exist, all I knew was simple 1:1,
1:n, N;M relations, which as I remember was sufficient. I gather only a very small subset of UML, and only the
'Class' diagram is needed to make a ERD. Dont think I need complexity of ObjectOrientation, 3NF sufficient.
Obviously I would prefer NOT to have to redraw my 20+ tables from scratch, but I see Dia has limited export
formats, its default being XML - no XMI. It can export to SVG - which I tested works fine in Inkscape - but I
guess SVG contains no UML data, so maybe no use for code generation ? Dia can export to Visio format - is there a
way I can export to Visio, then re-export into XMI for importing into a better Editor ?
When I originally read the recomendation to use UML for the toplevel db design, my expectation was to be able to
validate the Class Diagram, then automatically create the db in the target RDBMS - in my case HSQLDB.
Today I came across 'Open modelsphere', and seeing from its user manual it had Validation, ODBC & JDBC connections
to at least Oracle, Informix, MySQL (couldn't see a 'Dataheet' or 'Specification' on their site) having read their
link to 'Software Review' was about to spend time evaluating it, when I thought to google more reviews of it, and
came across your disparaging review dated 2009.
I like the requirements criteria you expressed, but I do need ERD-to-targetSQL, dont need 'Sequence'.
Open Modelsphere has had 2 releases since then - which I hope fix some of your criticisms.
I imagine the market has changed in last 3 years. Any chance of you updating that review, and perhaps reviewing
other open source Design Tools that can complete more of the steps in progressing an ERD to db build ?
I thank you in advance for any assistance you can give.
I'm actually considering a new review format, which would allow you to compare the entries based on your own criteria. Of course, the review would need to include the criteria you want to sort by; if I ever get around to doing it, I'll be sure to include SQL workflow in the list.
I'm afraid I do all my SQL by hand, so I'm not familiar with any tools that take UML to SQL. Sorry I couldn't help you.