Page 228 -
P. 228

OO-METHOD     213
                      The set of mechanisms defined by the application execution strategy is abstract in the sense
                    that it dictates only what mechanisms an application must have in place (e.g., verify that integrity
                    constraints hold for an object after executing a service on it), but it does not dictate how these
                    mechanisms must be implemented (e.g., a method that reads the values of the attributes of the
                    object on which a service has been executed and verifies that every attribute has a valid value ac-
                    cording to the integrity constraints defined in the class that this object is an instance of). Therefore,
                    we need to define the architecture of applications.
                      First of all, it is obvious that the application architecture must provide mechanisms for every
                    conceptual primitive in a conceptual model: classes, attributes, relationships, derivations, precondi-
                    tions, integrity constraints, and so on. However, in addition to this, the application architecture must
                    state how all of the mechanisms in the application execution strategy will be implemented (e.g., how
                    the state of objects is made persistent, how derivations are calculated, how integrity constraints are
                    enforced, etc.). Finally, the application architecture must provide mechanisms that are independent of
                    the conceptual model but that are common in any application to be implemented on a given platform:
                    error management, communication protocols, data access management, and so forth.
                      The application architecture must therefore be a reconciliation of the set of mechanisms re-
                    quired by the conceptual model and the execution model (application execution strategy) with
                    the set of mechanisms imposed and/or required by the software platform, programming language,
                    programming model, and so on, at which the application is targeted.
                      A clearly defined application architecture will apply the process of conceptual model compila-
                    tion in a systematic way on different models, thus obtaining different applications (one per model)
                    that have common features and quality levels. Should there be a change in the acceptance level
                    for any feature of the application, the application architecture would be revised to achieve the new
                    requirements, but the conceptual model would remain unchanged. After modifying the application
                    architecture, we would apply the process of conceptual model compilation to the conceptual model
                    again in order to obtain a new version of the application that provides the same functionality (since
                    the conceptual model used as input would be the same) according to the new requirements.
                      We will refer to the set of elements and properties and elements relations that comprise the ap-
                    plication architecture as the application model. With OO-Method defining both the set of conceptual
                    primitives and its execution model, the intellectual effort in the creation of a model compiler is
                    focused on defining this application execution model.
                    Transformation Strategy


                    In order to complete the definition of a conceptual model compilation process, we must define
                    a transformation strategy to obtain the application model from the conceptual model and, in a
                    second step, obtain the application code from the application model.
                      The transformation strategy comprises the definition of:

                      •  Mappings, which establish relationships between elements in the conceptual model and ele-
                        ments in the application model.
                      •  Text transformations, which state how to transform elements in the application model into
                        text (code fragments).
                      Mappings define how to create instances of elements in the application model from instances of
                    elements in the conceptual model so that the set of mappings creates an application model from a
                    conceptual model. This set of mappings can be seen as a function whose domain is the conceptual
   223   224   225   226   227   228   229   230   231   232   233