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 />
Abbv. Name Description<br />
IAS Is Abstract A flag that is set to 1, if class is abstract<br />
IEX Is Exception A flag that is set to 1 if class has<br />
java.lang.Throwable as an ancestor<br />
INF Is Interface A flag that is set to 1 if class is an interface<br />
IPI Is Private A flag that is set to 1 if class is private<br />
IPR Is Protected A flag that is set to 1 if class is protected<br />
IPU Is Public A flag that is set to 1 if class is public<br />
IPK Is Package<br />
Accessible<br />
A flag that is set to 1 if the class has no<br />
visibility modifier <strong>and</strong> hence would revert to<br />
having package visibility<br />
Table 4.4: Flags extracted for each class.<br />
Once information from all the classes is extracted, we remove classes<br />
that are from external libraries that are not part <strong>of</strong> the core s<strong>of</strong>tware<br />
system under study. Though, we ensure that the set <strong>of</strong> input JAR files<br />
used in the Jar Extraction step does not consist <strong>of</strong> any external libraries<br />
(see Section 4.5.1), this additional step was needed since some projects<br />
merged all external library code into their core JAR file in order to reduce<br />
the number <strong>of</strong> different files that needed to be distributed. We<br />
identify <strong>and</strong> removed the set <strong>of</strong> classes that are from external libraries<br />
using the same process that we applied during the Jar Extraction step<br />
(see Section 4.5.1).<br />
The Java programming language provides developers the option for creating<br />
two different types <strong>of</strong> abstractions: a class, <strong>and</strong> an interface [108].<br />
Within the context <strong>of</strong> our study, the key distinction between these two<br />
abstractions is that interfaces do not contain any method bodies <strong>and</strong><br />
hence the metrics defined in Table 4.3 are not available for compiled<br />
Java interfaces which do not contain bytecode instructions in the method<br />
section <strong>of</strong> a class file. However, all <strong>of</strong> the other information (see Table<br />
4.1) is available <strong>and</strong> therefore used to compute the metrics defined<br />
in Table 4.2 <strong>and</strong> Table 4.4. We are also able to extract dependency information<br />
from an interface, that is, other Java classes that an interface<br />
depends upon (discussed in Section 4.5.4). In the rest <strong>of</strong> this <strong>thesis</strong>, to<br />
improve readability, we use the term class to indicate a compiled Java<br />
class, <strong>and</strong> it may be either a Java interface or a Java class. We use<br />
81