Please cite this article in press as: W. Pan, et al., Analyzing the structure of Java software systems by weighted K -core decomposition, Future Generation Computer Systems
(2017), https://doi.org/10.1016/j.future.2017.09.039.
W. Pan et al. / Future Generation Computer Systems ( ) – 3
Fig. 1. A simple code segment (left) and its corresponding WCCN (right).
• Implements relation: If class c
1
realize interface c
2
via key-
word implements and vice versa.
• Parameter relation: If one of class c
1
’s methods has at least
one parameter with type of class c
2
and vice versa.
• Global variable relation: If class c
1
has at least one attribute
with type of class c
2
and vice versa.
• Method call relation: If one of class c
1
’s methods calls a
method on an object of class c
2
and vice versa.
• Local variable relation: If a local variable with type of class
c
2
is declared in one of class c
1
’s methods and vice versa.
• Return type relation: If one of class c
1
’s methods has the
return type class c
2
and vice versa.
The symmetric adjacency matrix ψ
ij
of WCCN encodes the cou-
pling between every pair of nodes, n
i
and n
j
:
ψ
ij
= ψ
ji
=
w
ij
(n
i
, n
j
) ∈ E
0 otherwise,
(1)
where w
ij
is the weight assigned to edge (n
i
, n
j
) ∈ E, quantifying
the coupling strength between the corresponding classes that node
n
i
and node n
j
denote.
Since the coupling frequency affects the coupling strength be-
tween classes [22], in the current work, we will use the cou-
pling frequencies between every pair of classes to calculate their
coupling strength. However, as mentioned in Definition 1, there
are many different types of coupling (total seven circumstances)
between classes, and a pair of classes, c
1
and c
2
, may have several
coupling types at the same time. For example, c
1
may have one
attribute of type c
2
, but at the same time it may also have a method
that calls a method on an object of class c
2
and a method with
return type class c
2
. So, when computing the coupling strength be-
tween every pair of classes c
i
and c
j
, we should sum up the coupling
frequencies of all the coupling types. The coupling frequency can
be resolved by simply counting their occurrences in the structural
information.
Fig. 1 gives a simple example to show the idea of the map-
ping from source code to WCCN. For illustration purpose, we take
w
Adoptor,Zoom
to show how to calculate the weight on the edge
Adoptor − Zoom. Since class Adoptor has an attribute myZoom
with type class Zoom one time, has a method setZoom with one
parameter newZoom of type class Zoom one time, and one method
say calling method say of myZoom with type Zoom, there is an edge
Adoptor − Zoom between Adoptor node and Zoom node in WCCN
with weight w
Adoptor,Zoom
= w
Zoom,Adoptor
= 3. Other edges in Fig.
1 can be similarly established. The notes beside the edge show the
coupling types, coupling frequencies between the two classes on
the two sides of the edge, and also the weights assigned to the edge.
3.2. The weighted k-core decomposition method
Garas et al. [17] propose a more general version of k-core
decomposition, denoted as W
k-core
, for weighted networks. Its ef-
fectiveness has been widely evaluated. In the current work, we will
use it to obtain the k-core structure of WCCNs.
W
k-core
generalizes the classical k-core decomposition method
(hereinafter referred to as U
k-core
) by introducing an alternative
measure for the node degree, called weighted degree, which takes
into consideration both the node degree and the weights on its
edges. The weighted degree of node i, k
i
w
, is defined as [17]
k
i
w
= [(k
i
)
α
(
k
i
j=1
w
ij
)
β
]
1
α+β
, (2)
where k
i
is the degree of node i and
k
i
j=1
w
ij
is the sum over all
the edge weight of node i. Integers α and β are the user-defined
weights, showing the preferences of the user. Here we only discuss
the case where α = β = 1 following the line of thought given in [17],