20.01.2014 Views

thesis - Faculty of Information and Communication Technologies ...

thesis - Faculty of Information and Communication Technologies ...

thesis - Faculty of Information and Communication Technologies ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!