Application of local semantic analysis in fault prediction and detection

To improve quality of software systems, change-based fault prediction and scope-bounded checking have been used to predict or detect faults during software development. In fault prediction, changes to program source code, such as added lines or deleted lines, are used to predict potential faults. In...

Full description

Bibliographic Details
Main Author: Shao, Danhua
Format: Others
Language:English
Published: 2010
Subjects:
SAT
Online Access:http://hdl.handle.net/2152/ETD-UT-2010-05-1086
id ndltd-UTEXAS-oai-repositories.lib.utexas.edu-2152-ETD-UT-2010-05-1086
record_format oai_dc
spelling ndltd-UTEXAS-oai-repositories.lib.utexas.edu-2152-ETD-UT-2010-05-10862015-09-20T16:54:57ZApplication of local semantic analysis in fault prediction and detectionShao, DanhuaVersion managementSemantic analysisData-flow analysisControl-flow analysisScope-bounded checkingAlloyFirst-order logicSATComputation graphWhite-box testingTo improve quality of software systems, change-based fault prediction and scope-bounded checking have been used to predict or detect faults during software development. In fault prediction, changes to program source code, such as added lines or deleted lines, are used to predict potential faults. In fault detection, scope-bounded checking of programs is an effective technique for finding subtle faults. The central idea is to check all program executions up to a given bound. The technique takes two basic forms: scope-bounded static checking, where all bounded executions of a program are transformed into a formula that represents the violation of a correctness property and any solution to the formula represents a counterexample; or scope-bounded testing where a program is tested against all (small) inputs up to a given bound on the input size. Although the accuracies of change-based fault prediction and scope-bounded checking have been evaluated with experiments, both of them have effectiveness and efficiency limitations. Previous change-based fault predictions only consider the code modified by a change while ignoring the code impacted by a change. Scope-bounded testing only concerns the correctness specifications, and the internal structure of a program is ignored. Although scope-bounded static checking considers the internal structure of programs, formulae translated from structurally complex programs might choke the backend analyzer and fail to give a result within a reasonable time. To improve effectiveness and efficiency of these approaches, we introduce local semantic analysis into change-based fault prediction and scope-bounded checking. We use data-flow analysis to disclose internal dependencies within a program. Based on these dependencies, we identify code segments impacted by a change and apply fault prediction metrics on impacted code. Empirical studies with real data showed that semantic analysis is effective and efficient in predicting faults in large-size changes or short-interval changes. While generating inputs for scope-bounded testing, we use control-flow to guide test generation so that code coverage can be achieved with minimal tests. To increase the scalability of scope-bounded checking, we split a bounded program into smaller sub-programs according to data-flow and control-flow analysis. Thus the problem of scope-bounded checking for the given program reduces to several sub-problems, where each sub-problem requires the constraint solver to check a less complex formula, thereby likely reducing the solver’s overall workload. Experimental results show that our approach provides significant speed-ups over the traditional approach.text2010-10-06T21:28:19Z2010-10-06T21:28:27Z2010-10-06T21:28:19Z2010-10-06T21:28:27Z2010-052010-10-06May 20102010-10-06T21:28:27Zthesisapplication/pdfhttp://hdl.handle.net/2152/ETD-UT-2010-05-1086eng
collection NDLTD
language English
format Others
sources NDLTD
topic Version management
Semantic analysis
Data-flow analysis
Control-flow analysis
Scope-bounded checking
Alloy
First-order logic
SAT
Computation graph
White-box testing
spellingShingle Version management
Semantic analysis
Data-flow analysis
Control-flow analysis
Scope-bounded checking
Alloy
First-order logic
SAT
Computation graph
White-box testing
Shao, Danhua
Application of local semantic analysis in fault prediction and detection
description To improve quality of software systems, change-based fault prediction and scope-bounded checking have been used to predict or detect faults during software development. In fault prediction, changes to program source code, such as added lines or deleted lines, are used to predict potential faults. In fault detection, scope-bounded checking of programs is an effective technique for finding subtle faults. The central idea is to check all program executions up to a given bound. The technique takes two basic forms: scope-bounded static checking, where all bounded executions of a program are transformed into a formula that represents the violation of a correctness property and any solution to the formula represents a counterexample; or scope-bounded testing where a program is tested against all (small) inputs up to a given bound on the input size. Although the accuracies of change-based fault prediction and scope-bounded checking have been evaluated with experiments, both of them have effectiveness and efficiency limitations. Previous change-based fault predictions only consider the code modified by a change while ignoring the code impacted by a change. Scope-bounded testing only concerns the correctness specifications, and the internal structure of a program is ignored. Although scope-bounded static checking considers the internal structure of programs, formulae translated from structurally complex programs might choke the backend analyzer and fail to give a result within a reasonable time. To improve effectiveness and efficiency of these approaches, we introduce local semantic analysis into change-based fault prediction and scope-bounded checking. We use data-flow analysis to disclose internal dependencies within a program. Based on these dependencies, we identify code segments impacted by a change and apply fault prediction metrics on impacted code. Empirical studies with real data showed that semantic analysis is effective and efficient in predicting faults in large-size changes or short-interval changes. While generating inputs for scope-bounded testing, we use control-flow to guide test generation so that code coverage can be achieved with minimal tests. To increase the scalability of scope-bounded checking, we split a bounded program into smaller sub-programs according to data-flow and control-flow analysis. Thus the problem of scope-bounded checking for the given program reduces to several sub-problems, where each sub-problem requires the constraint solver to check a less complex formula, thereby likely reducing the solver’s overall workload. Experimental results show that our approach provides significant speed-ups over the traditional approach. === text
author Shao, Danhua
author_facet Shao, Danhua
author_sort Shao, Danhua
title Application of local semantic analysis in fault prediction and detection
title_short Application of local semantic analysis in fault prediction and detection
title_full Application of local semantic analysis in fault prediction and detection
title_fullStr Application of local semantic analysis in fault prediction and detection
title_full_unstemmed Application of local semantic analysis in fault prediction and detection
title_sort application of local semantic analysis in fault prediction and detection
publishDate 2010
url http://hdl.handle.net/2152/ETD-UT-2010-05-1086
work_keys_str_mv AT shaodanhua applicationoflocalsemanticanalysisinfaultpredictionanddetection
_version_ 1716820967273005056