Page 227 -
P. 227
212 PASTOR, MOLINA, AND IBORRA
registers, physical organization of memory, etc.) into code that executes directly on a given ma-
chine with its requirements as a hardware platform.
Analogously, a model compilation transforms a conceptual model (which abstracts away details
about the software platform on which it will execute through the use of execution control, representa-
tion of data in memory, data access, etc.) into a program written in a certain programming language
that will take care of the requirements of the software platform on which it will be executed.
Since the semantics of all primitives in the conceptual model is clearly defined, the compilation
of a conceptual model can be carried out in a manual way. In other words, the specification of
the conceptual model contains enough details about the system to be developed that a developer
with no additional information could implement it. Moreover, using the same conceptual model
as input, different developers would create different implementations of it, but all of them would
be functionally equivalent.
Nevertheless, to perform these transformation processes in an efficient way, there must be a
set of tools that automate the compilation of models: we will refer to these tools as conceptual
model compilers or, in short, as model compilers.
Regardless of whether the compilation process is performed manually or in an automated way,
certain requirements must be observed in order to define a set of guidelines to perform a complete
and correct compilation of a conceptual model. Compiling a conceptual model into an application
must be a deterministic process that can be applied in a systematic way. To obtain this process,
OO-Method establishes:
• what the representation of any conceptual model in any development environment must be
(taking into account both static and dynamic aspects); and
• an execution strategy that guarantees functional equivalence between a specification and an
implementation of it.
Also, the architecture of applications to be produced by the compilation process must be de-
fined. In consequence, the way to transform elements in the conceptual model into elements in the
application architecture and the way to transform the latter into code must be defined.
Application Execution Strategy
The first key aspect to be taken into account in order to implement a process to compile conceptual
models is the definition of how the applications to be produced will use elements defined in the
conceptual model to function. OO-Method proposes an abstract execution strategy (the execution
model) that is tied to the semantics of modeling elements, but that is independent of the details
of the software platforms on which applications will be implemented.
This strategy does not change with different compilation processes; it completes the seman-
tics of modeling elements and guarantees that the applications produced as a result of applying
a compilation process will be functionally equivalent to the conceptual models used as input for
this compilation process.
Application Architecture
The application architecture establishes the common structure of any application compiled from an
OO-Method conceptual model and must be compliant with the application execution strategy in order
to preserve the functional equivalence of the application with respect to the conceptual model.