Modularity, Dependence and Change

Markus Michael Geipel

Advances in Complex Systems (2012)

Abstract

Technological artifacts such as software often comprise a large number of modules; more than twenty thousand in the case of the Java software Eclipse. While on the micro-level this system is modular, how should the building blocks be arranged on the macro-level? In the literature this question has mainly been addressed with the same arguments already used to advocate modularity on the micro-level: Dependencies should be minimized as they impede optimization and flexibility of the system. In contrast to this I argue that along with a change from the micro view to the macro view also the argumentation has to change. In this paper, I analyze the theoretical ramifications of dependency between modules on the macro-level. In particular, I argue that macro-level dependencies are first weak dependencies, and second, foster flexibility and change efficiency. This argumentation is supported by an empirical analysis of 35 software architectures. Data show that dependency relations seldom cause change propagation. Furthermore, high dependency in the architecture negatively correlates with the occurrence of large change events. Thus, higher interdependency is associated with higher evolvability and more efficient change.