Preparing diagrams and other non-text, and non-code specifications and gradually shifting to code is understood to be the way to go and proper engineering. Code generators are meant to automate this process.
Non-code notations, however, have no prospects to develop into definitive, catch-all specifications, which then could be converted into a secodary derivative, the code.
Programming languages have much better prospects to have specifications embedded. Eiffel with its Design by Contract and other features has already gone a long way in this direction.
So the code is the definitive source, allowing automated extraction of specifications and various descriptive materials.
Software engineering is (going to be) reverse.
Preparing diagrams and other non-text, and non-code specifications and gradually shifting to code is understood to be the way to go and proper engineering. Code generators are meant to automate this process. Non-code notations, however, have no prospects to develop into definitive, catch-all specifications, which then could be converted into a secodary derivative, the code. Programming languages have much better prospects to have specifications embedded. Eiffel with its Design by Contract and other features has already gone a long way in this direction. So the code is the definitive source, allowing automated extraction of specifications and various descriptive materials. Software engineering is (going to be) reverse.