It has been argued that system modeling will irrevocably change the way that software is written. Nothing could be further from the truth: in reality, all software is modeled today. Unfortunately, most of the models are fleeting, created seconds before the data design or software that implements them. The SQL, OQL, Java or C# is written down; the design, available only for seconds in the programmer’s mind, is lost forever. This despite the ongoing need to integrate what we have built, with what we are building, with what we will build–in the sure knowledge that we cannot know with clarity what we will be building a year or two from now.
In fact, Model Driven Architecture is really just another evolutionary step in the development of the software field. The magic of software automation from models is truly just another level of compilation. It could be argued that this trend started at the dawn of stored-program computing in 1947, with the Wheeler Jump on the EDSAC computer at Cambridge University. Wheeler and Wilkes developed the Jump to allow them to build libraries of pre-written, re-usable subroutines for solving common numerical problems. In this way EDSAC provided the world’s first practical computing service, with which users could compile programs from pre-written subroutines without having to understand all the details of how each subroutine was implemented in EDSAC order code.
At about the same time John Backus left the US Army, within three years joining IBM’s nascent computing operation. By 1954 he had taken the next great step toward abstracting software from the underlying infrastructure by outlining a “FORmula TRANSlating system” (FORTRAN), the first high-level programming language. Designed to simplify the development of software for the IBM 704, FORTRAN had the interesting and long-term side effect of enabling portability, and encoding
mathematical algorithms in a much more readable form than 704 assembler code. Initial resistance to FORTRAN, primarily from those that thought that most developers could write more efficient code “by hand” than that “written” (we would now say “compiled”) by a FORTRAN compiler, proved misplaced and incorrect. The world of programming was opened up to a much larger audience of potential practitioners.