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