The relationship between programs, models and systems is really quite simple if you are allowed to define terms.
001 – A System is a set of interacting concepts in the Real World or in some imagined world.
002 – A System is assimilated by an analyst or programmer.
003 – A Model is created by an analyst from some understanding of the System.
004 – A Model is described in terms of concepts bounded by the System.
005 – A Model is a representation of a System using a notation.
006 – A notation can either be textual (text) or part graphical and part textual (diagrams).
007 – A Model described in text is a textual Model.
008 – A Model described in diagrams is a graphical Model.
009 – A textual Model is equivalent to a graphical Model under transformation and vice versa.
010 – A Program can be written by a programmer from some understanding of the System.
011 – A Program is textual (text).
012 – A Program is written in terms of concepts bounded by the System plus queues, stacks, processes, remote procedure calls, message passing protocols, file access, databases, handling user input and output, windows management and other things.
013 – A Program can be automatically generated from a Model via a software architecture which defines mapping to queues, stacks, processes, remote procedure calls, message passing protocols, file access, databases, handling user input and output, windows management and other things.
014 -Therefore, a Program is not a Model.
015 – A Program is compiled to an executable.
016 – An executable running on computer hardware is known as a computer System.
I’m a Postdoctoral Researcher at SOM Research Team, in Barcelona. Currently, I’m involved in the development of scalable tools for MDE, especially in the persistence of Very Large Models.