Automated Software Repair Using Instrumentation Functions
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Automated software repair systems often implement repairs in incorrect locations and perform unnecessary tests, leading to inefficiencies and ineffective fault correction in software programs.
Innovation Solution
The method involves identifying fault locations, generating instrumentation functions to gather information, prioritizing fault locations and tests based on obtained data, and implementing repair candidates as patches with partial interpretation to reduce testing time and improve efficiency.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If automated repair systems perform exhaustive testing of all fault locations, then repair accuracy improves, but testing time and computational resources increase significantly
Solution Approach 1:
The patent applies preliminary action by performing static analysis and generating instrumentation functions before actual test execution. This preprocessing step identifies likely fault locations and prioritizes them, so that during testing, the system focuses on high-probability areas first, reducing overall testing time while maintaining repair accuracy.
Solution Approach 2:
The patent implements partial action by using instrumentation functions to monitor only specific variables and statements at prioritized fault locations rather than exhaustive monitoring of the entire program. This selective monitoring approach reduces computational overhead and testing time while still capturing sufficient information to identify and repair faults accurately.
2Difficulty of detecting and measuring
If instrumentation functions are implemented at all fault locations, then fault detection capability improves, but device complexity and processing overhead increase
Solution Approach 1:
The patent applies local quality by implementing instrumentation functions selectively at specific fault locations rather than uniformly across the entire program. The system prioritizes fault locations based on static analysis results and places instrumentation only where most needed, reducing overall processing overhead while maintaining high fault detection capability at critical locations.
Solution Approach 2:
The patent segments the program into basic blocks and identifies specific statements within those blocks that are likely to contain faults. Instrumentation functions are then applied only to these segmented critical areas rather than the entire program, reducing complexity while improving targeted fault detection capability.
3Reliability
If multiple repair candidates are tested exhaustively, then repair reliability improves, but productivity and efficiency decrease
Solution Approach 1:
The patent performs preliminary action by using static analysis to prioritize fault locations and generate a ranked list of likely fault sites before testing repair candidates. This allows the system to test repair candidates in order of probability, finding effective repairs faster while maintaining high reliability through systematic evaluation of multiple candidates.
Solution Approach 2:
The patent applies partial action by using instrumentation functions to gather information only from prioritized fault locations during repair candidate testing. This selective information gathering reduces the computational burden of testing multiple repair candidates while still providing sufficient data to evaluate their effectiveness and maintain high repair reliability.
Data Source
AI summary
A method may include identifying a fault location in a software program. The method may further include generating an instrumentation function with respect to the fault location. In addition, the method may include replacing a statement at the fault location with the instrumentation function and performing a first test execution of the software program with the implemented instrumentation function. The method may also include selecting the fault location for implementation of a repair candidate based on output of the instrumentation function in response to the first test execution and implementing the repair candidate at the fault location as a patch based on the selection. Moreover, the method may include performing a second test execution of the software program with respect to the patch, evaluating the patch based on results of the second test execution, and accepting or rejecting the patch based on the evaluation.


