View Full Version : UML and C++
xfire
12-08-2003, 03:15 AM
Hi folks,
i'm just curious if anybody uses UML to design there programs. I'm using 'Together' (recently bought by borland) to design in UML for java. Unfortunatly, as great as 'Together' is for java, as crappy it is for c++. (countless bugs and missing features)
Now i'd like to know what tools you are using, and for what programming language. Any opinions are welcome,
Mike
Philip Lutas
12-08-2003, 04:44 AM
ugh Together...
I really take a dislike to that program - very slow, buggy (didn't work with my java sdk 1.4.2) and has that annoying alternative Windows interface you often see with borland products.
The only thing I generally use to design my programs are pieces of scrap paper and my head :P
Siebharinn
12-08-2003, 05:35 AM
I have an old copy of Rational Rose that works fairly well. I've been looking at Visio lately, and it seems to do all of the diagrams, so I may switch to that.
Dan MacDonald
12-08-2003, 09:06 AM
Visio does have a complete UML package, and it's one of the best on the market. However that doesn’t mean it's good. :)
I really dislike UML. It's not just a blind hatred for academia that makes me hate it either. I find that while the whole process does produce reasonable results consistently, it is tedious and bureaucratic.
In terms of principles, I dislike reducing or limiting the creative process to a very assembly line type mentality. Some people may find expression in this form of functional decomposition, but I found it atrophying.
I use a lot of diagrams when I’m designing things, but I don’t force them all to be linked together the way that UML does. Also, when I’m designing architecture, I often need to work from the bottom up and the top down at the same time. Especially when working with technology I’ve never used, or don't understand. It's important that I understand certain details before making top level decisions.
Siebharinn
12-08-2003, 09:31 AM
There is a difference between UML and the process that produces UML documents (like Rational's Unified Process or Microsoft's Solution Framework).
I look at UML as a language: it's a way of expressing certain things in a consistent way. You can write good english and bad english, on a napkin or a whiteboard or a word processor. You can be creative with english, or write derivative drivel.
The same is true with UML. It's just a set of semantics. You don't have to follow any particular process to use it.
I like UML, but I agree with you that many of the processes are too restrictive. When I was at Worldcom, we used the full Unified Process, and it was horrible. I need something that is more agile and less formal.
Lizardsoft
12-08-2003, 10:44 AM
I use UML when I need to map out a set of classes that all have to work well together. I find it very useful for seeing the big picture and determining if my ideas are sane or not. Most of my planning happens in several notebooks and sketchbooks though. One trap with any type of planning is viewing it as the ultimate solution that is just perfect for designing every aspect of every program. UML is terrific as a visual approach to certain parts of a program, and for seeing how all the major modules of a program will fit together. I couldn't imagine doing detailed design with it though, as it's far too formal for my needs.
C++ programmer by the way.
shaft
12-08-2003, 11:35 AM
http://www.sparxsystems.com.au/
Enterprise architect. Better than rational rose, and a billion times cheaper. I can't say enough about this program.
dreeze
12-08-2003, 12:16 PM
I have always thought of UML as being a somewhat confusing way of describing an architecture. The diagrams distract me from the information I want to find. I'm not sure why I have problems with this, but I have never liked diagrams for presenting information of any kind.
Personally I prefer to use a text-editor and write down the class declarations (C++) to examine how things should fit together. I find this method to go better with my way of thinking.
elund
12-08-2003, 12:46 PM
I haven't used UML for any solo programming, but I've used it in a team environment. UML is sort of a grab bag of various diagrams and charts you can use to work out and communicate design decisions. I've found use cases very useful, both for capturing unit nuances (such as error handling) and for helping not-so-technical clients understand the aftermath of their own requirements. When some technical part of the design is confusing to our own team members, sequence diagrams could help out. But other than that, it's just one of a million tools in the toolbox. Some people bring it out too often because that's all they have in their toolbox.
svero
12-09-2003, 10:02 AM
Siebharinn's comments are basically perfect in terms of describing UML. I think it's revered in strange magical ways and not well understood.
Personally I think it's mostly useful for very large projects that require more code design, and especially so when you need to communicate those ideas with programmers at a client or with other programmers on your team.
UML should NOT generally be seen as a tool to help you become a better designer or a tool which forces you into a good design. You can design totally horrible interfaces in UML just as you can right in the language. If you don't understand what a good design is then UML won't save you. It will just help you articulate your lousy design. The only proviso I'd have for that is that sometimes the very act of thinking about your design so you can lay out some uml documents ( or in an app like rose ) can lead to a better design simply because you're forced to at least give it some thought instead of heading straight into the code.
For the kind of small game programming I'm doing now it would have little benefit.
xfire
12-09-2003, 12:14 PM
Hi again,
wow thanks for your opinions/infos!
Strange that nobody mentioned the class diagrams, those are the diagrams i use the most because they visualize the seperation of data/view. Class diagrams are also great to define/visualize interfaces.
An other advantage of UML is that you don't have to use all diagram types.
The main problem with UML tools is that most tools are written in and written for java. (like Poseidon and Together)
Anyway, thanks for the info about SPARX and VISIO, i'll try to get an evaluation copy/demo.
I've heared a lot bad things about rational rose, so i haven't tried it. (BTW, is it true that you can't even rename a class after the code was generated?)
Thanks again for the info!
Mike