Pre Print A Survey On Software Coupling Relations and Tools
Pre Print A Survey On Software Coupling Relations and Tools
Enrico Fregnan∗
University of Zurich, Switzerland
Tobias Baum
Leibniz Universität Hannover, Germany
Abstract
∗ Corresponding author
Email addresses: [email protected] (Enrico Fregnan),
[email protected] (Tobias Baum), [email protected],
[email protected] (Fabio Palomba and Alberto Bacchelli)
Conclusion: This study shows the directions followed by the research on soft-
ware coupling: e.g., developing metrics for specific environments. Concerning
the metric tools, three trends have emerged in recent years: use of visualization
techniques, extensibility and scalability. Finally, some coupling metrics appli-
cations were presented (e.g., code smell detection), indicating possible future
research directions.
Keywords: Software Engineering; Coupling relations; Software metrics
2010 MSC: 00-01, 99-00
1. Introduction
2
15 mantic, and logical coupling. Dynamic coupling analyzes the run-time relations
among different software entities [10]. Semantic coupling exploits the semantic
relations among different elements in the source code using information retrieval
techniques [11]. Finally, logical coupling approaches work by finding relations
among system parts that are frequently changed together [12].
20 Due to the flourishing of this research field, a vast amount of original coupling
measures have been proposed. However, all these different approaches can make
it difficult for a software engineer to find the proper coupling relations to test the
quality of the software on which he or she is working on. Some coupling relations
can be applied only to particular groups of programming languages such as
25 the object-oriented ones. Other metrics reveal themselves useful in specific
situations: for example, evolutionary coupling is particularly helpful to highlight
software changes. For these reasons, this work aims to provide a taxonomy of
the coupling relations proposed so far, categorizing them in different groups and
highlighting the commonalities and differences among them. Special attention
30 has been given to the various trends that emerged in this field so far, highlighting
the motivations behind the construction of new coupling relations. We argue
that this study constitutes a good overview of software coupling relations and
a starting point for further research in this field. Furthermore, we compare
different tools developed by researchers to extract these relations in terms of
35 output and required input information. The goal of this second part of our
literature review is complementary to the first one. We argue that a researcher,
having identified the coupling metrics of interest, may also be interested in
which tools he/she may use to extract them. To the best of our knowledge, this
constitutes a new contribution to the existing literature.
40 Other systematic reviews on coupling relations have been done by Kirbas
et al. [12] and Nicolaescu et al. [13]. However, they have a different aim: Kirbas
et al. limit their review to the field of logical coupling, while Nicolaescu et al.
organize it in chronological order. The work of Kirbas et al. uses a measure-
ment theory perspective to analyze logical coupling measures. This approach
45 is reflected in the research questions identified in the study: questions like "Do
3
existing studies use a sound empirical relation system?" or "Do existing studies
define measurement methods and procedures?" show the authors’ focus on eval-
uating how well logical coupling is currently captured by the different measures
proposed. However, such an approach is not easily applicable to the broader
50 perspective of our review. We consider logical coupling measures only as a sub-
group of all the proposed coupling ones. Our review’s goal is to give a general
classification of all the possible coupling measures introduced in the software
engineering field and not to analyze in details the properties of a specific sub-
group. For this reason, the focus on logical coupling is limited to an overview
55 of the different measures introduced to assess it.
Nicolaescu et al. propose an analysis of the main trends of coupling metrics
for object-oriented systems, considering both the fundamental research done in
the field and new directions that have been explored in recent years. Although
their work constitutes an extraordinary attempt to present an overview of this
60 complex research area, they report the different proposed coupling metrics in
chronological order instead of dividing them into groups. In fact, Nicolaescu
et al. analyzed 26 research papers dividing them in three time periods: fun-
damental works (1990-1999), advanced approaches (2000-2010) and recent di-
rections (2011-2015). On the contrary, in our work the main focus is to give
65 a conceptual subdivision of the different coupling relations. In fact, our main
concern is not the period in which the considered metrics have been proposed
(although, if possible, we keep a chronological order for clarity), but the different
rationales behind them, which gave birth to their classification.
2. Research questions
4
75 ferent techniques is still missing. Therefore, in this work we first answer the
following research question:
RQ2 aims to retrieve the tools that the software engineering research commu-
nity has developed to extract different coupling relations. We will classify them
85 based on the taxonomy produced by answering RQ1. Moreover, their different
inputs and outputs will be highlighted, together with their limitations: e.g., the
programming languages to which they are restricted.
3. Research strategy
95 • Structural coupling
• Dynamic coupling
5
Figure 1: Methodology steps
We included the word “software” to reduce the number of results from re-
search fields other than software engineering. However, this was not neces-
sary when we used terms proper to the computer science area such as “object-
oriented”. The same procedure was applied to develop a search string for our
105 second research question (RQ2).
These two research strings were used to investigate the following resources:
6
• IEEE Xplore Digital Library1
• SpringerLink3
110 • ScienceDirect4
Table 1 shows the size of the papers set retrieved at each step of our investiga-
tion. ScienceDirect and SpringerLink returned a number of results too vast for
an accurate analysis (more than 200’000 results). To restrict this set, we filtered
the journals to the ones on computer science and software/software engineer-
115 ing and then we applied our queries to each of them (complete list available in
Appendix A). In SpringerLink, we excluded the “preview-only” content.
The retrieved papers were evaluated based on a set of exclusion and inclusion
criteria. The exclusion criteria were:
1 IEEE, http://ieeexplore.ieee.org/Xplore/home.jsp
2 ACM, https://dl.acm.org/
3 SpringerLink, https://link.springer.com
4 ScienceDirect, http://www.sciencedirect.com
5 We reported the number of results obtained with the first query and the number of results
obtained with the second one. We did not compute their sum since the two queries presented
overlapping results.
7
• Not peer-reviewed articles, e.g., Ph.D. or M.Sc. thesis
To assess the quality of the retrieved research material, in other words, if the pa-
pers identified by our queries contained information useful to answer our research
125 questions (respecting the first criterion), the following three-step procedure was
applied. In the first step, the papers’ titles and abstracts were carefully read to
exclude the ones clearly irrelevant to the focus of our research. The second step
consisted in skimming the whole text of the material left after the first selection
to assure that it contained information related to coupling relations, measures
130 and/or tools to extract them. Finally, the third step was an accurate reading
through the whole text to ensure that this information was effectively helpful to
address the two research questions: for the tools, we checked that their input,
output and limitations were described.
At the same time, we applied the following inclusion criteria:
135 • Year of publication: only papers published between 2002 and 2017 were
accepted;
OR
• Number of citations: only papers referenced by more than 100 other pub-
lications were accepted;
140 The two criteria do not have to be valid simultaneously: they are connected with
the logical operator OR. Therefore, a paper is selected if it meets at least one of
the two criteria. The first criterion was selected to include recent publications on
the topic. We included in our work only papers published in the last 15 years at
the moment on which this research is conducted: from January 2002 to Decem-
145 ber 2017. However, we argue that this criterion may have excluded fundamental
papers on coupling. Although they have been published before 2002, their con-
tribution could be fundamental to obtain insights on trends and characteristics
of more recent metrics. For this reason, we introduced the second criterion to
augment the first one. We selected 100 citations as threshold because we were
150 interested in the analysis of solid and well-established resources on the topic of
8
interest. The number of citations has been attested using Google Scholar to
have a verification system independent from the single data source. However, we
recognize the potential limits of this approach: a paper with a high number of
citations is not necessarily an important paper on the subject. To mitigate this
155 problem, we complemented this research strategy with a snowballing technique
[15]. We applied forward and backward snowballing on all the papers included
in our final selection set until saturation was reached. The purpose of using the
snowballing technique was to compensate for fundamental material that may
have been left out by our previously mentioned search queries.
160 As a further check on the goodness of the retrieved material and its correct
use, we reached authors of other similar works on coupling to ask them to check
if their papers were cited correctly and suggest us any other published work
relevant for our review. 17 authors were reached and 6 replied. As result, we
discovered one paper previously not included and we added it to the set of
165 primary studies.
9
• Structural coupling
• Dynamic coupling
• Semantic coupling
• Logical coupling
180 Structural coupling exploits the static relations in the source code: it focuses
on finding patterns such as called methods, relations among classes (inheritance
and friendship) and accessed variables. Dynamic coupling also reflects calls
between classes and methods but it does that at run-time, instead of looking at
the static code. Semantic coupling relies on Information Retrieval techniques
185 to find relations in the code lexicon, while logical coupling intends to assess
the entities that are frequently changed together, and therefore share a link,
using historical information. Finally, other approaches try to combine these
groups of relations in a complementary way or present coupling measures for
domain-specific programming languages. Figure 2 shows an overview of the
190 coupling relation taxonomy that we have constructed in our review. The goal
of this first part of our work is to present the evolution of the coupling relations
and metrics proposed, while keeping intact the categories presented by Bavota
et al. [9].
195 Structural coupling relations exploit static connections among software enti-
ties (modules, objects or classes). Measures to assess them have been initially
developed for procedural languages, but, later, extended to the object-oriented
paradigm. Furthermore, some structural coupling relations have been proposed
specifically for object-oriented languages. In general, it is possible to divide
200 them into two broad groups: procedural programming coupling measures and
object-oriented coupling measures [18].
Myers divided the coupling for procedural programming languages in 6 dif-
ferent levels, reported in Table 3 ordered from the worst to the best in terms
10
Content coupling
Common coupling
Control coupling
Procedural languages coupling
External coupling
Stamp coupling
Data coupling
Content coupling
Common coupling
Structural coupling
Control coupling
Interaction coupling
External coupling
Stamp coupling
Data coupling
Hidden coupling
Object-oriented languages coupling
Component coupling Scattered coupling
Modification coupling
Extension coupling
Import coupling
Dynamic coupling
Export coupling
Semantic coupling
Logical coupling
11
of consequences on the maintainability and quality of the software [19]. These
205 coupling levels have been extended by Offutt et al. to include global and bidi-
rectional coupling measures, previously left uncovered [5]. Although it has been
originally introduced for procedural languages, this subdivision remains valid
also for object-oriented ones.
In 1981, Henry and Kafura proposed an information-flow technique to con-
210 struct different measures for a software system [21]. Their idea constitutes an in-
teresting approach to compute coupling relations. In particular, the information
flow metrics can recognize content coupling and common coupling. The authors
argue that content coupling is equivalent to their direct local flows. Common
coupling is equivalent to the global flow measure. Henry and Kafura developed
215 two metrics fan-in and fan-out. fan-in counts the number of local flows to the
considered procedure together with the number of data structures read by the
procedure. fan-out measures the quantity of local flows from a selected proce-
dure plus the number of data structures on which the procedure writes. At a
later time, Allen et al. proposed to measure coupling metrics using the links
220 and information obtainable building the system graph of a software [22, 23].
The strength of this approach is that it can be applied to many software de-
sign abstractions and to all kinds of programming languages (procedural and
object-oriented).
The flourishing of the object-oriented paradigm brought the researchers to
225 propose metrics and relations to cover its new aspects. Coupling relations for
object-oriented systems have been investigated in the work done by Eder et al. in
1994. The authors identified three groups of coupling relations [24]: interaction,
component and inheritance coupling. Their classification is shown in Table 4.
A fundamental structural coupling metric for object-oriented software is
230 CBO (Coupling Between Object) [25], which belongs to the interaction cou-
pling subgroup [24]. CBO reflects the degree to which an object acts upon
another, excluding the parent-child relation. It constitutes one of the core cou-
pling metrics and it has been further refined and applied in different other
domains. Chidamber and Kemerer also defined RFC (Response For a Class), a
12
Table 3: Structural coupling relations for procedural languages
Level Description
Content coupling Refers to two modules of which one directly accesses
the contents of the other: e.g., module A modifies a
statement or branches to a local label of module B.
Common coupling Happens when two modules have access to the same
global data: for example, both modules can read and
write the same global record. Schach points out that
if the access to the data is read-only, then this can
not be considered common coupling [20].
Control coupling Happens when a module explicitly controls the logic
of another. However, this does not happen if the first
module passes only data.
External coupling Happens when two modules exchange information
using an external element such as a file.
Stamp coupling Exists between two modules if one of them passes
a data structure as an argument to the second one,
but the called module does not operate on all the
components of the data structure.
Data coupling Exists among two modules if the arguments that they
pass to each other are all homogeneous data items:
simple arguments or data structures in which all el-
ements are used by the calling module [20].
13
Table 4: Structural coupling relations for object-oriented languages
14
235 coupling measure related to CBO [26, 27] that measures the total communica-
tion potential. These two metrics were further analyzed by Briand et al. [28] and
formalized to remove possible sources of ambiguities. Moreover, Briand et al.
introduced CBO0 to include the ancestor classes in the metric computation, pre-
viously left excluded [25]. Other important metrics that they considered were
240 Message Passing Coupling (MPC) and Data Abstraction Coupling (DAC), orig-
inally defined by Li and Henry [29]. Briand et al. further refined DAC in DAC0 ,
a metric that counts the number of classes used as types of attributes. Finally,
other important structural coupling measures are efferent and afferent coupling
(Ce and Ca [30]), Coupling Factor (COF) [31, 32] and Information-flow-based
245 coupling (ICP) [33]. Li defined two new coupling metrics to complement Chi-
damber and Kemerer’s metrics suite: CTA (Coupling Through Abstract data
type) and CTM (Coupling Through Message passing) [34]. Similarly to the
DAC0 [28] metric, CTA measures the relation between two classes created when
one of them uses the other in its data declaration. CTM (Coupling Through
250 Message passing) measures the number of messages sent by a considered class to
the other classes in the system, excluding the ones sent to objects used locally
by the methods of the class. MPC, RFC and CBO were also modified to be ap-
plied to program slices [35], creating the new metrics SMPC, SRFC and SCBO.
The method-level metrics proposed by Briand et al. have been adapted to a
255 finer granularity by English et al. to distinguish the different types of constructs
with which they might be related [36]. A specific focus has been given to the
friendship relation.
To take into account indirect coupling relations and the strength of coupling
between two classes, Li developed a new metric [37]. Indirect coupling has also
260 been considered by Yang et al. [38, 39] (creating also a tool, Indirect Coupling
Detector) and later by Almugrin et al. [40].
New measures have been introduced to allow an evaluation of the level
of object-orientation of a program to estimate the possibility that an object-
oriented fault happens. For this purpose, Tang et al. proposed new coupling
265 metrics [41]: IC (Inheritance Coupling) and CBM (Coupling Between Meth-
15
ods). Gui and Scott focused instead on metrics specific for component reusabil-
ity [42], defining measures for the direct coupling among two classes (CoupD),
the transitive coupling among two classes (CoupT) and the total coupling of a
software system (WTCoup).
270 An interesting approach is the one proposed by Aloysius and Arockiam,
where a comprehensive coupling metric, CWCBO (Cognitive Weighted Coupling
Between Objects), is defined to give an overall measure of different degrees of
coupling [43]. This metric considers different kinds of coupling measures such
as data coupling, control coupling, global coupling and interface coupling and
275 applies to them a weighting factor. Using a comparative study, the authors
supported their claim that CWCBO is a better indicator than CBO to measure
the complexity of a class since it takes into consideration different coupling
levels.
280 Dynamic coupling rules were introduced to address problems left not com-
pletely answered by previous static coupling measures: e.g., dynamic binding
and polymorphism [10]. In fact, these metrics lose precision when dealing with
intensive use of inheritance and dynamic binding. Furthermore, they aim to
evaluate software quality looking not only at the source code complexity, but
285 also at its operational environment [44]. Further research confirmed that these
metrics provide additional information to the structural metrics [45]. Dynamic
coupling approaches can be further divided according to the coupling direction,
import or export coupling, and their mapping level, object or class-level ori-
ented [46]. Coupling direction captures the difference between a sending entity
290 and a receiving entity [46, 10]. Considering the messages exchanged between
entities, the distinction is:
16
The mapping level reflects the applicability domain of dynamic coupling rules:
295 object-level or class-level coupling. Moreover, Arisholm et al. proposed three
different approaches to evaluate the strength of a coupling relation: the number
of messages, the number of distinct method invocations and the number of dis-
tinct classes. The first one refers to the quantity of distinct messages exchanged
between two entities. The other two represent the amount of methods called
300 and classes used, respectively, by a method in an object. The classification of
these metrics, as given by Arisholm [46], is summarized in Table 5.
The direction of coupling was taken into account also by Mitchell and Power:
their idea was to expand the previously defined CBO metric [44]. The authors
presented two new coupling relations, both divided to account for internal and
305 external coupling. The first one, Run-time coupling between objects (R) (ex-
ternal or internal) counts the number of accesses made by/to a class divided
by the total number of accesses. The second one, run-time import (or export)
degree of coupling (RD), gives the strength of the coupling relation computed
17
as the number of classes that access (or are accessed by) a selected class. In
310 further research, Mitchell and Power, in their attempt to verify if CBO can be
used efficaciously as a dynamic metric, defined two new coupling measures [47]:
Run-time Coupling Between Objects (RCBO) counts the amount of classes that
a specific class accesses at run-time. The second one, the Number of object class
clusters (Noc), counts the number of clusters obtained considering a class in the
315 system and studying the distribution of unique accesses per object.
Work at object-level was also done by Yacoub et al. [48]. The authors pro-
posed two dynamic coupling metrics that operate on the export and import
side, respectively. The former one, Export Object Coupling (EOC) measures
the percentage of messages sent from an object to the other, compared with the
320 total amount of messages exchanged in the complete execution. Import Object
Coupling (IOC) works in the opposite way, reflecting the number of messages
that an object receives from another. From EOC, Yacoub et al. defined OQFS
(Object reQuest For Service) as the sum of the EOC among a selected object
and all the other objects in the design. IOC was instead developed into OPFS
325 (Object resPonse For Service), defined as the sum of IOC between the given ob-
ject and all the other objects in the application during the execution of a specific
scenario. These values affect the maintainability, understandability, reusability
and the errors distribution in the code. Zaidman and Demeyer refined OQFS to
work at class-level, introducing CQFS (Class reQuest For Service) [49]. CQFS
330 counts all the methods that a given class calls during the application execution.
Every method is counted once: calling the same method more than one time
does not increase the count.
Hassoun et al. propose a general relation, called DCM (Dynamic Coupling
Metric) to formalize the idea of dynamic coupling [50]. Their metric works at
335 object-level and it can be used to analyze the coupling of a selected object or a
system during the program execution.
Dynamic coupling metrics require analysis conducted at run-time, but the
impact of the metrics is higher if they are computed at early stages of the
development. To address this issue, pseudo-dynamic coupling metrics were pro-
18
340 posed: static metrics that consider the expected usage profile (derived from
UML graphs during the design phase) [51]. Referring to Chidamber and Ke-
merer’s CBO, the pseudo-dynamic CBO metric was defined as the value of the
static CBO multiplied by the value of the operational profile. It presents a
strong correlation with the dynamic CBO metric. A similar static approach
345 to compute dynamic metrics has been proposed by Liu and Milanova [52]. A
different approach calculates dynamic metrics from the system use case maps
and the interactions between different scenarios [53].
An interesting evolution of the metrics defined by Arisholm [46] has been
introduced by Abualese et al. to evaluate the importance of a class in the un-
350 derstanding process that a developer has to face when approaching code written
by a different person [54].
Classes can not only be structurally related to each other but also conceptu-
ally. Based on this idea, semantic coupling uses information from comments and
355 identifiers to identify relations among software entities [11]. The technique pro-
posed by Poshyvanyk and Marcus relies on Latent Semantic Indexing (LSI) [55]:
a machine learning model developed to analyze relations between words and
documents. To investigate coupling aspects left unaddressed by the previous
metrics, the authors created four progressive coupling relations, each of them
360 based on the previous one: CCM (Conceptual Coupling Between Methods),
CCMC (Conceptual Coupling Between a Method and a Class), CCBC (Con-
ceptual Coupling Between two Classes), also called CSBC (Conceptual Similar-
ity Between two Classes) and CoCC (Conceptual Coupling of a Class) [11, 17].
Poshyvanyk and Marcus also considered the idea to exclude weak coupling links
365 in the computation of the metrics defining a new metric called CSMCm . From
it, they also recomputed CSBC and CoCC accordingly, producing the two new
metrics CSBCm and CoCCm . Újházi et al. have further improved this approach
with a new metric called CCBO (Conceptual Coupling Between Object classes),
which does not merely take the maximum but identifies a threshold to distin-
19
370 guish between a strong and weak semantic coupling [56].
All the aforementioned semantic coupling measures use LSI to create an
initial semantic corpus for the analysis. Gethers and Poshyvanyk proposed
a coupling approach based on a different technique: Relational Topic Model
(RTM), a model that can find connections between documents based on the
375 context [57]. The authors introduced a measure called Relational Topic-based
Coupling (RTC). This metric individuates new aspects of coupling between
classes compared to the metrics based on LSI, such as CoCC. Furthermore, a
fundamental benefit of this model is that it does not need any previous knowl-
edge about the links between classes.
380 Revelle et al. extended semantic coupling relations to work at feature level,
aiming to identify which parts of a system are linked to a specific function [59,
58]. In fact, a feature represents the implementation of a functionality de-
scribed in the requirements. Since features can be represented by structured
information (source code and related artifacts) and unstructured information
385 (textual information), two different metrics were proposed: SFC (Structural
Feature Coupling) and TFC (Textual Feature Coupling). Furthermore, the
authors introduced HFC (Hybrid Feature Coupling) to consider together the
complementary information captured by SFC and TFC.
Semantic coupling has been combined with evolutionary coupling [60] or
390 domain-based relations [61]. Domain-based coupling individuates relations among
domain variables, functions and User Interface Components (UIC) [62, 63] and
has been applied to fields such as code clone detection with promising re-
sults [64]. Gethers et al. defined CSE (Conceptual Similarity between Enti-
ties) and CSED (Conceptual Similarity between two UICs) to perform impact
395 analysis in hybrid software systems [61]. Moreover, semantic and domain-based
coupling relations have been checked to assure their orthogonality. This analysis
confirmed that these relations capture different aspects of the analyzed system
and, therefore, they can be efficaciously combined. Based on CBE, Kagdi et al.
defined CSEMC and CSEBC [65]. Furthermore, semantic coupling has been
400 combined with structural coupling to create a metric that takes into account
20
both aspects at the same time [66]. The authors defined four coupling met-
rics, each of them based on the previous one (in a fashion similar to the one
used by Poshyvanyk et al. [17]): MPC (Method Pair Coupling), HCMC (Hybrid
Coupling between Method and a Class), HCCC (Hybrid Coupling between two
405 classes) and SSCM (Coupling of a class in an object-oriented system). Moreover,
they positively performed an evaluation to confirm that these metrics identify
aspects not covered by structural and semantic coupling relations alone.
21
(Exponentially Weighted Sum of Coupling) and LWSOC (Linearly Weighted
Sum of Coupling). They both emphasize recent changes over past ones, but the
latter penalizes them less than the former.
435 Outside this classification, other coupling relations have been proposed.
They are novel techniques, still too recent to be considered a proper subgroup
of metrics, or relations developed for specific domains.
A first novel relation is interaction coupling. Interaction coupling aims to
group artifacts that are likely to implement the same task. Zou et al. [71] worked
440 on the task interaction history, defining the strength of the relation between two
entities as the number of times they are accessed together. Although interac-
tion coupling may be considered similar to logical coupling, the former requires
information from the task interaction histories and involves not only artifacts
that are changed together, but also entities that are viewed in the same por-
445 tion of time. Interaction coupling and logical coupling have been combined by
Bantelay et al. to predict future interactions [72].
The usefulness of general coupling relations led the researchers to tailor them
to domain-specific applications: e.g., knowledge-based systems. Kramer and
Kaindl proposed the Degree of Coupling of Frame (DCpF) metric to measure
450 the number of slots in a frame connected to other slots in different frames by
a rule [73]. Coupling measures have also been developed for Web Ontology
Language to evaluate the complexity of the system [74]. Table 6 summarizes
the metrics proposed for this application. Furthermore, coupling metrics have
been modified to be applied to Agent-oriented software development. Jordan
455 and Collier proposed a reformulation of the CBO metric as coupling between
abstractions, defining Coupling Between Elements (CBE) [75]: two elements
are coupled if any direct dependencies exist between any of their parts. If an
element accesses or modifies the implementation details of another one, this
leads to a dependency.
22
Table 6: Web Ontology coupling metrics
Metric Description Ref
NEC (Number of external Number of other classes outside [74]
classes) the selected ontology
REC (References to External Counts the number of references [74]
Classes) to external classes considering a
selected ontology
RI (Referenced Includes) Computes the number of [74]
includes used in an ontology
CBE-in (Coupling Between Considers the class to be in the [76, 77]
Entities) property domain
CBE-out (Coupling Between Considers the class to be in the [76, 77]
Entities) property range
SC (Self-Coupling) Captures the properties with a [76, 77]
class contemporary in the
property range and domain
23
460 Coupling relations have also been adapted for Aspect-Oriented (AO) soft-
ware, where the basic entities are aspects and classes, to assess its reusability
and maintainability [78]. Sant’Anna et al. [78] and Ceccato and Tonella [79] (fur-
ther improved by Shen and Zhao [80] with the addition of other seven metrics)
proposed an initial set of metrics to measure aspect-oriented coupling relations.
465 An example is CBC (Coupling Between Components) [78], a general measure
of coupling that accounts for different relations between classes and aspects in
AO programs. However, these metrics have been criticized by the software
engineering community for not taking into account finer dimensions of class-
aspect coupling and their lack of empirical validation. Moreover, their adoption
470 was disregarded by the software developers [81]. For this reason, Burrows et al.
aimed to asses the quality of these metrics and, if necessary, how they might
be improved. The authors defined a new AOP coupling measure called Base-
Aspect Coupling (BAC) that quantifies the strength of the link between the
base and the aspect code. In the same year, Bernardi and Lucca proposed a
475 further set of coupling metrics based on their classification of aspects’ interac-
tions [82]. They proposed a metric for coupling due to interactions altering the
static structure (CLSS), to interactions altering the control flow (CLCF) and to
interactions altering the state of an object (CLSO). Finally, they considered all
these interactions together in the metric CLA (Coupling Level of an Aspect).
480 New metrics were proposed by Bennett and Mitropoulos to address the prob-
lem of aspect interference [83]: an aspect that causes unexpected changes to
the flow of a class or a method. The authors argued that previously proposed
AO coupling metrics did not cover all the interaction necessary to describe
potential aspect interference. To solve this issue, two new metrics were intro-
485 duced: IP (Interference Potential) and ICP (Interference Causality Potential).
Furthermore, these two metrics have been combined in a new one, TIP (Total
Interference Potential) [84]. At the same time, attempts have been made to
create a comprehensive framework, independent from the language considered,
to define AO coupling measures [85, 86, 87].
490 Moreover, specific coupling metrics have also been developed for Service-
24
Oriented Architectures (SOA) [88, 89, 90, 91, 92, 93, 94, 95]. A SOA is an ar-
chitectural model to combine different services in one platform. It can be formed
by a combination of technologies, products, APIs and various other components
and is not related to a particular programming language [96]. Among the metrics
495 proposed, we report ASSD (Average Service State Dependency), ASPD (Aver-
age Service Persistent Dependency), ARSD (Average Required Service Depen-
dency) [88], SOCI (Service Operational Coupling Index), ISCI (Inter-Service
Coupling Index) [89] and ASOU (Average Service Operation Coupling) [93].
ASSD and ASPD compute the average of the services’ states and persistent state
500 dependencies, respectively. A persistent state dependency happens between ser-
vices that share a state, which all of them can use and update. Finally, ARSD
measures the average number of services to which each service in the system pro-
vides its functionalities. SOCI (Service Operational Coupling Index) and ISCI
(Inter-Service Coupling Index) measure the dependence of a service on other
505 services and on messages, respectively. The former was adapted by the object-
oriented metric RFC, the latter from the CBO metric. ISCI can be considered
as the opposite of ARSD [88]. To measure the dependency based on messages, a
new metric was formulated: SMCI (Service Message Coupling Index). Even if it
may seem to have a dynamic nature, it is computed statically from the informa-
510 tion model of the domain. Finally, ASOU computes the coupling of a service as
the sum of its synchronous and asynchronous invocations divided by the total
number of services in the domain. Karhikeyan and Geetha identified five types
of dependencies that influence the coupling of a Service-Oriented system: di-
rect, indirect, state, IO and delayed message dependency [94]. They developed
515 a metric for each of them and proposed a fuzzy model to evaluate the overall
coupling of a system. Pautasso and Wilde proposed a framework to evaluate
coupling in Service-Oriented design, with a specific focus on Web technologies
[97]. They defined 12 coupling directions (or facets) to assess different design
aspects, giving an instrument for comparing different Web services options.
520 The discussed coupling metrics for SOA are all static. Based on the promis-
ing results obtained by dynamic coupling in object-oriented systems, Quynh and
25
Thang introduced a set of dynamic metrics for Service-Oriented systems [91]:
CBS (Coupling Between Services), which has been derived from CBO, IMS (In-
stability Metric for Service), DC2S (Degree of Coupling between 2 Services) and
525 DCSS (Degree of Coupling within a given Set of Services).
Semantic coupling relations have also been further developed to deal with
Service-Oriented Architecture (SOA). New metrics needed to be created since
the ones proposed by Poshyvanyk et al. [17] could not be applied in this domain:
comments and identifier names are not accessible for services and, furthermore,
530 the required concepts can also be obtained using business level artifacts [98].
For these reasons, Kazemi et al. developed three coupling metrics [98]: CCO
(Conceptual Coupling between Operations), CDSO (Conceptual Dependency of
a Service to an Operation) and CCS (Conceptual Coupling of a Service).
An interesting application of coupling measures is to assess the information
535 security of object-oriented designs [99]. To this purpose, a new metric CCC
(Critical Classes Coupling) has been defined. CCC computes the degree of in-
terconnection among classes and classified attributes in a given software design.
Moreover, it is based on design graphs (e.g., UML). However, to extract security
information these graphs need to be annotated using tools such as UMLsec [100]
540 or SPARK’s annotations [101].
Finally, coupling measures have been defined for Computational Science and
Engineering (CSE) applications [102] and real-time application design [103]. In
the context of real-time application design, Ahmed and Shoaib defined a set of
metrics (e.g., MEF, Message Exchange Factor) to evaluate the system in its early
545 development phases [103]. Kamble et al. investigated coupling in Computational
Science and Engineering (CSE) software [102] to perform software integration.
They claimed that this domain is different from others due to the complex
algorithms and functions involved.
26
5. RQ2: Developed tools
550 Different tools have been proposed to extract the measures discussed in
Section 4. Based on the previous classification, the aim is to identify how they
work, the information that they require and their advantages and disadvantages.
Table 7 shows a summary of the tools that we have considered divided based
on the kind of metrics that they extract (structural, dynamic, semantic, logical
555 coupling or relations belonging to smaller groups). For each tool its input and
output are reported, together with its limitations: mainly its restriction to a
particular programming language (or set of languages).
Some tools are stand-alone kits that simply extract a set of metrics: e.g.,
CCMETRICS [105]. However, during our analysis, two trends emerged clearly:
560 the use of visualization techniques to improve users’ understanding and the focus
on extensibility. Moreover, in tools developed for dynamic coupling metrics, due
to the significant amount of data that needs to be analyzed, researchers focused
on scalability to improve the tools’ performance.
27
Table 7: Coupling Tools Analyzed
Coupling Tool Input Output Limitations Ref
Structural coupling ckjm Java files or JAR files CBO (Coupling Between Objects) Restricted to Java applications [104]
RFC (Response For a Class) and Ca (Afferent coupling)
CCMETRICS Source code DAC (Data Abstraction Coupling) Restricted to object-oriented [105]
MPC (Message Passing Coupling) languages
AMT Source code CBO, CBO0 , RFC, MPC, DAC and DAC0 Restricted to Java and C# [107]
(At the time on which
Kayarvizhy and Kanmani published)
WebMetrics Source code CBO and RFC Supports C, C++, Java and Smalltalk [108] [109] [110]
Fan-in and Fan-out
DependencyViewer Java files or Ca (afferent coupling) and Ce (efferent coupling) Limited to Java applications [111]
JAR archives
OOMeter Source code (Java or C#) CBO (Coupling Between Objects) Restricted to Java and C# [112]
or UML diagrams (in XMI) (can be exported in XML, Microsoft Excel, html etc.) Only supports UML in XMI format
CLUSTERCHANGES CodeFlow changeset Clusters of diff-regions (visualized a tree graph) Restricted to C# [113]
SCPA UMLsec or SPARK graphs CCC Specific for assessing security [114]
(generated with the tool) (using UMLsec or SPARK’s annotations)
GMN tool UML diagrams (in XMI format) DAC, DAC0 [115]
Briand et al.’s metric suite [16]
NASS and DCC
AEA tool Java source code NOC, DIT Restricted to Java [116]
JMCT Java source files CBO, RFC (refer to table in [117]) Restricted to Java [117]
JCAT Java source files PCC, ECC, GCC, ICC Restricted to Java [118]
Indirect Coupling Eclipse IDE use-def indirect coupling Eclipse plug-in [38]
Detector
Dynamic coupling JDissect Running Java program Dynamic coupling measures [10] Restricted to Java [10]
SSS tool6 Running Java program Total Dynamic Messages (TDM) Restricted to Java applications [120]
Distinct Class Couples (DCC)
Distinct Method Couples (DMC)
DMA Jar files EC_CC, EC_CM and EC_CD Restricted to Java applications [121]
IC_CC, IC_CM and IC_CD
DynaMetrics Running program Set of static and dynamic measures [122] Restricted to Java/C++ [122]
Semantic coupling IRC2 M Source code CoCC and CoCCm Restricted to C++ programs [11]
CSBC and CSBCm
Logical coupling ROSE CVS data Locations for further changes [123]
Warnings about probable missing changes
YMNC tool CVS data List of files changed together with the selected one [127]
Hanakawa’s tool Java source code Module coupling measure Module coupling is [128]
and CVS data Logical coupling measure restricted to Java
(graphic visualization of them)
Other couplings OWL-VisMod Ontologies code Graphical visualization of Restricted to OWL language [129]
CBE-in and CBE-out relations
AJATO Source code and CBC (Coupling Between Components) Restricted to Aspect-Oriented [130] [131]
Concern map (XML) and Design Warnings applications
Rules (XML)
AJMetrics AspectJ files and Java files CAM, CAA, CAI and Restricted to Aspect-Oriented [80] [132]
CAE, CIM, CFA software
and a suite of structural coupling metrics
CT tool AspectJ source code CAE, CIM, CMC, CFA Restricted to AspectJ [79]
SSP tool UML diagrams SOCI, ISCI and SMCI Restricted to SOA [89]
28
only supports Java and C#. A similar approach has also been implemented in
WebMetrics [108]. The tool implements an architecture that includes an inter-
580 mediate level of abstraction between the code and the metrics computation: the
code is processed to extract a list of relations, which are analyzed in a second
step to compute the desired metrics. This allows an easier implementation of
new measures in the tool since the developer does not need to know how the
parser operates, but only the generated intermediate relations.
585
6 When the tool’s name is not explicitly stated in the referenced research, we will call it
with the initial letters of the authors’ surnames
29
JCTIViz [119] (2008) uses a polymetric view to display software metrics. Each
class or interface is represented with a node: the dimensions of the node (height,
width and depth) represents the value of a metric. In particular, the node depth
represents the CBO value. A different approach considers the creation of tools
610 as plug-ins for existing IDEs. EPOSpix [134] exploits this idea showing related
classes in Eclipse with a pixel map. eROSE [135] is an Eclipse plug-in that
computes logical coupling to suggest related changes to the developer.
Visualization techniques have been applied also by Garcia et al. to coupling
relations among OWL ontologies [76, 129]. Their tool, OWL-VisMod, requires
615 as input the ontology’s code and it shows the coupling CBE-in/out relations
among the classes. Classes are displayed using a radial layout, where the selected
class occupies the center. On the right and left side are displayed the classes
coupled by a CBE-out or a CBE-in relation, respectively. An edge link couples
classes and its color indicates the direction of the coupling relation.
620
30
Extracting a significant amount of data from the execution of a program
may require a vast amount of time and resources. To mitigate this problem, in
2015 Sarvari et al. proposed to parallelize this process using Hadoop MapRe-
640 duce [120]. Hadoop MapReduce needs the XML file of the program to be exe-
cuted. For this reason, the authors utilized JP2 [137]: an open source tool that
creates CTT XML files from a running Java program. Furthermore, Hadoop
MapReduce can be used both locally and on the cloud: a cloud-based approach
further helps in dealing with large quantities of data. For this reason, in 2017
645 Dogra et al. [121] proposed DMA (Dynamic Metric Analysis), a tool based on
Platform as a Service (PaaS). Like Sarvari et al.’s tool, DMA relies on JP2
but adapts it to be streamed to the cloud. In this way, it allows the user to
have a real-time analysis of the coupling metrics during the program execution.
Sarvari et al.’s tool returns three dynamic coupling measures: TDM (Total Dy-
650 namic Messages), DCC (Distinct Class Coupling) and DMC (Distinct Method
Couples). The authors introduced this nomenclature for the first time in the
software engineering research field. However, these metrics are the same as the
ones developed earlier by Arisholm et al. [10]: TDM corresponds to IC_CD (or
EC_CD, depending on the considered direction of the relation), DCC is equal
655 to IC_CC (or EC_CC) and DMC is the same as IC_CM (or EC_CM).
Another approach is to collect dynamic coupling data from the UML dia-
grams of the program [46]. On the one hand, since these diagrams are usually
done in the early design phase, the main advantage of this approach resides in
the possibility of using dynamic relations to take design decisions. On the other
660 hand, the coupling measures collected tend to be underestimated due to the im-
possibility to distinguish the different messages in the set of possible messages
in the system using UML. Unfortunately, our systematic review did not find
any examples of tools that implemented this approach to extract dynamic met-
rics. Tools such as OOMeter [112] and the tool proposed by Girgis et al. [115]
665 extract coupling metrics from design diagrams, but they are restricted to struc-
31
Table 8: Coupling Metrics Summary
Coupling group Metric Tool(s) Metric Ref Tool ref
Dynamic coupling IC and EC7 DMA, JDissect [46] [10] [143] [121], [10]
R, RD no tool [44]
RCBO DynaMetrics [47] [122]
Noc no tool [47]
EOC, IOC, OQFS, OPFS DynaMetrics [48] [122]
CQFS DynaMetrics [49] [122]
DCM no tool [50] [144]
TDM, DCC, DMC SSS tool [120] [120]
EUC, EIUC no tool [54]
ICV no tool [53]
Logical coupling LC ROSE, Evolution Radar, YMNC tool and Hanakawa’s tool [67] [67] [7] [123], [124] [125], [127], [128]
CC, TC no tool [7]
IC no tool [7] [71]
NOCC, SOC, EWSOC, LWSOC no tool [70]
32
Table 9: Other Coupling Metrics Summary
Applicability field Metric Tool(s) Metric Ref Tool ref
tural metrics.
6. Discussion
A vast quantity of coupling metrics and relations has been proposed for
different paradigms and applications, starting with procedural languages and,
670 later, object-oriented ones. Due to their importance in assessing the software
quality and analyzing programs’ features, coupling relations were proposed to
investigate aspects left uncovered by previous research and to be applied to
specific application domains.
Our research showed how CBO (Coupling Between Objects), proposed by
675 Chidamber and Kemerer as part of their metrics suite [25], became a funda-
mental coupling metric used as base for further metrics and refinements by
other researchers: examples can be found in CBO0 [28], CWCBO [43] and CBE
(Coupling Between Elements) [75]. Moreover, our investigation revealed that
sometimes the researchers encountered difficulties in retrieving previously pro-
680 posed metrics. Analyzing the material collected in our review, we noticed incon-
33
sistencies in the metrics names: e.g., afferent and efferent coupling have been
proposed as Ca and Ce by Martin [30], but later referred by Singh and Singh
[122] as AFC and EC. This is only a formal issue, but different nomenclatures
for referring to the same metric may undermine the coherence of the research
685 corpus in this field. The problem of formally defining the metrics and validate
them led to the creation of many frameworks: e.g., the one defined by Tempero
and Ralph [146].
Software metrics should undergo a theoretical and empirical validation when
they are introduced. Our investigation revealed that coupling metrics are eval-
690 uated referring to the properties defined by Kitchenham et al. [147], Weyuker
[148] and Briand et al. [28]. Metrics such as CTA and CTM [34], CWCBO
[43] and CCBC [11] have been validated using this process. However, we no-
ticed that a vast number of metrics have been proposed without undergoing
a theoretical evaluation: for instance, based on properties like Representation
695 condition [147]. Many studies performed only an empirical evaluation. Using
a set of test cases, the goal of the studies was to assess that the newly pro-
posed metric achieves better performance than a previous one as an indicator
for a specific application: e.g., fault prediction. Moreover, a common trend
is to apply correlation analysis techniques (Spearman correlation or Principal
700 Component Analysis) to verify the orthogonality of a new metric compared to
previously presented ones. More emphasis has been given by the researchers on
this second aspect of the evaluation. The theoretical evaluation does not seem
to be considered as fundamental as the empirical one since the latter contributes
to highlight the novelty of the metric. Thus, we suggest novel metrics to employ
705 both a theoretical and empirical validation/correlation analysis.
Table 8 shows a summary of the metrics retrieved in our systematic litera-
ture review. They are grouped based on the category of coupling relations to
which they belong. Furthermore, they are associated with the tools that can be
used to extract them (if any). While for the structural, dynamic and semantic
710 coupling relations a set of metrics has been defined, for the logical coupling re-
lations no strict metric definitions seem to exist. In the table, we referred to the
34
classification given by Robbes et al. [7], but their definitions allow different in-
terpretations of the same metric. Further efforts should be devoted to provide
a consistent formal definition of logical coupling metrics. Table 9 contains an
715 overview of the metrics belonging to the Other coupling approaches group. They
are grouped based on the field of applicability (e.g., Aspect-Oriented software).
As in the previous table, the tools that can be used to extract them (if retrieved
in our systematic review) are reported.
Our analysis of the coupling metric tools proposed by the researchers re-
720 vealed two interesting trends: the progressive use of visualization techniques as
a means to show the information to the user and the focus on making easily ex-
tendible tools. Visualization techniques, used in tools such as Evolution Radar
[125] or OWL-VisMod [129], help the user to have a better understanding of
the considered software properties. Usually, this approach allows changing the
725 considered entity interactively. D’Ambros et al. stated that the idea of recur-
ring to visualization is based on the following motives: “it provides effective
ways to break down the complexity of information” and “it has been shown to
be a successful means to study the evolution of software systems” [125]. As the
second trend, easily expandable tools want to overcome the problem of having
730 metric tools that work only on a specific programming language (or groups of
languages). Researchers proposed modular designs in which new metrics can be
implemented without the need to understand the whole tool implementation.
Examples can be found in tools such as AMT [107] and WebMetrics [108].
Tahir and MacDonell stated that dynamic metrics could be collected using
735 a run-time analysis or executable modules and interaction diagrams (UML or
ROOM) [136]. Although both of these approaches have been analyzed in the
literature, in our review we did not find any tool that implemented a methodol-
ogy based on interaction graphs. This could be caused by the lack of precision
that dynamic coupling metrics computed during the design phase are likely to
740 have, which may have discouraged further research attempts in this direction.
However, it is also necessary to highlight that this may be caused by the lim-
ited scope of our review, as given by our procedure and especially the choice to
35
restrict the analysis to academic-developed tools. Also the semantic coupling
area suffers from a lack of tools to extract its correlated metrics: IRC2 M [17]
745 and FLAT3 [58] are the only ones retrieved in our systematic review. This can
be explained by the fact that semantic coupling relations have been investigated
only by a restricted group of researchers.
Coupling relations can be used to cluster related code changes, helping devel-
opers in the process of reviewing and modifying their software. Logical coupling
750 is particularly suited for this task, due to its intrinsic nature: logical coupling
relations were introduced to find similar change patterns in the code release his-
tory [67]. An example can be found in ROSE [123], which gives suggestions to
the user regarding which portions of code are likely to have to be changed with
the current one. However, also structural or semantic coupling relations can be
755 effectively used with this intent. CLUSTERCHANGES [113] uses data coupling
to cluster code diff-regions that influence each other and, therefore, should be
inspected together when modifying one of them. On the contrary, we argue
that dynamic coupling metrics are unsuitable for this task since they reflect
run-time relations among software elements which can not be easily collected
760 when dealing with code changes. An interesting way to approach the problem
of grouping related code changes is given by the evolutionary coupling relations
proposed by Zou et al. [71]. Information on which entities have been accessed
together during the development phase may constitute a sound basis on which
grouping together portions of code: in fact, these are likely to implement the
765 same functionality.
36
roadmap for further research in the field.
Applications. There are plenty of opportunities to use coupling metrics
to support other software maintenance and evolution tasks. For instance, their
775 use in the context of code review may represent an effective method to improve
the way developers detect defective source code. Specifically, change-based code
review constitutes an important trend in software development and improving
the existing techniques may lead to a significant contribution to software en-
gineering [149, 150, 151]. Coupling relations may be applied to analyze the
780 code contained in different changes and, consequently, cluster similar changes
together. Baum et al. proposed an ordering theory for code changes based on the
relations that they share with each other [149]. In particular, they conducted a
survey among developers to evaluate which relations were considered important.
Among all of them, they mentioned the similarity relation. We argue that logi-
785 cal and semantic coupling relations may be applied as practical implementation
of this relation. Still in the context of code review, coupling metrics might be
exploited in conjunction with just-in-time defect prediction [152]: we envision
the introduction of coupling-related information on top of the recommendations
provided by defect prediction models, so that developers might be informed on
790 the classes having relations with a defective file and possibly assess the risk of
defect propagation over these classes.
Another promising research field in Software Engineering is Code Smell de-
tection [153, 154, 155]. Recent works started to exploit it by using machine
learning techniques [156, 157] and to classify the severity of a code smell issue
795 [158]. While some structural and logical coupling metrics have already been
used as features of these models, there is still room for improvement: as shown
by our survey, the role of many complementary coupling metrics can be explored
to improve the (not always good [159]) performance of currently available code
smell prediction models. Still in the same area, the application of conceptual
800 coupling metrics have been explored by Palomba et al. [160, 161]. The authors
also suggested that the exploration of a combination between structural and
conceptual metrics may lead to promising results. This is something that is still
37
unknown and that might lead to new research directions on how to combine
the output of different metrics. At the same time, it remains unclear what is
805 the value of other coupling metrics in the context of code smell detection: for
example, to the best of our knowledge, implications of using dynamic coupling
metrics to detect code smells are still to be evaluated. This seems to be a natu-
ral fit for the identification of Message Chain instances [162], given its intrinsic
dynamic nature: in fact, it occurs when a long chain of method invocations is
810 required for the operations of a class [163].
Finally, coupling relations have found a major field of application in Change
Prediction, a research area dealing with identifying the classes that are more
prone to be modified in the future [164]. Most works rely on the use of struc-
tural coupling metrics (among others) as indicators of these classes [165]. A
815 recent study conducted by Elish and Al-Rahman Al-Khiaty evaluates a set of
evolution metrics for change prediction purposes [166]. The authors reported
that these metrics measure different dimensions than the classical Chidamber
and Kemerer’s metrics suite [25] and that their combination improved the ac-
curacy of their prediction model. Based on the promising results of their work,
820 we argue that the application of logical coupling or conceptual coupling metrics
to this context may be worthy. This metric may be combined with structural
or dynamic ones and tested to see if the performance of a model that takes into
account these different aspects increases: we expect so from the moment that
recent studies [164, 167] showed how an improved description of the change pre-
825 diction phenomenon, done through the addition of orthogonal information, can
dramatically increase the overall ability of prediction models in discriminating
the classes that are more likely to change in the future.
Coupling relations and metrics have been applied in many different contexts,
of which the ones cited above (e.g., code review, code smells detection or change
830 prediction) constitute just a small part. Depending on the application consid-
ered, combining two or more groups of coupling metrics may be worthwhile: the
existing techniques could increase their performance. An example may be found
in the research conducted by Palomba et al. to identify code smells with concep-
38
tual coupling metrics, where the authors argue that the possible combination
835 of these metrics with others belonging to different groups (e.g., structural or
conceptual) may lead to a further performance increase [160].
8. Conclusion
860 This work presented a systematic review of the coupling relations and metrics
proposed until now by the software engineering research community. In the
first part of our research, we analyzed the trends that emerged over time in
39
the software coupling area. We developed a taxonomy, as complete as possible
within the limitations of our approach, of these relations in the attempt to give
865 a systematic classification of over thirty years of research in the field. Based
on previous works, such as the one done by Bavota et al. [9], we divided the
coupling relations into four main groups: structural, dynamic, semantic and
logical. Furthermore, we included a fifth group of coupling metrics not listed
with the previous ones, since they constitute new trends still in development
870 or coupling metrics developed for a particular field of applicability (such as
knowledge-based systems or aspect-oriented applications).
In the second part of our investigation, we presented the tools developed
by the research community to extract (and sometimes even visualize) coupling
relations. The tools retrieved have been summarized in Table 7 maintaining the
875 structure used to answer our first research question: dividing the tools based on
the coupling group of metrics that they extract. For each tool, we highlighted
the input that it needs and the output that it produces, together with its possi-
ble limitations: e.g., a restriction to a particular programming language. More-
over, we analyzed three main trends noticed in the academic-proposed tools:
880 application of visualization techniques, extensibility, and scalability (applied to
dynamic coupling metrics). We proposed a discussion on our findings and a
roadmap for future work. The complexity of this research field sometimes led
to discrepancies among the introduced coupling metrics. As guidance for future
work we highlighted interesting applications of the presented coupling relations
885 and metrics (change clustering, code review, code smells detection and change
prediction), reporting the groups of coupling metrics already applied in these
fields together with the ones that are yet to be explored and that may constitute
the starting point for future work. Furthermore, we discussed the possibility to
combine existing coupling metrics to create ensemble metrics, able to combine
890 information from different sources.
40
Acknowledgments
41
- A. Nicolaescu, H. Lichter, Y. Xu, Evolution of Object Oriented Coupling
Metrics: A sampling of 25 years of research, IEEE/ACM 2nd International
920 Workshop on Software Architecture and Metrics (SAM) (2015) 48–54.
945 - S. Chidamber, C. Kemerer, A metrics suite for object oriented design, IEEE
Transactions on Software Engineering 20 (6) (1994) 476–493.
42
- M. Hitz, B. Montazeri, Measuring Coupling and Cohesion In Object –Ori-
ented Systems, Proceedings of International Symposium on Applied Corporate
Computing 35 (1995) 25–27.
43
- H. Li, A Novel Coupling Metric for Object-Oriented Software Systems, in:
2008 IEEE International Symposium on Knowledge Acquisition and Modeling
Workshop, 609–612, doi:10.1109/KAMW.2008.4810562, 2008.
44
- E. Arisholm, Dynamic coupling measures for object-oriented software, Pro-
ceeding of the 8th IEEE Symposium on Software Metrics (2002) 33–42.
-A. Zaidman, S. Demeyer, Analyzing large event traces with the help of
coupling metrics, in: Proceedings of the Fourth International Workshop on OO
Reengineering, 2004.
45
doi:10.1145/1188966.1188980, URL http://dx.doi.org/10.1145/1188966.1188980,
1035 2006.
46
- A. Aryani, I. Peake, M. Hamilton, Domain-based change propagation anal-
ysis: An enterprise system case study, IEEE International Conference on Soft-
1065 ware Maintenance (ICSM) (2010) 1–9.
47
- L. Zou, M. Godfrey, A. Hassan, Detecting Interaction Coupling from Task
Interaction Histories, 15th IEEE Internation Conference on Program Compre-
1095 hension, ICPC ’07 (2007) 135–144.
-A. Orme, H. Tao, L. Etzkorn, Coupling metrics for ontology –based system,
IEEE Software 23 (2006) 102–108.
48
- H. Shen, J. Zhao, An evaluation of coupling metrics for aspect-oriented
software, Tech. Rep., 2007.
49
- A. A. M. Elhag, R. Mohamad, Metrics for evaluating the quality of service
oriented design, in: 2014 8th. Malaysian Software Engineering Conference 1235
(MySEC), 154–159, doi:10.1109/MySec.2014.6986006, 2014.
50
- S. Kamble, X. Jin, N. Niu, M. Simon, A Novel Coupling Pattern in Com-
1180 putational Science and Engineering Software, in: 2017 IEEE/ACM 12th In-
ternational Workshop on Software Engineering for Science (SE4Science), 9–12,
doi:10.1109/SE4Science.2017.10, 2017.
1185 - D. Spinellis, Tool writing: a forgotten art? (software tools), IEEE Software
22 (4) (2005) 9–11.
51
- M. Scotto, A. Sillitti, G. Succi, T. Vernazza, A non-invasive approach
to product metrics collection, Journal of Systems Architecture 52 (11) (2006)
1210 668–675, agile Methodologies for Software Production.
52
Information Visualisation, ISSN 1550-6037, 575–581, 1335
doi:10.1109/IV.2008.96, 2008.
53
- N. Hanakawa, Visualization for Software Evolution Based on Logical Cou-
pling and Module Coupling, in: 14th Asia-Pacific Software Engineering 1365
Conference (APSEC’07), ISSN 1530-1362, 214–221,
doi:10.1109/ASPEC.2007.36, 2007.
54
- R. Harrison, S. Counsell, R. Nithi, Coupling metrics for object-oriented de-
sign, in: Proceedings Fifth International Software Metrics Symposium. Metrics
(Cat. No.98TB100262), 150–157, doi:10.1109/METRIC. 1998.731240, 1998.
- P. Joshi, R. K. Joshi, Microscopic coupling metrics for refactoring, in: Con-
1300 ference on Software Maintenance and Reengineering (CSMR’06), ISSN 1534–5351,
8 pp.–152, doi:10.1109/CSMR.2006.32, 2006.
55
1325 Testing, Verification and Validation Workshops, 566–571, 2011.
References
56
[6] N. Fenton, J. Bieman, Software Metrics: A rigorous and practical ap-
proach, CRC Press, 2014.
57
national Conference on Evaluation and Assessment in Software Engineer-
ing (EASE 14) (2014) 38:1–38:10.
[19] G. Myers, Reliable software through composite design, Mason and Lip-
scomb, 1975.
58
1573-1367, doi:10.1007/s11219-006-9010-3, URL https://doi.org/10.
1007/s11219-006-9010-3.
1410 [25] S. Chidamber, C. Kemerer, A metrics suite for object oriented design,
IEEE Transactions on Software Engineering 20 (6) (1994) 476 – 493.
1425 [31] F. Abreu, R. Esteves, M. Goula̋o, Toward the Design Quality Evaluation
of Object-Oriented Software, 1995.
1430 [33] Y. Lee, B. Liang, S. Wu, F. Wang, Measuring the Coupling and Cohesion
of an Object-Oriented Program Based On Information Flow, in: Proceed-
ings of the International Conference on Software Quality, 1995.
59
[34] W. Li, Another Metric Suite for Object-oriented Programming, Journal
of System and Software 44 (2) (1998) 155–162, ISSN 0164-1212.
1435 [35] J. Rilling, W. J. Meng, O. Ormandjieva, Context driven slicing based cou-
pling measures, in: 20th IEEE International Conference on Software Main-
tenance, 2004. Proceedings., ISSN 1063-6773, 532–, doi:10.1109/ICSM.
2004.1357874, 2004.
60
[42] G. Gui, P. D. Scott, New Coupling and Cohesion Metrics for Evaluation
of Software Component Reusability, in: 2008 The 9th International Con-
ference for Young Computer Scientists, 1181–1186, doi:10.1109/ICYCS.
2008.270, 2008.
[45] R. Geetika, P. Singh, Dynamic Coupling Metrics for Object Oriented Soft-
ware Systems: A Survey, SIGSOFT Softw. Eng. Notes 39 (2) (2014) 1–
8, ISSN 0163-5948, doi:10.1145/2579281.2579296, URL http://doi.acm.
1475 org/10.1145/2579281.2579296.
[49] A. Zaidman, S. Demeyer, Analyzing large event traces with the help of
coupling metrics, in: Proceedings of the Fourth International Workshop
1485 on OO Reengineering, 2004.
61
[51] R. Gunnalan, M. Shereshevsky, H. H. Ammar, Pseudo dynamic metrics
1490 [software metrics], in: The 3rd ACS/IEEE International Conference on-
Computer Systems and Applications, 2005., ISSN 2161-5322, 117–, doi:
10.1109/AICCSA.2005.1387106, 2005.
62
[58] M. Revelle, M. Gethers, D. Poshyvanyk, Using structural and textual
information to capture feature coupling in object-oriented software, Em-
pirical Software Engineering 16 (2011) 773–811.
63
1545 [66] M. Alenezi, K. Magel, Empirical Evaluation of a New Coupling Met-
ric: Combining Structural and Semantic Coupling, International Jour-
nal of Computers and Applications 36 (1) (2014) 34–44, doi:10.2316/
Journal.202.2014.1.202-3902, URL https://www.tandfonline.com/doi/
abs/10.2316/Journal.202.2014.1.202-3902.
[68] H. Gall, M. Jazayeri, J. Krajewski, CVS Release History Data For Detect-
ing Logical Couplings, Proceedings of the 6th International Workshop on
1555 Principles of Software Evolution (2003) 13–23.
64
systems using frames and rules, ACM Transactions on Software Engineer-
ing and Methodology 13 (2004) 332–358.
65
1600 [82] M. L. Bernardi, G. A. D. Lucca, A metric model for aspects’ coupling, in:
WETSoM, 2010.
1625 [90] A. A. M. Elhag, R. Mohamad, Metrics for evaluating the quality of service-
oriented design, in: 2014 8th. Malaysian Software Engineering Conference
(MySEC), 154–159, doi:10.1109/MySec.2014.6986006, 2014.
66
[91] P. Quynh, H. Thang, Dynamic Coupling Metrics for Service –Oriented
Software, International Journal of Computer, Electrical, Automation,
1630 Control and Information Engineering 3 (2009) 795 – 800.
[94] T. Karhikeyan, J. Geetha, A metrics suite and fuzzy model for measuring
coupling in Service Oriented Architecture, in: 2012 International Confer-
1640 ence on Recent Advances in Computing and Software Systems, 254–259,
doi:10.1109/RACSS.2012.6212677, 2012.
[96] T. Erl, SOA: Principles of Service Design, The Prentice Hall Service Tech-
nology Series from Thomas Erl, Pearson Education, ISBN 9780132715836,
2007.
67
Semantic Indexing, IEEE International Conference on Service Computing
(SCC) (2011) 504–511.
[101] J. Barnes, High Integrity Software: The SPARK Approach to Safety and
Security, Addison-Wesley Longman Publishing Co., Inc., Boston, MA,
1665 USA, ISBN 0321136160, 2003.
1670 [103] M. Ahmed, M. Shoaib, Novel Design Metrics to Measure Real Time En-
vironment Application Design, Journal of American Science 7 (2011) 222.
[104] D. Spinellis, Tool writing: a forgotten art? (software tools), IEEE Soft-
ware 22 (4) (2005) 9–11.
[105] S. Husein, A. Oxley, A Coupling and Cohesion Metrics Suite for Object-
1675 Oriented Software, in: Proceedings of the 2009 International Conference
on Computer Technology and Development - Volume 01, ICCTD ’09,
IEEE Computer Society, Washington, DC, USA, ISBN 978-0-7695-3892-1,
421–425, 2009.
68
[107] N. Kayarvizhy, S. Kanmani, An Automated Tool for Computing Object
Oriented Metrics Using XML, Springer Berlin Heidelberg, Berlin, Heidel-
1685 berg, 69–79, 2011.
69
[114] B. Alshammari, C. Fidge, D. Corney, An Automated Tool for Assessing
Security-Critical Designs and Programs, in: WIAR 2012; National Work-
shop on Information Assurance Research, 1–10, 2012.
[121] A. Dogra, H. Singh, P. Singh, Execution Trace Streaming Based Real Time
Collection of Dynamic Metrics Using PaaS, 8th Workshop on Emerging
Trends in Software Metrics (WETSoM) (2017) 43–48.
70
[122] P. Singh, H. Singh, DynaMetrics: a runtime metric-based analysis tool for
1740 object-oriented software systems, ACM SIGSOFT Software Engineering
Notes 33 (2008) 1–6.
1760 [128] N. Hanakawa, Visualization for Software Evolution Based on Logical Cou-
pling and Module Coupling, in: 14th Asia-Pacific Software Engineering
Conference (APSEC’07), ISSN 1530-1362, 214–221, doi:10.1109/ASPEC.
2007.36, 2007.
71
[130] E. Figueiredo, A. Garcia, C. Sant’Anna, U. Kulesza, C. Lucena, Assessing
aspect-oriented artifacts: Towards a tool-supported quantitative method,
in: Proc. of the 9th ECOOP Workshop on Quantitative Approaches in
OO Software, 2005.
72
[138] R. Harrison, S. Counsell, R. Nithi, Coupling metrics for object-oriented
design, in: Proceedings Fifth International Software Metrics Sympo-
1795 sium. Metrics (Cat. No.98TB100262), 150–157, doi:10.1109/METRIC.
1998.731240, 1998.
73
gineering Conference (APSEC’06), ISSN 1530-1362, 79–86, doi:10.1109/
APSEC.2006.3, 2006.
[146] E. Tempero, P. Ralph, A Model for Defining Coupling Metrics, in: 2016
23rd Asia-Pacific Software Engineering Conference (APSEC), ISSN 1530-
1825 1362, 145–152, doi:10.1109/APSEC.2016.030, 2016.
74
[154] F. Palomba, G. Bavota, M. Di Penta, R. Oliveto, D. Poshyvanyk,
1850 A. De Lucia, Mining version histories for detecting code smells, IEEE
Transactions on Software Engineering 41 (5) (2015) 462–489.
75
[163] F. Khomh, M. Di Penta, Y. Guéhéneuc, G. Antoniol, An exploratory
study of the impact of antipatterns on class –change and fault –prone-
ness, Empirical Software Engineering 17 (3) (2012) 243–275, ISSN 1573-
1880 7616, doi:10.1007/s10664-011-9171-y, URL https://doi.org/10.1007/
s10664-011-9171-y.
76
Appendix A. List of selected ScienceDirect Journals
• AASRI Procedia
• Computer Languages
• Data Processing
• Digital Investigation
• Environmental Software
• Euromicro Newsletter
• Information Systems
• Integration
77
• Intelligent Data Analysis
1930 • Microprocessors
• Network Security
• Performance Evaluation
• Robotics
• SoftwareX
78