L
Linonut
* James Kanze peremptorily fired off this memo:
Well, based on what I've seen from other developers, they will then
not write complete comments, nor will they leave the code in
a nicely-formatted state.
If you can't do a seamless round trip, I'd rather refine the code
by editing and then regenerated the diagrams.
Only for larger projects. Smaller projects don't need the overhead
UML.
We call it "Crational" around here. Even Rose. I'm finding umbrello to
be reasonable.
I still don't think UML is up to the task of generating code. And you
have to become an expert in the UML process to actually create a real
design that will result in compilable and working code.
What I find works best for me is to do a lot of the skeletal header
files up front, until I start to lose the picture of their
relationships. Then I reverse engineer, find the obvious flaws, then
continue coding, then reverse engineer again.
It's too bad there isn't a diagramming tool that will make only
/incremental/ changes to your code, preserving the rest of the
documentation and code without the need to use arcane markup.
Maybe a method where each item is a database entry in a relational
database, and you edit the items, and then can assemble them into
code that you examine, compile, and then throw away until the next round
of database updates.
There's a similar problem with requirements. How does Rational handle
it? With a stinking-awful Microsoft Word-based user interface.
I've used Rose to generate code in some projects. I find that
I'm a lot more productive using it that writing my headers by
hand.
Well, based on what I've seen from other developers, they will then
not write complete comments, nor will they leave the code in
a nicely-formatted state.
If you can't do a seamless round trip, I'd rather refine the code
by editing and then regenerated the diagrams.
The point of class diagrams (and requirements specifications,
and a lot of other documentation) is to define what you are
going to write in the code. I'm very sceptical of people who
code first, and write the documentation later. I've seen a lot
of code developed that way, and it's always pretty bad.
Only for larger projects. Smaller projects don't need the overhead
UML.
Obviously, you need a specialized tool. Because I've usually
started with class diagrams, I've not been able to experiment
with CWeb, but I think some combination of CWeb, embedded in
Rose, would be just about perfect.
We call it "Crational" around here. Even Rose. I'm finding umbrello to
be reasonable.
I still don't think UML is up to the task of generating code. And you
have to become an expert in the UML process to actually create a real
design that will result in compilable and working code.
What I find works best for me is to do a lot of the skeletal header
files up front, until I start to lose the picture of their
relationships. Then I reverse engineer, find the obvious flaws, then
continue coding, then reverse engineer again.
It's too bad there isn't a diagramming tool that will make only
/incremental/ changes to your code, preserving the rest of the
documentation and code without the need to use arcane markup.
Maybe a method where each item is a database entry in a relational
database, and you edit the items, and then can assemble them into
code that you examine, compile, and then throw away until the next round
of database updates.
There's a similar problem with requirements. How does Rational handle
it? With a stinking-awful Microsoft Word-based user interface.