Model-Driven Development is a field in Software Engineering that,
for several years, has represented software artifacts as models in
order to improve productivity, quality, and cost effectiveness.
Models provide a more abstract description of a software artifact
than the final code of the application. In this field, Model-Driven
Architecture (MDA) is an initiative, sponsored by the OMG, that is
constituted by a family of industry standards including: Meta-Object
Facility (MOF), Unified Modeling Language (UML), Object Constraint
Language (OCL), XML Metadata Interchange (XMI), and
Query/Views/Transformations (QVT). These standards provide common
guidelines for model-based tools and processes in order to improve
interoperability among executable frameworks, automation in the
software development process, and analysis techniques to avoid
errors during this process.
The MOF standard describes a generic framework where the abstract
syntax of modeling languages can be defined. This standard aims at
offering a good basis for Model-Driven Development processes,
providing some of the building blocks that are needed to support a
Model-Driven Development approach: what is a model, what is a
metamodel, what is reflection in a MOF framework, etc. However, most
of these concepts lack at present a formal semantics in the current
MOF standard. Furthermore, OCL is a constraint definition language
that permits adding semantics to a MOF metamodel. Unfortunately, the
relation between a metamodel and its OCL constraints also lacks a
formal semantics. This is, in part, due to the fact that metamodels
can only be defined as data in the MOF framework.
The MOF standard also provides the so-called MOF-Reflection
facilities, by means of a generic API, to manipulate software
artifacts that are made up out of objects. Broadly speaking,
\emph{reflection} is the capacity to represent entities that have a
formal semantics at a base level, such as types, as data at a
metalevel. Metalevel entities, once metarepresented, can be
computationally manipulated and transformed. This notion of
\emph{reflection} is still not supported in the MOF standard.
In this dissertation, we define a reflective, algebraic, executable
framework for precise metamodeling that provides support for the MOF
and the OCL standards. On the one hand, our formal framework
provides a formal semantics for the building blocks that are usually
involved in a Model-Driven Development process. On the other hand,
our framework provides an executable environment that is plugged
into the Eclipse Modeling Framework (EMF) and that constitutes the
kernel of a model management framework, supporting model
transformations and formal verification techniques. The main
contributions of this dissertation are:
\begin{itemize}
\item The formal definition of the following notions: \emph{metamodel},
\emph{model}, \emph{OCL constraint satisfaction}, and \emph{metamodel conformance}.
We clearly distinguish the different roles that the notion of \emph{metamodel}
usually plays in the literature: as data, as type and as theory.
In addition, we have defined new notions: \emph{metamodel specification},
capturing the relationship between
a metamodel and its OCL constraints; \emph{metamodel realization}, referring to the
mathematical representation of a metamodel; and \emph{model type} and \emph{constrained model type},
allowing models to be considered as first-class citizens.
\item A formal executable mechanism for metamodel reflection in the MOF framework,
so that metamodels and models can be manipulated in a generic way.
\item An algebraic executable metamodeling framework that is plugged into the Eclipse
Modeling Framework, constituting a high-level prototyping environment to experiment with
model management tasks where formal verification techniques can be applied.
\item A set of prototypes that validate the ideas and notions that have been mathematically
defined in this dissertation. These tools provide: OCL constraint validation and
OCL query facilities, QVT-based model transformations, and model management tasks
by means of generic algebraic operators. Some of these prototypes have already been
applied in other universities to explore new areas of research, and in industry. Furthermore,
we have shown how our algebraic MOF framework enables
the application of formal verification techniques to graph rewriting systems with a simple example.
\end{itemize}
The outcome of this dissertation constitutes a mathematical
executable framework, where formal methods can be applied to several
areas of Software Engineering: precise definition of model-based
domain-specific languages, model-based formal verification
techniques (reachability analysis, model checking, inductive theorem
proving, OCL constraint validation, among others), formal definition
of model management tasks (model transformation, model merging,
traceability support, among others), as well as their application to
specific case studies.
Some preliminary experiments related with this dissertation have appeared in
\cite{DBLP:conf/jisbd/BoronatCR03,BoronatPCR-JUCS04,BoronatRC:CIT:2004,BoronatCR:NET:2005}.
Parts of this work have appeared in \cite{BoronatCR:CSMR:2005,DBLP:journals/entcs/BoronatCR05,BoronatCR-ECMDAFA05,BoronatICRG:JISBD:2005,BoronatCR-FASE06,BoronatCRL05-EVOL06,BoronatOGRC:ECMDA:2006,BoronatRC:WAFOCA:2006,BoronatCR:EASST:2006,GomezBCR:JISBD:2007a,MoraGRPBGCR:JISBD:2007,GomezBCR:JISBD:2007b}.