> From: Greg Bek <[log in to unmask]>
> X-To: Simon Wright <[log in to unmask]>
> > -----Original Message-----
> > From: Simon Wright
> > Rose/Ada doesn't give you a great deal of control (except through an
> > amazing dialog box with more options than you could shake a stick at),
> > and requires you to have a class in your model if you want a code
> > package generated (so you get loads of support cruft in the design
> > model, instantiations of generic containers etc). This makes reverse
> > engineering difficult (even if Rose/Ada supported it) (even if it were
> > a Good Thing).
> Rose gives you a great deal of control, hence the dialog box with
> the multitude of options.
I guess that my problem is that a lot of the control is at a very low
level and has to be applied appropriately to individual model elements
by individual developers; and it's hard to spot invalid choices at
As I remember (it's a while since I used it) you have to specify
whether an operation is an instance operation (has a This parameter)
or a class operation (doesn't) deep in the dialog. Much easier to
stereotype the operation as <<class>> (or, as it turns out, say
[[class]] in the documentation section!)
Control over CG ought to be exercised at a more global level by the
architecture team. I know you can make global (default) CG choices in
Rose, but individual developers can still pervert them!
> I think the real challenge is that for any given design model there
> exists many possible mappings to correct and valid source code in
> a given language.
> Rose/Ada as it implements one such mapping, with a variety of options
> to control that mapping.
> Rose also has it's own built in scripting language with complete access
> to the model to permit you to write your own CG or RE tool.
Yes, this is good. I seem to remember that you'll be going to an
XML-based external format (XMI?) instead of Petal (?) at some time?
that would be even better.
> The problem gets more complex when you take into account the desire
> to reverse engineer source into a design model (a challenging problem).
> The flexibility of most programming languages is such that it is
> easy to lose information when translating back to a design langauge.
Yes, which is why I questioned its being a Good Thing.
> It gets more challenging when you want to round-trip code as then both
> the code generator and the reverse engineering/analysis tool must be
> very close and in-synch to be at all useful.
No one would want to edit a compiler's generated object code and have
the changes reflected back into the source, would they (well, I guess
there are always strange people out there!) Seems to me that with
advanced CG this is a valid comparison.