Prioritized static slicing and its application to fault localization

•We build a model PrioSlice that prioritizes statements in a static slice.•Not all statements in a static slice are equally likely to propagate effects.•Some data dependencies are more likely to occur than others.•Control dependencies are less likely than data dependencies to propagate effects.•Prio...

Celý popis

Uloženo v:
Podrobná bibliografie
Vydáno v:The Journal of systems and software Ročník 114; s. 38 - 53
Hlavní autoři: Zhang, Yiji, Santelices, Raul
Médium: Journal Article
Jazyk:angličtina
Vydáno: New York Elsevier Inc 01.04.2016
Elsevier Sequoia S.A
Témata:
ISSN:0164-1212, 1873-1228
On-line přístup:Získat plný text
Tagy: Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
Popis
Shrnutí:•We build a model PrioSlice that prioritizes statements in a static slice.•Not all statements in a static slice are equally likely to propagate effects.•Some data dependencies are more likely to occur than others.•Control dependencies are less likely than data dependencies to propagate effects.•PrioSlice helps localize faults more effectively than other static-slicing methods. Static slicing is a popular program analysis used in software engineering to find which parts of a program affect other parts. Unfortunately, static slicing often produces large and imprecise results because of its conservative nature. Dynamic slicing can be an alternative in some cases, but it requires detailed runtime information that can be hard or impossible to obtain or re-create. This is often the case when users report bugs in deployed software. In this paper, we significantly improve the precision of static slicing through PrioSlice, a novel technique that exploits the insight that not all statements in a static slice are equally likely to affect another statement such as a failing point. PrioSlice first computes a probabilistic model of the dependencies in the program. In this model, some data dependencies are more likely to occur than others and control dependencies are less likely than data dependencies to propagate effects (e.g., errors). PrioSlice then traverses the program backwards, like static slicing, but in an order defined by the computed dependence probabilities. Our study of fault localization on various Java subjects indicates that PrioSlice can help localize faults much more effectively than existing static-slicing approaches.
Bibliografie:SourceType-Scholarly Journals-1
ObjectType-Feature-1
content type line 14
ObjectType-Article-1
ObjectType-Feature-2
content type line 23
ISSN:0164-1212
1873-1228
DOI:10.1016/j.jss.2015.10.052