Pointer Analysis via Multiple Program Slicing
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Scaling pointer analysis to large programs is challenging due to the complexity and precision requirements, with existing methods struggling to efficiently analyze pervasive pointer usage in imperative languages like C and Java.
Innovation Solution
The method involves decomposing pointer analysis into inter-dependent objectives, computing distinct program slices for each objective, and performing successive refinements to improve precision and efficiency, using a slice engine to extract relevant code segments and a evaluation engine to generate reports on program defects and optimization opportunities.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If pointer analysis is applied to large programs, then analysis coverage is improved, but analysis time and computational complexity increase significantly
Solution Approach 1:
The patent divides the large program into multiple program slices based on pointer analysis objectives. Each slice represents a subset of the program that can be analyzed independently or semi-independently. This segmentation allows the analysis to be distributed across multiple processing units and reduces the computational burden on any single analysis pass, thereby reducing overall analysis time while maintaining comprehensive coverage through multiple slicing iterations.
2Reliability
If pointer analysis is applied to large programs, then analysis coverage is improved, but computational complexity increases significantly
Solution Approach 1:
By segmenting the program into slices based on pointer analysis objectives, the patent reduces the computational complexity of each individual analysis task. The slice engine creates smaller, more manageable program representations that require less computational resources to analyze, while the multiple slicing approach ensures comprehensive coverage is achieved through iterative analysis of different program portions.
3Measurement precision
If program slices are computed for each pointer analysis objective, then analysis precision is improved, but device complexity increases
Solution Approach 1:
The patent implements a dynamic slicing approach where the slice engine adapts program slicing based on specific pointer analysis objectives. Different slices are generated dynamically according to the analysis needs, allowing precise targeting of relevant program portions for each objective. This dynamic adaptation improves precision by focusing analysis resources on pertinent code segments while managing device complexity through objective-driven slice generation.
Data Source
AI summary
A method for analyzing software with pointer analysis may include obtaining a software program, and determining a first independent program slice of the software program describing a first code segment of the software program. The method may further include determining, using a first pointer analysis objective, a first result from performing a first pointer analysis on the first independent program slice, and determining, using the first result, a first dependent program slice of the software program. The method may further include determining, using a second pointer analysis objective, a second result from performing a second pointer analysis on the first dependent program slice. The method may further include generating a report, using these results, indicating whether the software program satisfies a predetermined criterion.


