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