(Spelling of page name fixed. -- Would "Pluggable" have been better?)
Create a specification language, perhaps in XML. Expose the parse
tree and allow backend code generators to generate target code. CASE tools
take over code generation when they are the least capable entity
for generating code because they have no idea what is the target
infrastructure.
For example, a FSM description can be generic, but the code generated can be
customized by target environment. Many high level ideas like timers, message
flows, threads, hierarchical relationshipts, etc can be embedded in the
FSM specification, but no commercial tool can possibly know what environment
the code will run in so the code is worthless. In my FSM generator I have
installable code generators for C, C++, and for different OSs and different
middleware layers. In my dreams I think developers would work at the
specification layer with a few select others working at the code generation layer,
much like we do with compilers today. Very few developers generate assembly.
Systems are similar enough that a higher level "assembly" language is possible.
See also
IntentionalProgramming