Good modeling/UML tool?

[quote]Markus_Persson: You actually made me shudder. You should really rethink your approach to development.
[/quote]
Well, it’s worked for me in the six years I’ve been coding proffessionally, and the nine years before that.

But, hey, thanks for insulting me!

No problem! I’m always here to deal out the hate, malice and insult.

So that I don’t have to watch my back for someone named Markus_Persson at the next developers conference that I go to, I will make my position clear:

I did not intentionally make an insult to you; I expressed an opinion. Had I stated “You don’t have a design phase? Your code must be complete crap” then you could be as pissed off at me and insulted as anyone would be. If my opinion did in fact insult you I do apologize – to make it better I will spread insult, anger and malice to everyone else so that it’s null’d out. Everyone else that’s reading this: you SUCK!

In response to you (and I don’t mean to insult you any further, but I do wish to express more opinions as I’m full of it … I mean, them), time does not dictate quality. I know people that have been developers for 40 years (if swtiches and punch cards can be considered developing :D) that write worse code than my 15 month old god-child who just smacks her hands against the keyboard. If time was directly equatable to “maturity” then all old people would have reached self-actualization. We all know that this just isn’t true.

To super-duper clarify, I’m not saying that you’re in fact not mature in your profession. I’m simply stating that your argument is not valid.

Why do I bring all of this up? Well, it’s a perfect introduction for the CMM. Believe what you want about the maturity model and its applicability to the “real world”, it still opens ones mind to other possibilities. Of the gaggles of developers that I know, I would have to say that 95% of them are at and will always be at CMM level 1. There are other levels people! (Footnote, even developers that I know that work at companies that are CMM level 3 are, as coders, stuck at CMM level 1.)

For those of you who do not know what a CMM is, take a read of:

http://www.dfas.mil/technology/pal/cmm/

as an example. You can get the fully ditty, which is simply facinating reading, but it costs big big big bucks.

I did not take offence because you disagreed. Everyone (including myself) are filled to the brim with opinions, and I’ve learned to accept that.

I took offence because you shuddered at my opinion. There’s a difference between disagreeing and ridiculing.

[quote]Orangy Tang: this is off-topic and we should start a different thread, but protoyping is definitely part of the design process. Take a look at RUP (the Rational Unified Process) or other such process to give you some background.
[/quote]
Whether you count prototyping as a formal stage in itself or just a first stage in the traditional iterative or waterfall cycle is really just arguing over syntax :stuck_out_tongue:

I’d look further into the RUP, except i’ve found most of the Rational tools to be at best annoying, and at worst a real hinderance. They have a tendancy to make me focus on the irrelevant implementation details while i’m just trying to get a basic design down.

Er, to try and avoid going too off topic, I’ll concur with the earlier answer that the best tool is pen and paper. I get though reems of the stuff ;D

Orangy Tang: Since we’re off topic, let’s go balls out! Here’s a poignant blurb:

http://www.rational.com/products/whitepapers/102016.jsp

Markus_Persson: Again, I apologize. Let’s chalk up my shudder to PTSD from working in the trenches of too many coding shops where I have had to deal with the carnage that was left over from poorly planned and poorly implemented projects. “An ounce of forethought or design would have never allowed this to happen” I would often scream from my dimly lit basement cublicle as the task master whipped me with the cat o’ nine tails. To this day I still can’t walk into a dark S&M shop … much to my wife’s chagrin.

I haven’t coded with a proper design doc for 8 years.
I did it once in university when I was forced to. After than in the real world I can’t get anyone to buy in to the idea, and I’m beginning to believe that it would truly be wasted effort.

Design requirements in the real world, at least with any project I have been on change too fast, or there are design parameters that you just won’t have accurate information for until you have already coded a great deal… I can see how this could be scary to some people, but quite frankly I can’t see how I could work otherwise.

Now that isn’t to say that a lot of design decisions should not be well thought out and considered before coding down the wrong path… but usually those can be made in an informal meeting with the team. The teams I’ve worked with/managed have only been about 5 people or so. I think a more rigourous, formal design document would be needed for significantly larger teams.

I think one of the ideas of XP - that the code itself is the best design document since it is 100% unambiguous is not unreasonable.

Looks like I need to take another look at the Eclipse UML tool… although I must say up front that I expect to be disappointed :slight_smile: … I will give it a chance though. I really do want a UML tool that “brings tears to my eyes” :slight_smile:

[quote]Markus_Persson:
[/quote]
Don’t worry, I was in a very bad mood yesterday. =)

Of course you have to plan. I’m just a big advocate of heavy prototyping and small teams. I make it very clear to my bosses and managers that the first versions they get that early in the projects are just PROTOTYPES, and while they can test them to see if they do what they want, they shouldn’t expect it to survive any kind of fancy testing.

I’m not at all surprised that it would cause someone to shudder. The consensus opinion amongst software engineering people (as opposed to people who just code, and don’t really think about methodologies, or how to improve their effectiveness etc) is that “not planning == planning to fail” - and the corollary “planning to fail != failing…it just makes it more likely”. It’s not a unanimous opinion, and there are plenty of fair exceptions that get thrown around, but certainly it’s the dominant view at the moment.

