In this article we have defined a concrete set of
requirements that an ideal MDD infrastructure should
support, and have argued that the explicit distinction
of two orthogonal forms of metamodeling—linguistic
and ontological—is the key to fixing some of the
problems in the first generation MDD infrastructure
and to scaling it up to satisfy all of the identified
requirements.
The forthcoming revision of the OMG’s MDD
infrastructure in the UML2.0/MOF2.0 standards
represents a significant step forward in this regard in
that for the first time it accommodates two distinct
forms of instantiation. However, two significant
problems remain.
First, although the distinction is present, it is not
made explicit enough. For instance, while linguistic
metalevel boundaries are recognized, ontological
boundaries do not exist. Moreover, when coupled
with the fact that stereotypes are the strongly
preferred mechanism for metamodeling, there is a
strong suggestion linguistic metamodeling is the only
meaningful form of metamodeling.
Second, in the current profile mechanism there is still
a major bias in favor of defining predefined concepts
at the meta-level (i.e. as part of the modeling
language, given the current infrastructure
preoccupation with linguistic metalevels) rather than
as regular user types at the M1 level.
Defines standard
Replaced/Superseded by document(s)
Cancelled by
Amended by
Provides definitions
Abstract
There is general agreement that metamodeling is an
essential foundation for model driven development,
but there is less consensus on the precise form it
should take and role it should play. In this article we
first analyze the underlying motivation for modeldriven
development and then derive a concrete set of
requirements that a supporting infrastructure should
satisfy. In particular, we discuss why the traditional
“language definition” interpretation of metamodeling
is not a sufficient foundation, and explain how it can
be extended to unlock the full potential of model
driven development.
Introduction
Ever since human beings started to program
computers, software engineers have been working to
raise the level of abstraction at which this activity
takes place. The first FORTAN compiler was a major
milestone in computer science since, for the first
time, it allowed programmers to specify what the
machine should do rather than how it should do it.
The raising of programming abstraction levels has
continued apace since then, and today’s objectoriented
languages enable programmers to tackle
problems of a complexity undreamt of in the early
days of programming.