> From: Greg Bek <[log in to unmask]> > X-To: Simon Wright <[log in to unmask]> ^^^^^^^^^^^^^ huh? > > -----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 review. 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.