Page 1 of 1

What UML tool do you use?

Posted: Mon Apr 17, 2006 8:25 pm
by cpp
Hi! im not satisfied with my current UML design software, its an ancient version of Metamill.
Can anyone suggest a good UML modeling tool?
Here are my "requirements":
1.- it must NOT be a java made app. (eg, VPUML), Java apps take ages to load and suck all my RAM.
2.- It should be free. (im asking too much maybe? :D )
3.- it doesnt have to be too fancy, just the basics, (Use Case, Class, Sequence Diagrams)

Anyone knows if a piece of software that meets above requirements exsists?
what you recomend?


Posted: Tue Apr 18, 2006 6:54 am
by Jorg
I do not use UML designers anymore basically because I noticed I was always stuck at the design phase and never got around implementing. Although one tool should be mentioned here is ClassBuilder. This semi-UML tool can do sequence diagrams, and uml diagrams (I consider USE-cases as text only so I see no reason why one tool should do that).

ClassBuilder is written by Jimmy Venema, unfortunately not platform independent and C++ only although it does seem to work under the latest Wine config. The tool can generate code, and read it back. The good thing about it's implementation is the intrusive class model, which allows you to navigate through relations.

A real piece of work. You can find it at;

- Jorgen

Posted: Thu Apr 20, 2006 2:03 am
by chenzhengxi
staruml is good :D

Posted: Thu Apr 20, 2006 6:42 am
by cpp
Thanks for your sugestions guys :D
im downloading both staruml & classbuilder to try them both & make a decision.
I do not use UML designers anymore basically because I noticed I was always stuck at the design phase and never got around implementing.
heh yea, i know exactly what you mean. I used to have the same trouble myself. you wanna know how & why i solved this problem?
(if the answer is no, you can stop reading right now, cause its kinda long story :lol: :lol: )

The first year i spent writting (serious) code (like for apps you acutally sell), i did it with no plan whatsoever, i just made a "picture" in my mind of what i wanted (or what my customer asked me for), and jumped right into coding.
Then i realized, that i spent a lot of time re-writting things over and over because, at some point in development, i realized that the way i designed feature "foo" (wich i allready implemented), was somehow incompatible, or incoherent with feature "bar", so, hit DELETE and re-desigh, re-implement "foo" all over again to be ok for "bar" (you get the picture). So i did a little research on the overall concept of software desing (not tecnical stuff, just design), and all my "research" led to the same place, UML. So i tought myself some UML, OOP concepts, etc. It was all nice & sweet, (in teory), till i actually tried to use it, then i experienced exactly what you mention. I spent ages writting & modifying UML diagrams before i acutally got to open mi IDE.
The solution i found, is this:
whenever i set my mind on some project, and before i even touch my IDE, i start my UML model with use case diagrams, with a simple description of what i "expect" from the app distributed in use cases. yes i know use cases are kinda silly (looking like some cartoon drawn by a 5 yr old with little people etc.), but the point is they give you a 100% cristal clear view of what you want from your app. the trick here is to keep it simple, its not necesary to have a "strict" layout of the descriptions, a simple non tecnical, hunan readable narration will do.
After that, based on the descriptions on the use cases, i usually have a reasonably clear "view" of what objects i need, so i put them in class diagrams, then i just assign "responsabilities" to those objects, in other words, their public interfaces, no private methods or even data members! and im done!, No sequence diagrams, no state machines, etc.
This is key to not getting stuck at design, i do not specify how those objects do things, only what they do. I usually dont even include GUI classes on my UML models, my classes in these diagrams never have private methods, and i never use words line void* wxSomeClass, char*, int, etc, those are IMHO, implementation details, not part of the desing, so if i need to say that some function in some class returns a chunk of text, i specify return type as "text"(not char* or std::string). If it helps, pretend that you are NOT a programmer, pretend you have not a clue of what a pointer or a vector is!, right now youre just an "architect" here. NOT a "construction" man. (you get the picture).
After my design is done, i find the actual implementation to be very very much easier!, because i can "focus" on coding one object at a time, and getting that particular object to do what my uml model sais it should do, without having to worry about how some other object is gonna "get along" with it.

The ultimate goal of design is (imo) to get a coherent object "layout", distribute responsabilities among them, and define the basic way they interact with each other, to do what my app is supposed to do. you can deal with arrays, chars* & linked-lists later in implementation.

I hope you find this "little" speech usefull. :D

Posted: Thu Apr 20, 2006 7:03 am
by Jorg
Well I can only say, I've been there too ;-)

