Tuesday, August 10, 2004

Together at last

I've been using Together Designer Community Edition from Borland for the past 2 weeks to do some conceptual modeling for Sydney. TDCE is a free download from the Borland website and if you do any sort of work with UML I suggest you start downloading it right now. It's a 60MB download so you'll have plenty of time to read the rest of this post as it comes down.

TDCE is basically a stripped down version of Borland's Together Control Center product. It was originally written by Togethersoft before they were acquired by Borland a few years ago. It started it's life as a modeling tool for Java developers but now supports C# also. I don't know much about the full product but based on this free version if you're working in Java or C# you'd be mad not to pay the ridiculously affordable price of $199 for it. I've been told that Together formerly sold for several thousand dollars and had a very devoted following even at that price.

TDCE is a UML modeling tool only and unlike the full Together product includes no code generation or reverse engineering features. That's fine by me since conceptual modeling is just what I need right now.

I previously used pen and paper or occasionally Visio for conceptual modeling. At these early stages you can't afford to be precious about your model. You're going to have a lot of ideas and most of them are going to be bad. You need something with the freeform creativity of pen and paper, something that lets you screw up the page and throw it away without any sense of regret. If your modeling tool requires you to spend a lot of time making your diagrams nice and neat you'll be reluctant to change or redo them. You may find yourself persevering with a bad design because it's just too much work to redraw the diagrams.

TDCE is the first program I've used where drawing a class diagram on screen is almost as easy as drawing it on paper. It's automatic layout features are good enough that you can just slap down some classes, link them with some associations and generalizations and then get TDCE to lay them out nicely for you.

When it comes to drawing a sequence diagram TDCE is easier than drawing it on paper. While there are a few more clicks involved than what I'd like when adding a message/method this is more than balanced out by the ease with which the diagram can be adjusted after the fact. Sequence diagrams are always needing to be adjusted and with the tools I've used in the past you may as well throw the whole diagram away and redo it. TDCE makes it very simple to alter an existing diagram by intelligently adjusting the position of existing messages/methods as you add or remove other parts of the diagram.

I haven't come anywhere near to investigating the full potential of the program but for these reasons alone I've made it an essential part of my toolkit when designing a new object oriented system.

Here's a few things I like about TDCE.

  • Nice interface
  • Good keyboard shortcuts
  • Intelligent automatic layout functions
  • Able to type class names as method return types rather than having to select them from a list.
  • Changes to an identifier are reflected in all diagrams automatically
  • UML 1.4 and UML 2 support
  • Flexible project structure with a project made up of a directory and it's subdirectories. Takes a little getting used to but means you can share diagrams between different projects.

And here's what's not so good.

  • No print function - you can save to various image formats though.
  • Memory hog - you need 512MB minimum.
  • No useful way to import existing Delphi code
  • Java centric terminology
  • Design objects live on their original diagram and can be deleted from the whole project if removed from that original diagram.
  • Type names for objects in sequence diagrams are fully qualified types and hence way too long
  • No sequence diagrams in UML 2 support (yet)

Here's hoping that Borland keeps updating this free version. I guess I could always buy the full version at for $199 but it's hard to justify it when I'm not working in Java or C# at this time.


Post a Comment

<< Home