of the stock market, of the weather system, of the
forces involved in sending a rocket to the moon,
they are all essential to mankind’s understanding and
ability to interact with, build, or predict things about,
the environment in which he lives. Programming, on
the other hand, is simply a tool. It is, at the simplest
level, a set of instructions for a machine to execute
in order that the machine performs some useful task
(though in some cases the actual usefulness is
dubious). The complexity and the variety of the
tasks to which we want to put our machines are
increasing astonishingly quickly, thus it becomes
more and more essential for us to be able to
understand, predict and communicate about the
programs that are written; hence the use of models.
Models, in the sense of the Unified Modelling
Language (UML) (OMG, 2003), have evolved as the
non-mathematician, software engineer’s tool for
facilitating communication and analysis of the
complex programs that they build. A huge part of
the modelling languages developed for this purpose
focus on the structural elements of the program
rather than the behaviour, which after all is the main
purpose of the program. This split between structure
and behaviour, is in itself a very interesting topic for
discussion, however, although we may touch on it in
this paper it is not the primary focus.
Techniques and languages for modelling
software have changed over the years to reflect the
programming languages in common use. Early
modelling approaches of flow charts, structure
diagrams, data flow modelling, have been replaced
with the current favoured approach of Object-
Oriented modelling. Although the UML consists of
multiple different modelling languages with
different modelling features for example: state based
modelling, component based modelling, and activity
flow based modelling. The core and most widely
accepted and used part of the UML is the humble
Class Diagram. This diagram type is fundamentally
based on the notions of object-orientation:
composition, abstraction, inheritance, modularity,
polymorphism and encapsulation.
The UML Class Diagram language arose towards
the end of the 1990’s, as a result of the coming
together of (initially) three different languages that
had been separately developed for a very similar
purpose. Booch’s development focussed approach
(Booch method) closely related to OO
programming; Rumbaugh’s Object Modelling
Technique (OMT) coming from the Relational
Database world; and Jacobson’s Use Case based
approach, OOSE.
The primary case study carried out and published
as part of the definition of the “new” Unified
Modelling Language was the definition of itself!
Thus right from the very start, the UML
(predominantly class diagrams) has been used as a
language to model languages. Such a model of a
language has come to be known as a metamodel (a
model of a model).
The use of UML as a means to model languages
has been part of the fuel for the recent advances in
the OO modelling community, and in particular
Model Driven Development (MDD (Atkinson, 2003,
Kleppe, 2003, Selic 2003)) research, which has
inspired a new interest in language specification.
This new interest comes under the title of Domain
Specific Languages (DSL (Chen, 2005, Greenfield,
2003, van Deursen, 2000, Vokac, 2003, Wile,
2001.)). As a result, numerous languages are being
defined, and in particular, numerous metamodels for
those languages.
Prior to UML alternative (traditional) modelling
techniques were employed to significant effect in
order to define languages. Set theory, logic, and
other branches of mathematics were used to give
precise and formal definitions of languages
including their semantics. These languages were
predominantly text based and Backaus-Naur-Form
(BNF) is used to define the language syntax. It is
useful at this point to note a significant difference, to
a language specification reader, between a BNF
grammar and a UML class diagram. In BNF, the
syntax is presented in an entirely text based format
and although complete and theoretically fit for
purpose, it presents a possible conceptual barrier to
the ease of understanding for a typical human reader.
Further, BNF is overly specific regarding the nature
of the syntax whereas the graphical based format of
UML primarily introduces the abstract concepts in
an easily accessible and pictorial manner. Recent
works such as (Alanen, 2004, Wimmer, 2005)
explore the relationships between BNF based
definitions of syntax and metamodels.
Mathematical modelling of algorithms has
evolved to a very high degree. Denotational
semantics (Stoltenberg-Hansen, 1994, Stoy, 1977)
allows a detailed analysis of algorithms to be made
and conclusions to be drawn regarding their
behaviour and efficiency. However, the very
mathematical nature of Denotational Semantics
makes it highly inaccessible to traditional
programmers and therefore its practical uptake has
been limited. Alternatively, many practical logics
have been developed for specific problem domains
and theorem proving tools designed (Hanna, 1992,
Hanna, 1990) to help verify and validate software
systems. Again however problems associated with
the complexity of such systems has limited their
ICSOFT 2008 - International Conference on Software and Data Technologies
314