On the congruence of modularity and code coupling

  title={On the congruence of modularity and code coupling},
  author={Fabian Beck and Stephan Diehl},
  booktitle={ESEC/FSE '11},
Software systems are modularized to make their inherent complexity manageable. While there exists a set of well-known principles that may guide software engineers to design the modules of a software system, we do not know which principles are followed in practice. In a study based on 16 open source projects, we look at different kinds of coupling concepts between source code entities, including structural dependencies, fan-out similarity, evolutionary coupling, code ownership, code clones, and… 

Figures and Tables from this paper

Analysis of Multi-dimensional Code Couplings

  • Fabian Beck
  • Computer Science
    2013 IEEE International Conference on Software Maintenance
  • 2013
This work provides insights into the relationship between concepts of coupling and the modularization of software, first evidence on the usage of modularization principles can be derived from an empirical study on open source systems and proposes two novel visualization techniques.

Automated software remodularization based on move refactoring: a complex systems approach

This paper proposes an automated strategy to remodularize software based on move refactoring, i.e. moving classes between packages without changing any other aspect of the source code, and finds that modularity improves by 166+-77 percent.

Improving modular structure of software system using structural and lexical dependency

Analyzing information from versioning systems to detect logical dependencies in software systems

  • Adelina Diana StanaIoana Sora
  • Computer Science
    2019 IEEE 13th International Symposium on Applied Computational Intelligence and Informatics (SACI)
  • 2019
This work identifies a set of factors that can be used to filter the co-changes such that true logical dependencies are identified during the evolution of a software system.

Software Maintainability and Reusability using Cohesion Metrics

This work addresses how to use internal attribute as cohesion could improve software maintainability and reusability and addresses general design principles of object-oriented and other reuseoriented systems.

An empirical study on the developers' perception of software coupling

The results indicate that the peculiarity of the semantic coupling measure allows it to better estimate the mental model of developers than the other coupling measures.

Using Cohesion and Coupling for Software Remodularization

The results of a large study analyzing the modularization quality of 100 open-source systems and a survey conducted with 29 developers aimed at understanding the driving factors they consider when performing modularization tasks are presented.

Identifying modularization patterns by visual comparison of multiple hierarchies

An interactive visualization approach that compares the current modularization of a system to several software clustering results and shows that identifying those modularization patterns provides valuable insights and can be done efficiently.


This project examines how the quality of a code generator used in an Object-Relational Mapping (ORM) framework can be improved in terms of maintainability, testability and reusability by changing the



API-Based and Information-Theoretic Metrics for Measuring the Quality of Software Modularization

A new set of metrics that measure the quality of modularization of a non-object-oriented software system are presented and proposed, based on information-theoretic principles.

Socio-technical congruence: a framework for assessing the impact of technical and work dependencies on software development productivity

This paper argues that modularization, the traditional technique intended to reduce interdependencies among components of a system, has serious limitations in the context of software development and builds on the idea of congruence, proposed in prior work, to examine the relationship between the structure of technical and work dependencies.

An intelligent tool for re-engineering software modularity

  • R. Schwanke
  • Computer Science
    [1991 Proceedings] 13th International Conference on Software Engineering
  • 1991
A software tool that provides heuristic modularization advice for improving existing code is described, which will soon incorporate an automatic tuning method, which allows the tool to learn from its mistakes, adapting its advice to the architect's preferences.

Coupling and cohesion as modularization drivers: are we being over-persuaded?

An environment is described that allows us not only to assess this reality but also to derive better modularization solutions in what concerns coupling and cohesion, generated by means of cluster analysis techniques and partially preserve the original modularization criteria.

Evaluating the Impact of Software Evolution on Software Clustering

These experiments show that the evolutionary approach could produce meaningful clustering results, but still the traditional approach provides better results because of a more reliable data density of the structural data.

Structured Design

Considerations and techniques are proposed that reduce the complexity of programs by dividing them into functional modules. This can make it possible to create complex systems from simple,

Software architecture recovery using Conway's law

This paper describes how the organization of system developers can be extracted and analysed to form an ownership architecture, which serves as a predictor of the concrete architecture, and also provides facts about the location of live design knowledge.

Software Dependencies, Work Dependencies, and Their Impact on Failures

Analysis of the relative impact that syntactic, logical, and work dependencies have on the failure proneness of a software system suggests that practices such as rearchitecting, guided by the network structure of logical dependencies, hold promise for reducing defects.

Information Distribution Aspects of Design Methodology

The role of documentation in the design and implementation of complex systems is explored, resulting in suggestions in sharp contrast with current practice, and the thesis that such information "broadcasting is harmful, that it is helpful if most system information is hidden from most programmers, is supported.

On the evaluation of the Bunch search-based software modularization algorithm

An automatic reverse engineering process to infer subsystem abstractions that are useful for a variety of software maintenance activities based on clustering the graph representing the modules and module-level dependencies into abstract structures not in the source code called subsystems is described.