Software modularity techniques and mechanisms provide the fundamental means to build composable, reusable and adaptable software systems. However, to be both useful and usable in real-life software projects, such modularization solutions cannot be detrimental to the maintainability and reliability of the software artefacts being produced. For instance, we have learned in the past that a number of powerful programming mechanisms, such as multiple inheritance, can exert some negative side effects on the development of reliable, maintainable software systems. In addition, over the last years, there has been a growing awareness that conventional techniques (e.g. object-oriented design and programming) exhibit serious limitations in many software development scenarios
This view has recently directed the research goals of Software Engineering – aggressively developing new modularity techniques and mechanisms to support robust, stable designs of contemporary software applications. For instance, aspect-oriented programming emerged to tame the modularity and reusability of concerns properties in software systems. Feature-oriented programming is aimed at supporting improved variability of artefacts in a software product line. Many other modularization techniques are constantly emerging with different goals.
The conventional wisdom is that these contemporary modularization solutions always improve software quality. However, it is often the case little is known about their actual influence on the maintainability and robustness of complex software systems. In this context, the goals of the Opus Research Group is:
- to provide the means to empirically analyze the positive and negative effects of individual emerging modularity techniques and mechanisms on key software quality attributes, and
- investigate new modularization models that best fit the maintainability and robustness requirements of specific contemporary application domains.