I am a developer both professionally and hobby-like. I started with a book which was the predecessor of UML called OML (object modelling language). I was so fascinated by this book, read every last letter of it and it describes exactly what you sketched above. However when I wanted to write an application I have 20 pages of class models, ideas and text and GUI mockups, and it never came around implementing them. The real issue with me is that all of a sudden when you kind of shoot-through (meaning overkill) in the design, at the end you are not satisfied with it and you either abandon the whole idea or have to start over. I have looked into XP (extreme programming) which is a very interesting concept. It tells you "make the smallest piece of functionality that will actually work". Leave out all the bells and whistles, do not think ahead too much, simply design fast and expand later. That paradigm seemed to suite me better.

At the end for home purposes I left the UML tools alone, I did use pen and paper for clarity but usually I take ClassBuilder and model my classes with minimal data inside, just to show what it does. Then when the minimal data is inside, I write the persistency code (serialization / db). After that, I start with the GUI mockup and work from there. I do not work out classes so that they are 100% done, I simply add methods or data when I need them.

For work, I would only *wish* we would use a good modelling tool. See we have a huge pile of legacy code. Nobody ever too the liberty of designing a class model and keeping it consistent with the design. So adding new stuff gets cumbersome. Sometimes you find out stuff you added is duplicated on many places. For now I just have to cope with it as we are moving to a 2.0 rewrite in .NET code, and with that we will do the design just right.

One small comfort, we have to work by FDA regulations, which means we have to have an SRS (software requirements), SDS (software design) and code. In the SRS we write the WHAT of the design, which means what will be created and where. We use USE-CASES for the functional steps, clarity towards marketing etc. In the SDS we use the class models and write down WHY and HOW we designed it like this.

So to prevent the same overhead at home, I just wing it, and see what suits me best ;-)

Thanks for the speech,

- Jorgen

Posted: Thu Apr 20, 2006 7:23 am
by phlox81
I use usually the "pencil" tool, combined with some sheets of paper.
I draw usually some Classmodels, and try to refactor things,
and think of patterns / strategies that could help me implement the planned thing.
Then I usually enter this first try in my own Tools for CodeGeneration,
to have a feel about all classes fit properly. For Documentation I usually
also draw a UML Diagram in Dia.

At work I have wipeboard, which is a fantastic thing to playaround with,
you simply can draw your objects and diagrams, and you have a much
better look over it, than on the PC.


Posted: Thu Apr 20, 2006 8:54 am
by cpp
i guess we all have our own way of getting things done. I think the key is to find the right "balance", design enough to have a clear view of what you want, but not too much that you get old before finishing the desing.
Like i said before, i do use UML, but only at a "minimal" level, if fact, im moslty do only class diagrams & use cases (eventually an activity diagram when i need to remember some complex logic).
I dont use Extreme programing, or any other "oficial" paradigm, cause there all too formal for my taste, wich leads me to the cant get out of design phase problem.

i Agree with you phlox, that having your desing outside a computer is a lot better, ideally in a wipeboard like you say, or even in good ol' paper. And since i dont do too much diagrams, this would be ideal for me, but, Unfortunatelly i cant do this because (and i know this is gonna sound extremely funny/weird/unbelivable), my handwritting is so bad, that even i cant understand it some times :lol: because i sustained a severe injury in my left wrist when i was about 10, and ever since ibe had terrible writting / drawing capabilities. (so what if my LEFT hand was injuerd? yes you guessed it, im left handed. Hows that for luck! hehe)

Posted: Sun Apr 23, 2006 12:35 am
by cpp
Aaaaand the winer is...... (drumroll)
StarUML!! :D
That thing is so good, i cant belive its free!
Thanks for you ideas / comments guys

Re: What UML tool do you use?

Posted: Tue Sep 24, 2013 8:34 am
by elraymonds
cpp wrote:Hi! im not satisfied with my current UML design software, its an ancient version of Metamill.

1.- it must NOT be a java made app. (eg, VPUML), Java apps take ages to load and suck all my RAM.
2.- It should be free. (im asking too much maybe? :D )
3.- it doesnt have to be too fancy, just the basics, (Use Case, Class, Sequence Diagrams)

The best suggestion here is Cerately, because

1. Not JAVA, it is flash/HTML based diagrams designer completely platform independent. There are apps for Windows/Mac and Linux even a online version of the app is there

2. It is free to try and no credit card required. You can even export your diagrams. but you will have to buy a subscription if you want to save your diagrams on the cloud

3. it is bit fancy and you can customize the way your uml diagrams look. It is the best uml software I have ever used.

This is my recommendation. Cheers!