Technology Briefing Report System Modelling
Technology Briefing Report System Modelling
System Modelling
Design methods focusing on program language modules date back to the early seventies; modelling systems
with objects is a technique of the late eighties. The first MIL was presented 1975, and in the following years a
lot of different MILs have been developed. In contrast, software architectures and design patterns are more
recent techniques and are each only about five years old.
1
to manipulate and/or access the data within an object. Another type of components are classes, which serve as
templates from which objects can be instantiated, i.e. derived.
The connections between the objects of a system model are manifold, e.g. instantiation of an object from a class,
composition, and use. Interacting objects often are not viewed as calling each other’s functions, but requesting
each other via messages to perform a desired action on their data. An object is responsible that its
representation is hidden from other objects. Thus, the object-oriented modelling method adds behaviour over a
mere structural solution.
A design method on the verge to object-oriented design is MD++, mainly MD with an object-oriented
extension. Other methods focus on a particular implementation language, e.g. HOOD (Hierarchical Object-
Oriented Design) is used to develop systems with the ADA implementation language. Today’s widely used
object-oriented methods include the Object Modelling Technique (OMT) by Rumbaugh, the Object-Oriented
Design and Analysis (OODA) by Booch, the Object-Oriented Design LanguagE (OODLE) by Shlaer, and
Ooram (Object-Oriented role modelling) by Reenskaug.
For both modular and object-oriented design methods there exist textual and diagrammatic notations coming
with the specific design methods, with diagrammatic notations becoming common during the last years.
Besides these two main design methods there exist design methods for special purposes like task design, which
is focusing on processes and their communications, and real-time systems design.
A MIL can be considered a structural design language because it states what the system modules are and how
they fit together to implement the system. However, MILs are not concerned with what the system does
(specification information), how the major parts of the system are embedded into the organisation (analysis
information), or how the individual modules implement their function (detailed design information).
The components of MIL notations are modules (computational units) with well-defined interfaces, through
which the modules import and export resources (named implementation-language elements). The connection of
the modules is based on definition/use bindings (i.e. each module defines a set of facilities that are available to
other modules, and uses facilities that are provided by other modules).
Given that a MIL offers a formal notation to express the system model, this model can be used by specific tools,
e.g. a compiler, to check the completeness and consistency of the system described. A compiler for a MIL
ensures that if one module uses a resource that another provides, the types of the resources match; that if a
module declares to offer a resource, it actually does and so on. Reasoning about the correctness of a MIL
description might be able in terms of pre- and post-conditions.
As mentioned before, without a MIL, the information how the system is to be build from its components and
how these interact with each other, is scattered. A MIL description is a single document which contains
explicitly all the necessary information to construct the system it describes. MIL system models are written
descriptions of the system design which must be followed. Thus, a MIL can prohibit programmers from
changing the system’s architectural design during evolution and maintenance without an explicit change in the
MIL description.
2
During the evolution and maintenance of a system, modules are changed and, hence, new versions of modules
are obtained. Further, there are several reasons for building different versions of modules, e.g. if the system is
provided for different hardware platforms. In the latter case, different configurations of the system are to be
supported. Some MILs offer a version control system to determine which version of which component should be
used to form a particular version of a particular configuration.
Module Interconnection Languages are means to explicitly describe the structure of a system and provide a
basis for enforcing that structure. On the other hand, MIL descriptions are cost-effective only for the
decomposition of larger systems. Further, they do not promote reuse of components or reusable patterns of
composition. Usually, MILs are described in a textual notation.
More recently, a number of component-based languages has been proposed. They describe systems as
configurations of modules that interact in specific, predetermined ways (e.g. remote procedure call, messages,
events) or enforce specialised patterns of organisation among components in large systems. These languages
are usually oriented around a small, fixed set of communication paradigms and implementation-level
descriptions, or enforce a specialised, single-purpose organisation, and are thus inappropriate for expressing a
broad range of system architectures.
Well known module interconnection languages include Tichy’s InterCol, introducing version management to
MILs, and Somerville’s and Thomson’s System Structure Language (SySL). The Proteus Configuration
Language (PCL), a ‘new-generation MIL’, has recently been developed within the Proteus research project.
3
abstraction than is regarded appropriate. Design methods, too, do not separate cleanly between the architectural
level of a system’s design and the implementation level. All in all, the argumentation is the same as in section
1.4.1.
4
Design patterns usually describe software solutions used by professional, experienced designers and
programmers in their software, making it easy to (re)use those proven solutions by anyone facing the same
problem. When using design patterns this way, they act as building blocks of a system. Thus, design patterns
aid in making a system or parts of it reusable.
Design patterns are, like software system architectures, independent of a specific implementation language or a
language concept like modular or object-oriented programming. However, the most important value of patterns
today is that they are used to complement existing design methods, solving problems that are beyond the reach
of those methods, especially object-oriented design methods.
An object-oriented design pattern identifies the participating classes and instances and the way they interact.
Each design pattern focuses on a particular object-oriented design problem using a description similar to that
mentioned above. The example provided with the pattern is written in an object-oriented programming
language. Here, the choice of implementation language is important, because it determines what can and
cannot be implemented easily.
Design patterns must not be seen as a recipe of how to develop systems or parts of it. They represent a more
generic description of how to build parts of a system. Patterns are not designed to be executed by computers but
to be applied by humans in situations where the patterns seem appropriate.
The benefits of design patterns are reuse of previous patterns and software abstractions, guidance during the
development of systems, and communication between the people involved in the development of systems.
2.2 Maintenance
When maintaining the system, the model aids in understanding the system. Various surveys have shown that
40-90% of the maintenance time is used for this purpose, depending on the specific system and the nature of
the changes to be made. System models could reduce this amount of time significantly. Especially if main
changes are to be made later, the model will help to show side-effects of contemplated changes. Provided that
the model is kept updated, it represents an invaluable part of the system’s documentation. In addition, retaining
the designer’s intentions about the composition of the system will help maintainers to preserve the integrity of
the system’s design.
The four conceptual frameworks discussed in the Overview chapter act at different levels of abstraction and,
thus, aid in a different way to the understanding of the system.
Software architectures describe the overall system structure, without regarding how the components and their
interconnections are implemented in a specific programming language. Module interconnection languages are
not concerned about the implementation of the modules at the algorithmic level, although the system
composition is expressed with the use of implementation-language items. Design methods define how the
components and their interconnections are implemented in terms of the programming language paradigm used.
Finally, design patterns can be used to describe system components and interconnections at any desired level of
abstraction. When used to complement design methods, patterns are, of course, on a lower level of abstraction
than design patterns describing the system’s architectural structure.
5
2.3 Analysis of existing systems
The purpose of analysing existing systems is to understand how the system does what it does. Whether the
system is maintained or it is prepared to be transformed, e.g. to another hardware platform, the emphasis of
system analysis lies on understanding of which components it is built and how they interact.
A system model as the result of this analysis, again, aids to the understanding of the system and the side-effects
of main changes.
3. Relevance to RENAISSANCE
For many legacy systems there is no actual or updated documentation of the system’s architecture. To retrieve
information about its structure, the legacy systems will have to be reverse engineered and then documented (see
the technology briefing report on reverse engineering by Engineering). This information will be used to build a
model of the system’s architecture. Whether it is possible to build this system model automatically or if this has
to be done manually from the data of the reverse engineering process, depends on the tools available.
Such a model of a centralised system can be transformed, step by step, into one describing a more and more
decentralised system exploiting a client/server architecture. Using a method with a diagrammatic notation will
help the developer to better understand the system, i.e. which changes are more appropriate to transform the old
system, and how changes of one component of the system may affect other components.
There may be several ways to visualise and transform an existing system. The developer will have to use his
experience to decide on the most promising method here.
4. Available support
The available support differs significantly between the four conceptual frameworks of system modelling
approaches explained in the Overview chapter.
Both design methods are very well supported by literature and tools. For every major system modelling
language there exists at least one book by the developers, describing the method and the process associated with
it. Further, a lot of books and articles about specific modelling languages or comparisons of them have been and
are still published. Some of the modelling languages have been revised and refined since they came out.
Modular design methods are still in use, but object-oriented design methods have gained more and more ground
during the past years.
If a tool vendor claims to support a certain method, this does not mean that the tool supports the entire process
or all the concepts of that method. Nonetheless, there are a lot of tools supporting a method entirely.
The support for Module Interconnection Languages is rather poor. Although a lot of articles and books have
been published on that topic, implementations and especially the industrial use of MILs can be neglected.
Besides the Xerox system modeller there has been no nameable industrial tool support.
Software system architectures and design patterns are still topics of research. A lot of books and research
articles are published on both, but finding throughout accepted ‘standard’literature is still difficult.
The development of tools to support the Architecture Description Languages is in progress but there exists
almost no industrial use besides in projects of the U.S. Department of Defense.
As design patterns are not meant to be executed by computers, there will be no tools for this purpose. But a lot
of effort is used to find object-oriented patterns. So patterns may be used in object-oriented design methods and
tools in the future.
6
Table 1 gives an overview over the support offered by some modelling languages according to the following
requirements:
1. Integrated system modelling: Modelling all aspects of the product in one formalism, i.e. incorporate
descriptions of and interrelationships between software and hardware, including network and
distribution aspects.
2. Multiple structural viewpoints: Be able to express and show several viewpoints of the same system,
e.g. its interface, its logical composition and its run-time structure.
3. Structural variability: The ability to define variability in the logical composition of a system, in
interfaces and in relationships in which an entity participates.
4. Component variability: The ability to represent variability in the concrete system, e.g. versions, and to
allow intentional version selection.
5. Object-oriented modelling: The extent to which the language uses the concepts provided in object-
oriented formalisms, such as classification, inheritance and encapsulation.
The assessment of the software architecture’s ADLs depends partly on the specific architecture description
languages, as there exist ADLs for different domains and purposes.
5. Maturity assessment
The maturity for the methods discussed in the Available support chapter is assessed as follows:
7
SySL/Sommerville low - medium
PCL/PROTEUS medium
Software architecture Various ADLs low
Design patterns N/A low
Table 2: Maturity assessment
6. Inapplicability
The most important disadvantage with existing modelling frameworks is that they are meant for developing
new systems, not re-engineering existing systems.
This is obvious especially with the processes of design methods. Without adapting the design process to re-
engineering, almost no design method seems to be usable. Thus, the use of some tools available will be
problematic because they guide the user step by step through the predetermined design process.
Today’s object-oriented modelling languages are not supporting real-time systems, concurrent and distributed
systems very well. Especially the last aspect may be a problem for the RENAISSANCE project. The lack of
concepts and design process steps does not necessarily mean that it is impossible to model distributed systems.
But it would be an advantage to have method and tool support for e.g. quality assurance of distributed systems.
Although there exist a few object-oriented modelling languages for real-time systems, they have other
disadvantages like immaturity or sparse tool support.
Some of the design methods have been developed to be used with certain programming languages. They
therefore lack generality both in their design process and in their concepts.
There exist a few reports on using design patterns in the development of large software systems. But still,
sufficient material has not been published yet to allow decisions about the benefits of design patterns in large
projects.
7. Future development
8
representations found in OMT, OODA, Objectory, and other methods. With respect to the modelling language,
UML is no departure from its predecessors.
Because UML will be more of a unified notation than of a unified process, the development of UML should be
followed. Thus, for the re-engineering of legacy systems, it is possible to either choose the most suitable process
or to develop a particular, application-tailored process.
Compared to currently used object-oriented design methods, UML provides additional modelling elements.
Some weight is put on the modelling of concurrent and distributed systems (particular for modelling systems
built with CORBA and OLE/COM, and distribution as found in Java applets). The UML notation is not meant
to be restricted to those technologies, but they are expected to be of great importance. Further, the modelling of
threads and processes is planned to be integrated into UML.
The goal of the UML developers is to bring more stability to the object-oriented market. With respect to this, it
should be mentioned that even the Fusion group at Hewlett Packard, which has a similar (process) approach, is
considering the adoption of the UML notation.
UML is expected to be standardised by the OMG late this year. Rational Software Corporation, the company
responsible for UML, claims that there will be tools available from several vendors by early 1997.
8. Other comments
Although many system modelling languages of the design method framework are meant to support the
development of new systems, it should be possible to adapt the step-by-step processes so that they support the
RENAISSANCE method. Interesting enough, there seems to be no experience in using existing system
modelling languages for the re-engineering of large systems, which are on the other hand widely used for the
development of new systems.
Some methods and tools have only been made by companies for developing their own and their customer’s
systems. It is therefore hard to judge on their quality and, especially, on the maturity.
All in all, the support for software engineering may be rather poor. Some design methods do not consider reuse
of components, others do not provide modelling language constructs to support the development of large
9
systems. Many methods need to be revised regarding extensibility, modifiability and maintainability. Often a
method supporting some of these requirements, is poor in supporting others.
Despite their common roots, the different system modelling design methods are not well integrated. Although
the processes show some similarities because they are supporting more or less the same phase of the software
lifecycle, the notational concepts differ noticeably between methods. This means in particular that a model
written in one modelling language cannot be altered using another.
Summary
System modelling methods to be used with the re-engineering of large systems cannot be found ‘off the shelf’,
but have to be adapted to suit the specific needs of re-engineering.
Tools claiming to support a particular design method have to be thoroughly reviewed, to verify how far this
support goes and which programming languages are available with this tool.
10