rgrzywinski’s “I’ve had to deal with the side-effects of this approach…” is certainly one of the great reasons for not doing it. If I ever find a programmer working for me who does not plan, I fire them. It’s simple - they are single-handedly attempting to destroy my project, even though it’s probably unintentional (note: if the programmer dies tomorrow, and there are no plans for what they’ve been doing, then most of the salary and more importantly the time they’ve spent has just been lost. Project management cannot take place if staff behave in this way. As the PM on the job, I’m going to be fired if a programmer ever leaves and I cannot make the team recover in time to meet the deadline [not necessarily by dying, there are lots of reasons people leave mid-project in practice - e.g. IIRC Woz’s plane accident that left him effectively devoid of technical ability for quite a while could easily have meant Apple disappeared without a trace had it happened only a short time earlier]).

A quick aside about “probably unintentional” - I have actually worked on a project where 2 or 3 (we were never sure about the third one) extremely knowledgable people deliberately made sure that we could not fire them, because they were the only ones who could decipher their code. Fortunately, they got fired anyway, and the project sufficiently recovered after a six months to successfully ship. I’ve even seen a case (separate project, and I was an external consultant) where one guy went as far as writing his code in a shorthand of his own - he obfuscated every variable etc as he wrote it. I kid you not.

In practice, if you’re a skilled developer, you can get by without planning. And other people can probably read through your code and look at the comments, and fairly quickly work out what you were doing. However, there is a well-documented and considerable loss in efficiency from this. If it takes you 3 days to plan your code before you start, it’s going to take someone else about 3 weeks to fully decipher that plan if they’ve only got your code to go on. Obviously, the ratio varies considerably from project to project and industry to industry (and even from person to person) - but most of the time it’s a big ratio.

You also make every bug more expensive, in terms of money and/or time lost. The classic chart of when a bug can be fixed, as used in the software engineering disciplines for several decades, shows the progression of fixing a bug at each stage in the dev process, and goes something like this:

  1. Specification
  2. Design
  3. Prototype
  4. Gold
  5. Customer (i.e. it’s already been deployed, and you have to fix it at someone else’s server / PC / home / office)

Experimental data has shown that each stage increases the cost of fixing a bug by a multiple of 1.5 - 5 (IIRC). So, fixing a bug by writing a second prototype typically has cost you about 4 times as much as it would have if you’d fixed it at the Spec stage. And it could be as much as 25 times as much.

Now, that seems a fairly good reason to shudder when someone says they don’t usually plan their projects. I’d imagine that if someone really did shudder, it’s probably in sympathy or pity for the person who’s wasting so much of their time.

Personally, I don’t mind what other people do, unless I’m working with them, in which case I exert zero tolerance (I refuse to have my project screwed up by someone else’s anti-team behaviour). I try to educate people of the evils of not planning, so they can make an informed decision, and usually save themselves much time and hair-pulling, but I recognise that some people really don’t like it, and are more concerned with enjoying spending more time coding, even if it means it takes them longer to complete.

[quote]It’s not a unanimous opinion, and there are plenty of fair exceptions that get thrown around, but certainly it’s the dominant view at the moment.
[/quote]
Exactly, and I’m one of the people who disagree.

And if you fire people who do what I do, remind me to never work for you. :wink: It’ll save us both a lot of time.

Kinda surprised that noone mentioned the community edition of gentlewares posiedon - http://www.gentleware.com.

[quote]Kinda surprised that noone mentioned the community edition of gentlewares posiedon - http://www.gentleware.com.
[/quote]
now that is really suprising - just thinking of how much we paid at work for Together/J and now I am compariing this tool to it …glad it was not my money

That looks really cool, how heavy is it on system requirements?

Kev

[quote]Kinda surprised that noone mentioned the community edition of gentlewares posiedon - http://www.gentleware.com.
[/quote]
It looks cute, until you try to use it for something. The interface is slow and awkward. The application is buggy. It shows potential though.
When I’ve needed a UML diagram - I generate it with the eclipse plugin http://www.omondo.com/
It is functional enough for me… but still not what I really want. (Dynamic Live updating of UML from code edits, or code changes form UML edits in a FAST easy to use environment that is always in sync.)

Unfortunatley I didn’t receive any email notifactions for the recent replies to this topic… :frowning:

Anway, the Poseidon I’ll have a look at, too. Thanks for the hints.

So far I think that Visual-Paradigm (free community edition) is pretty nice. http://www.visual-paradigm.com
However: the free version doesn’t allow code changes (ie synchronize the UML diagramm to code, and vice versa). This is a feature of the pro version. Has anybody tried out this feature? Would love to hear some experiences on it.

I’m using Fujaba. It’s developed by some guys from my university. Available for free (LGPL) and for various platforms, but it’s kinda buggy :slight_smile:
At the moment i try to create a Ludo game with Fujaba.

Check it out, http://www.uni-paderborn.de/cs/fujaba/

[quote]I’m using Fujaba. It’s developed by some guys from my university. Available for free (LGPL) and for various platforms, but it’s kinda buggy :slight_smile:
At the moment i try to create a Ludo game with Fujaba.

Check it out, http://www.uni-paderborn.de/cs/fujaba/
[/quote]
Yeah, what gives? I started using Fujaba years and years ago, and over time it just seems to have got less stable and lost features :(. It feels as though each new version is a complete re-write without reusing the code from the previous one :(.

Do you know if this is the case? (Fair enough, it’s a research project after all!).

Heh :>
Yeah it’s kinda buggy as i said… buttons or menu items seem to act arbitrarily… or if you remove < and > from the text you can’t edit it and so on… :slight_smile:
A fellow student who used Fujaba last year said it got alot better, so i can’t really comment if it got worse over the years :slight_smile:
My trainer said there’ll be updates every 1-2 weeks, so maybe it’s a good time to check it out again 8)