Font Size: a A A

Detecting ripple effects of program modifications on a software system's functionality

Posted on:2004-04-15Degree:Ph.DType:Dissertation
University:University of Louisiana at LafayetteCandidate:Deprez, Jean-ChristopheFull Text:PDF
GTID:1458390011953793Subject:Computer Science
Abstract/Summary:
When changing a line of source code, a programmer needs to know how changing that line may affect the end-user functionality of the software system. In this dissertation, we explore a method that uses system tests to relate software functions (units of software functionality) to source code. This method can be used to predict the software functions potentially affected by a change at a particular spot in the source code. The quality of a prediction is measured in terms of its safety and its precision. These two attributes are respectively addressed by answering the following questions: Are all potentially affected software functions predicted, and are all software functions predicted potentially affected?; We define a source code coverage criterion in terms of sets of inter-procedural paths. When a system test that satisfies this criterion is used, our method guarantees safe predictions for a large class of software functions. For most systems achieving such source code coverage may require an exponential number of system tests. Moreover, the precision of predictions is not guaranteed. Consequently, we create a new set of test selection criteria on the basis that all these new criteria must always be satisfied by a small number of system tests. Case studies on two software systems, namely scalc and bool, show that sets of system tests that satisfy our new criteria enable our method to compute safe predictions 70% of the time and safe and precise predictions between 60--70% of the time.; These results are not at a level where our method would supersede a programmer's manual analysis. However, they complement manual predictions by improving a programmer's confidence in the result of her/his manual analysis. Incidentally, during our two case studies, we observed that our method always corrected the programmer when he made a wrong manual prediction.
Keywords/Search Tags:Software, Source code, System, Method, Manual
Related items