An Explorative Study of Module Coupling and Hidden Dependencies
based on the Normalized Systems Framework
Dirk van der Linden, Peter De Bruyn, Herwig Mannaert, and Jan Verelst
University of Antwerp
Antwerp, Belgium
dirk.vanderlinden, peter.debruyn, herwig.mannaert, jan.verelst@uantwerpen.be
Abstract—Achieving the property of evolvability is consid-
ered a major challenge of the current generation of large,
compact, powerful, and complex systems. An important fa-
cilitator to attain evolvability is the concept of modularity: the
decomposition of a system into a set of collaborating subsys-
tems. As such, the implementation details of the functionality
in a module is hidden, and reduces complexity from the point
of view of the user. However, some information should not
be hidden if they hinder the (re)use of the module when
the environment changes. More concretely, all collaborating
modules must be available for each other. The way how
a collaborating module is accessible is also called module
coupling. In this paper, we examined a list of classifications
of types of module couplings. In addition, we made a study
on the implications of the used address space for both data
and functional constructs, and the implications of how data is
passed between modules in a local or remote address space.
Several possibilities are evaluated based on the Normalized
Systems Theory. Guidelines are derived to improve reusability.
Keywords-Reusability, Evolvability, Modularity, Coupling, Ad-
dress space.
I. I NTRODUCTION
Modern technologies provide us the capabilities to build
large, compact, powerful, and complex systems. Without
any doubt, one of the major key points is the concept
of modularity. Systems are built as structured aggregations
of lower-level subsystems, each of which have precisely
defined interfaces and characteristics. In hardware for in-
stance, a USB memory stick can be considered a module.
The user of the memory stick only needs to know its
interface, not its internal details, in order to connect it to
a computer. In software, balancing between the desire for
information hiding and the risk of introducing undesired
hidden dependencies is often not straightforward. However,
these undesired hidden dependencies should be made ex-
plicit [1]. Experience contributes in learning how to deal
with this issue. In other words, best practices are rather
derived from heuristic knowledge than based on a clear,
unambiguous theory.
Normalized Systems Theory has recently been proposed
[2] to contribute in translating this heuristic knowledge into
explicit design rules for modularity. In this paper, we want
to evaluate which information hiding is desired and which
is not with regard to the theorems of Normalized Systems.
The Normalized Systems theorems are fundamental, but it
is not always straightforward to check implementations in
different application domains against these theorems. This
paper aims at deriving more concrete guidelines for software
development in a PLC environment on a conceptual level.
Doug McIlroy already called for families of routines to
be constructed on rational principles so that families fit to-
gether as building blocks. In short, [the user] should be able
safely to regard components as black boxes [3]. Decades
after the publication of this vision, we have black boxes, but
it is still difficult to guarantee that users can use them safely.
However, we believe that a lot of necessary knowledge to
achieve important parts of this goal are available and we
should primarily document all the necessary unambiguous
rules to make this (partly tacit) knowledge explicit.
In this paper, we examined a list of classifications of types
of module couplings, and evaluated in which terms these
types are contributing towards potentially compliance with
the Normalized Systems theory. These couplings are studied
in an abstract environment [1]. Further, we extended this
study by placing the constructs in an address space, and eval-
uated the consequences. This evaluation is based on some
case studies in an IEC 61131-3 programming environment
by way of small pieces of code [4]. We investigated on how
different data constructs relate to a local or a remote memory
address space, and which consequences these relations have
to functional modules. Next, we placed the focus on the
functional constructs and paradigms, which also reside in a
local address space and might have a coupling to a remote
address space. We investigated the potential to use them
complying the Normalized Systems principles. Finally, we
present an set of derived, more concrete principles.
The paper is structured as follows. In Section II, the
Normalized Systems theory will be discussed. In Section III,
we discuss categories of coupling, seen in an abstract way. In
Section IV, we give an overview of how data can be passed
between functional modules in a local data memory address
space, or coupled with constructs in a remote address spaces.
In Section V, we focus on constructs for functionality, and
how they can be coupled (locally or remotely). A summary
of the evaluations and guidelines is given in Section VI.
Finally, Section VII concludes the paper.
40
International Journal on Advances in Systems and Measurements, vol 6 no 1&2, year 2013, http://www.iariajournals.org/systems_and_measurements/
2013, © Copyright by authors, Published under agreement with IARIA - www.iaria.org