the original system. This matching between model
and reality is the core of the scientific method, where
we run experiments and check if the outcomes of the
tests match in both cases.
For the software parts no reality exists, which
leads to the second kind of relation. The descriptions
of these prescribe a (new) reality, which cannot be
compared with something existing. Typically, in this
situation, there would be some mental reality we
could try to match against, but this is less feasible than
the check against reality. This brings us back to the
situation in Figure 1.
Note that in general the issue illustrated by this
example (Figure 2:) is the architecture of systems. A
special case is when all parts of the systems are new.
In any case we would like to express the constraints
expressed by the architecture specification of the
system (system integrity): parts of the systems only
communicate via ports and connectors and they do
this according to the provided and required interfaces
of the ports.
Modelling languages readily support the kind of
description in Figure 2:, while the best way to make
the Controller part is by programming it, eventually
by using state machine supported programming. Still,
there will be at least two artefacts: the specification of
architecture in Figure 2: and an implementation of the
Controller part in some programming language. The
same is the case in an Architecture Description
Language (ADL) (Clements, 1996) or in languages
especially made for this purpose as e.g.
(Balasubramanian et al., 2005). In addition there will
be some configuration giving the binding between the
program and the existing parts. Having separate
architecture specifications and implementations of
parts makes it difficult to ensure system integrity.
The question is if the use of a combined modelling
and programming language will improve this
situation. In order to find this out, we will look into
how modelling and programming languages support
the specification of systems (including architecture of
systems).
3 SYSTEMS
3.1 Systems in UML
In the following we will cover what the main
modelling language, UML, has to say about ‘system’.
As we learned from the introduction, ‘system’ may
mean three different things: (1) a system to be made,
(2) a real world system, and (3) a running system. In
the first two cases, we consider the Referent System,
while in the third case it could be either the model
execution in case of executable models or the
program execution in case the model is translated to
some programming language. Note that in this section
we use the term ‘model’ for the System Description,
as this is the way the term is used in UML.
In the following excerpts from the current UML
specification ‘system’ is meant to be the running
system, either by executing an executable model or by
executing a program that is generated from the model:
According to the UML specification, the objective of
UML is to “provide system architects, software
engineers, and software developers with tools for
analysis, design, and implementation of software-based
systems”. “For a planned system, the model may
represent a specification of how the system is to be
constructed and behave”. “The execution of behaviors
within a modelled system may result in the creation and
destruction of objects within that system.” “A
Component can always be considered an autonomous
unit within a system or subsystem.” “When testing is
performed, the traces of the system can be described as
interactions and compared with those of the earlier
phases”.
In the following excerpts ‘system’ is meant to be the
Referent System. Note that a Referent System may be
a system in terms of a running system, for which a
model is needed:
“A model is always a model of something. The thing
being modelled can generically be considered a system
within some domain of discourse.” “For an existing
system, the model may represent an analysis of the
properties and behavior of the system.” “A Model is a
description of a system, where ‘system’ is meant in the
broadest sense and may include not only software and
hardware but organizations and processes.”
In the following excerpts ‘system’ can be Referent
System or running system:
“The execution of an Action represents some
transformation or processing in the modelled system, be
it a computer system or otherwise.” “A UML model
consists of three major categories of model elements,
each of which may be used to make statements about
different kinds of individual things within the system
being modelled_...” “For example, for a model of
factory processes, the execution scope may encompass
the execution of those processes within a single factory,
while, for a model of a software program, the execution
scope will correspond to a single execution of that
program.”
“Different Models can be defined for the same system,
...”
The last citation says that we cannot really compare
models and programs. A program is always the source
of a program execution, while some models may just
describe the system from different viewpoints.
However, when we later look at Executable UML, a