2 NORMALIZED SYSTEMS
The basic assumption of the Normalized Systems ap-
proach is that information systems should be able to
evolve over time, and should therefore be designed
to accommodate change. This implies that the soft-
ware architecture should not only satisfy the cur-
rent requirements, but should also support future re-
quirements. It is a well-known problem in software
engineering that the structure of software degrades
and becomes more complex over time as changes
are applied to it. This problem has been defined by
Manny Lehman as the Law of Increasing Complexity
(Lehman and Ramil, 2001; Lehman, 1980). The prac-
tical manifestation of this law is that the impact of any
given change to an information system will increase
over time (Belady and Lehman, 1976; Lehman, 1980;
Lehman and Ramil, 2001). This is clearly an impor-
tant concern for information systems development.
Recently, the Normalized Systems approach has
been proposed which aims to address this issue. The
Normalized Systems approach uses the systems the-
oretic concept of stability as the basis for develop-
ing information systems (Mannaert and Verelst, 2009;
Mannaert et al., 2008). In systems theory, stability
refers to a system in which a bounded input func-
tion results in bounded output values, even as t → ∞.
When applied to information systems, this means that
applying a specific change to the information system
should always require the same effort, irrespective
of the size of the information system or the point in
time at which the change is applied. The Normalized
Systems approach further relies on the assumption of
unlimited systems evolution (Mannaert and Verelst,
2009). This means that the system becomes ever
larger in the sense that the number of modules—and
the number of dependencies between them—become
infinite or unbounded as t → ∞. This may seem an
overstated assumption, but actually, it is quite logical
as even the introduction of a single module or depen-
dency every twenty years corresponds to an infinite
amount for an infinite time period.
Information systems exhibiting stability with re-
spect to a defined set of changes are called Normal-
ized Systems (Mannaert and Verelst, 2009). In con-
trast, when changes do require increasing effort as the
system grows, combinatorial effects are said to occur
(Mannaert and Verelst, 2009). In order to obtain sta-
ble information systems, these combinatorial effects
should be eliminated. In order to identify and avoid
most of these combinatorial effects, a set of four de-
sign theorems was developed (Mannaert et al., 2008;
Mannaert and Verelst, 2009). We will now briefly
describe each of these theorems. More details are
beyond the scope of this paper and can be found in
the literature (Mannaert et al., 2008; Mannaert and
Verelst, 2009).
The first theorem, separation of concerns, re-
quires that every change driver or concern is sepa-
rated from other concerns. This theorem allows for
the isolation of the impact of each change driver. This
principle was informally described by Parnas already
in 1972 as what was later called design for change
(Parnas, 1972). This theorem implies that each mod-
ule can contain only one submodular task (which
is defined as a change driver), but also that work-
flows should be separated from functional submod-
ular tasks.
The second theorem, data version transparency,
requires that data is communicated in version trans-
parent ways between components. This requires that
this data can be changed (e.g., additional data can be
sent between components), without having an impact
on the components and their interfaces. This can, for
example, be accomplished by appropriate and system-
atic use of web services instead of using binary trans-
fer of parameters. This also implies that most external
APIs cannot be used directly, since they use an enu-
meration of primitive data types in their interface.
The third theorem, action version transparency,
requires that a component can be upgraded without
impacting the calling components. This can be ac-
complished by appropriate and systematic use of, for
example, polymorphism or a facade pattern.
The fourth theorem, separation of states, requires
that actions or steps in a workflow are separated
from each other in time by keeping state after ev-
ery action or step. This suggests an asynchronous
and stateful way of calling other components. Syn-
chronous calls—resulting in pipelines of objects call-
ing other objects which are typical for object-oriented
development—result in combinatorial effects.
3 TOOL DEVELOPMENT
In order to automatically identify manifestations of
violations to the Normalized Systems design theo-
rems, a tool prototype was developed. This tool iden-
tifies manifestations of violations to the Normalized
Systems design theorems at the API level. The tool
was developed in an iterative way using the design
science methodology (Peffers et al., 2007). In this
paper, we are primarily concerned with building and
evaluating an instantiation artifact (March and Smith,
1995).
Since each programming language has its own
constructs and syntax, different violations are possi-
ICSOFT 2010 - 5th International Conference on Software and Data Technologies
24