An empirical study on the developers' perception of software coupling

Author(s): Gabriele Bavota, Bogdan Dit, Rocco Oliveto, Massimilano Di Penta, Denys Poshyvanyk, Andrea De Lucia
Venue: International Conference on Software Engineering
Date: 2013

Type of Experiement: Survey/Multi-Case Study
Sample Size: 76
Class/Experience Level: Undergraduate Student, Graduate Student, Professional
Participant Selection: developers working on open-source systems, undergraduate and graduate students, academics, and practitioners from around the world
Data Collection Method: Observation, Survey, Code Metric, Project Artifact(s)

Quality
4

Software coupling is usually an important aspect of a system. It is typically defined by finding the degree to which two classes in an object-oriented system depend on each other. This paper explores how different measures of coupling reflect developers' perceptions of coupling in a software system. The study presents a way to analyze how the several different established types of coupling (structural, dynamic, semantic, and logical) relate to how software developers perceive coupling.

Three open-source Java systems were used: ArgoUML, JHotDraw, and jEdit. 64 students, academics, and industrial programmers around the world along with 12 developers of the systems participated in this study. Four commonly used measures of coupling were used as independent variables in this study, each based on a different information source. Participants were asked for feedback regarding the coupling between classes to give the authors a good understanding of how they perceive classes with a high or low level of coupling.

The results of the study showed that the semantic measure of coupling best reflected the mental model of developers. Semantically coupled classes are related in that the terms present in comments are similar. The semantic measure of coupling is useful and relevant to programmers, which contrasts with the logical and dynamic measure. This work suggests that coupling is a worthwhile aspect of a software system to study empirically. The semantic measure of coupling in particular most accurately reflects developers' perceptions and mental models.

0