Relaxed Backward Slicing for Software Verification
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing clustering techniques for software verification are imprecise and inefficient, particularly in analyzing loosely coupled systems and generating backward slices, as they often form a single cluster and require expensive inter-procedural analysis.
Innovation Solution
A method and system for function call and variable access based relaxed backward slicing, which generates partitions and slice points using control and data flow information specific to the entry function, allowing for scalable and precise analysis by focusing on functions called from the entry function and removing irrelevant functions, thereby improving scalability and precision.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of manufacture
If existing clustering techniques perform backward analysis to form clusters using function call information, then the analysis is simple and lightweight, but the precision is insufficient and all functions end up in a single cluster for loosely coupled systems
Solution Approach 1:
The patent divides the program into multiple partitions based on slicing criteria that consider data and control flow dependencies. Instead of forming a single cluster containing all functions, the system segments functions into distinct partitions where each partition contains functions that are actually related through data or control flow. This segmentation resolves the contradiction by maintaining simplicity while improving precision through meaningful groupings.
Solution Approach 2:
The patent applies different slicing criteria to different parts of the program based on local data and control flow characteristics. Each partition is created with quality tailored to its specific dependencies rather than applying a uniform clustering approach. This allows precise identification of relevant functions for each partition while keeping the overall analysis simple and scalable.
2Measurement precision
If existing methods generate multiple backward slices at every calling context with respect to input property, then the analysis is precise, but the computation is expensive and does not scale
Solution Approach 1:
The patent performs preliminary partitioning of functions based on slicing criteria before the actual verification process. By pre-identifying which functions belong to which partitions using data and control flow information, the system avoids the expensive operation of generating backward slices at every calling context during verification. This preliminary action maintains precision while enabling scalability.
Solution Approach 2:
The patent applies partial backward slicing only where necessary - specifically within each partition rather than across the entire program at every calling context. This partial action approach maintains verification precision for relevant functions while avoiding the excessive computation that would result from full program-wide backward slicing at all contexts.
3Adaptability or versatility
If clustering is applied to loosely coupled systems where all components are invoked from main entry function, then the existing method forms exactly one cluster, but this makes clustering useless for such applications
Solution Approach 1:
The patent creates partitions with local quality tailored to the specific dependency structure of loosely coupled systems. Even though all components are invoked from the main entry function, the slicing criteria identify local data and control flow dependencies that distinguish meaningful groups of functions. This results in multiple meaningful partitions rather than a single undifferentiated cluster, making the approach adaptable and useful for loosely coupled systems.
Data Source
AI summary
This disclosure relates generally to the field of program slicing, and, more particularly, to a method and system for function call and variable access based relaxed backward slicing. The method discloses a slicing criterion which focuses only on functions called from an entry function. The slicing criteria uses control and data flow information to slice the given entry function with respect to functions called from the body of the entry function and eventually remove all functions not called directly or indirectly from the entry function. The variables modified by calls in the entry function are considered through side-effect while identifying control and data dependence chain within body of entry function. The proposed technique identifies partitions of functions based on the variables accessible in and functions called from the entry function. Thus, unrelated sets of functions with respect to the entry function are computed and divided into different partitions.


