As one of the often cited resources in Software Engineering, the modularization principle states that the coupling
between modules should be minimised, while the cohesion within modules maximised. Apart from precisely defining what a module is, this principle should be challenged in empirical settings on two grounds: first, dynamically, to understand whether a module maintains or changes its behaviour over time; second, by encapsulating third-party modules, and observing how the system’s modules cope with the imported ones.
This paper studies the evolution of the components of a Free/Libre/Open Source Software – FLOSS – system (MPlayer) which comprises its own modules and several imported, external modules. It studies whether all modules behave in a consistent way or different patterns are observed.
It is found that few modules keep their behaviour throughout the life-cycle, and these often comprise the externally imported
modules. The project’s own modules are instead prone to changes in their behaviour, most often by degrading their cohesion, therefore increasing the coupling with other modules