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.
   222   223   224   225   226   227   228   229   230   231   232