thesis - Faculty of Information and Communication Technologies ...
thesis - Faculty of Information and Communication Technologies ...
thesis - Faculty of Information and Communication Technologies ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Chapter 4. Measuring Evolving S<strong>of</strong>tware<br />
links from a class (the out-degree). As discussed in Section 4.2.2, these<br />
two measures are widely used in the literature as measures <strong>of</strong> structural<br />
complexity [21, 54, 55, 77, 117, 165, 209, 223, 287, 294, 299] since<br />
they naturally capture the number <strong>of</strong> classes a given class X depends<br />
upon <strong>and</strong> the number <strong>of</strong> classes that depend on X.<br />
For the purpose <strong>of</strong> measuring the dependencies we define two sets K<br />
<strong>and</strong> N. The first set, K is a finite non-empty set <strong>of</strong> all classes in the<br />
s<strong>of</strong>tware system <strong>and</strong> includes the classes from the core s<strong>of</strong>tware system,<br />
as well as classes that provide services (to classes in the core) but are in<br />
part <strong>of</strong> third-party libraries or the Java framework. The second set, N<br />
contains classes that are part <strong>of</strong> the core s<strong>of</strong>tware system such that N ⊂<br />
K. The distinction between these two sets is illustrated in Figure 4.6.<br />
The type dependency graph G T is an ordered pair < K, L >, where L<br />
is a finite, possibly empty, set <strong>of</strong> directed links between classes, such<br />
that, L ⊆ N × K. Our restriction <strong>of</strong> focusing on the core s<strong>of</strong>tware system<br />
(as discussed in Section 3.6.2) implies that we do not measure the<br />
dependencies between classes in the external libraries <strong>and</strong> hence we<br />
analyze only the set <strong>of</strong> links that are formed when classes within the<br />
set N depend on classes in the set K. For example, the dependency<br />
between classes A <strong>and</strong> B in Figure 4.6 is not part <strong>of</strong> the graph that we<br />
construct. Additionally, classes A <strong>and</strong> B in Figure 4.6 are also not in<br />
the set K.<br />
4.5.5 Dependency Metric Extraction<br />
Once the dependency graph has been constructed, we can analyze each<br />
node n ∈ N in the graph as well as the set <strong>of</strong> directed links l ∈ L for<br />
each node within the graph G T <strong>and</strong> measure the In-Degree Count l in (n),<br />
as well as the Out-Degree Count l out (n) it. More precisely,<br />
l in (n) = |{(n i , n) ∧ n i ∈ N ∧ n ̸= n i }| (4.5.1)<br />
84