Hi! I've just passed a university subject which made me do a medium console-based game in Java. I had to do the design first with UML and then code the game.

I just found useful the Domain model (the first aproach of what's the point of the program) and the Class Diagram (what you really look when you are about to code), there was a lot of very heavy diagrams (Sistem sequence diagram) that I found that was larger and harder to draw a diagram than coding directly and well-commented because there were simple loops over a collection searching for a match.

What do you think about UML? do you think it's necessary to do all the diagrams (including all classes, attributes,methods...)of an application and then code?, or do you think the design model is just to not to code directly but have an idea about the classes that would have your application and the main methods?

I think UML is a good for documenting while you develop your software. Sometimes you don't know what you need to do until it's done and UML provides a set of models which, if used appropriately, document your system in an easily readable fashion.

UML is great!... for selling books and useless corporate OO design seminars...

Criticizing things without knowing where they are used and how they impact the software world is a bit uncalled for...

Criticizing things without knowing where they are used and how they impact the software world is a bit uncalled for...

Yes, ok, UML is not without value. I'm just still bitter from the Rational Process training seminars foisted upon us back when I was in a large corporation :icon_neutral:

Ah..that explains things. ;-)

Yes, UML is a handy tool.
And yes, it's way overhyped (like most things in IT, sadly) by people using hypes to sell tools, books, and services.

It won't solve your problems for you, it is not a magic bullet. People won't suddenly transform from code monkeys to first rate developers of the class of a Martin Fowler or James Gossling when you give them a UML tool.
In fact they'll likely fall down another rung or two unless you also provide training to use those tools and actually understand what you're doing when using them (most training doesn't teach the second, only going through the motions of clicking and dragging together some diagrams without any understanding of what the diagram means).

At the moment I use a simple flowchart for the program I am working on. It has been especially helpful when I have gone back to make modifications or updates. Would UML be a better way to diagram my program and if so, is there any free software out there?

UML pretty much replaced flowcharts as the de-facto standard to visualise software design.
There's some free software, but it's not good enough to be useful in my opinion.

When given a codebase to understand, automatically generated overviews such as UML diagrams and maybe Doxygen views might help and seldom hinder.

When given a task and a clean slate, then you have to be somewhat aware of when to put down the charts and start writing code. As for automatic code generation from diagrams: I'd prefer not to as to get to that stage I would have to put far too much into the diagram.

- Paddy.

whoa..that's explain why deitel java book discuss UML too, better get back to those UML topics after i finish the book :s

UML is good for sketching, but that's about it... It in no way helps to raise the level of abstraction, and therefore, does not help to improve development... DSM does that.

i am sorry for bumping the thread but i think it is better that i bump this one than to start a new and closely related thread.

i have read some up on UML tools and i get the impression that the tools can also generate some code. in fact wikipedia says that automatic code generation is now a standard or accepted practice in some areas.

firstly let me say that i have never used uml tools and i am only beginning to learn uml myself although i do understand a lot of it.

what i would like to know is how usefull is it for code generation. how far can it go to replace the programmer? it cannot replace the software engineer since the engineer specifies the high level logic. but remember that 4th gl and 3rd gl languages generate low level code so how far are we from the day that the uml diagrams generated by the software engineer replaces the programmer and generates the 4th generation code itself?

Code generation sucks. The only people who believe some generator will ever replace programmers are the people who sell BPEL like tools.
I've been hearing that within 5 years there will be no need for programmers for at least the last 15 years, and from people who've been in the industry longer I hear it's been said for probably as long as people have been writing software.

4GL (which you probable refer to) languages have fallen almost completely by the wayside, as they were utterly incapable of making true even the least sweeping of their promises.
Instead they led to very poorly constructed code which was impossible to maintain and performed abysmally.