Also, why should I be ahead... You're working on, potentially, similar lines. The stuff I'm doing is, essentially, from first principles...
I'm just cutting my teeth on this stuff. Trying to get a sense of how I'm best to proceed. And unfortunately, this is only a side-bar to what I should be working on.
I don't model systems directly. I create models of the world and then implement them in systems. ... Does that explain things better?
Yes. And I'm inspired! I can see that [glb]holy grail[/glb], can't smell it yet, but I see it. Being able to generate multiple views (code, narrative business rules...) from one model would be a huge boon for us.
So the approach I took was: What do I need from the model?
Next I created a conceptual model of the world I needed to work in - the model. I created this model in XMLSpy. The XSD was the form (and the output), but I was modelling! In my model, A Model, consists of Namespaces with Elements (Sparxians are you listening? Everything is an element!). The Elements are subtyped into Classifiers (Shapes), Relations (Connectors), Containers (Packages, Diagrams etc). From there into the particular etc...
As I mentioned earlier I've started down this path with the intention of code generating a Data Access Layer. Assume that the DAL exists, thus it can be modelled. If I understand your methodology correctly, you would look at that model as the real world, and decide what you need to get from it. Then you would model the information you need to get from it, in an intermediate language. Finally build the infrastructure to emit and consume documents. The emitter possibly being a CTF template, the consumer possibly being a CodeSmith template. Sound about right?
Thanks.
Chris.