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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Chapter 2. S<strong>of</strong>tware Evolution<br />

during the development <strong>of</strong> a specific release [25]. This is the analysis<br />

technique preferred by change based studies (as discussed in Section<br />

2.2). Though this approach is widely used in the literature [138],<br />

there are significant limitations to this method <strong>of</strong> detecting change. The<br />

transaction logs that are used as input for detecting change do not directly<br />

record the nature <strong>of</strong> change. Specifically, they do not record if the<br />

modification altered the functional semantics <strong>of</strong> the program, or if the<br />

change was purely cosmetic [80]. For instance, widely used source code<br />

control systems such as CVS <strong>and</strong> SVN record changes by string comparison<br />

between two text files <strong>and</strong> tend to identify the lines added, removed<br />

<strong>and</strong> modified. However, these tools do not check if the change impacts<br />

the actual semantics <strong>of</strong> the program. That is, these tools treat the<br />

following change actions identically – comment addition, source code<br />

reformatting, <strong>and</strong> removing a method from a class. This inability <strong>of</strong> the<br />

current generation <strong>of</strong> popular tools <strong>of</strong> recording the type <strong>of</strong> change is a<br />

significant limitation if a study purely relies on data generated by these<br />

tools to detect change. The limitation arises because changes to the<br />

functional aspects <strong>of</strong> a class have a greater impact in maintenance as<br />

they have the potential to impact other classes [281], <strong>and</strong> as a consequence<br />

have a higher risk pr<strong>of</strong>ile.<br />

The second approach to detecting change analyses the actual class (or a<br />

program file) at two different points in time in order to determine if it has<br />

changed. This approach, referred to as origin analysis in the literature<br />

[102,282] is comparatively more complex, but provides a more accurate<br />

reflection <strong>of</strong> the changes since there is no reliance on reconstructing<br />

change information by analysing an external transaction log. Detecting<br />

change between two releases <strong>of</strong> a class has been an area <strong>of</strong> study for<br />

many years [242,282] <strong>and</strong> different methods to assist in the detection <strong>of</strong><br />

the change have been developed [5,22,72,80,135,143,155,243,294]. In<br />

this <strong>thesis</strong>, we detect changes by analysing classes in two consecutive<br />

releases as it enables us to focus on changes to the functional aspects<br />

<strong>of</strong> a program. A more detailed discussion <strong>of</strong> these techniques, their<br />

strengths <strong>and</strong> limitations, as well as our own method for detecting the<br />

change is presented in Chapter 6.<br />

32

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

Saved successfully!

Ooh no, something went wrong!