Program Analyzer Block Graph Semantic Comparison
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Software projects with short development cycles and frequent binary releases face challenges in efficiently determining changes between versions, as current solutions are often file format agnostic and rely on heuristics, making them less efficient.
Innovation Solution
A program analyzer is developed to compare two programs by generating block graphs, creating signatures, and refining these signatures to identify matching blocks with semantic meaning, allowing for efficient comparison and mapping of changes between versions.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Measurement precision
If full profiles are run on every single release to ensure accurate program comparison, then measurement precision is improved, but loss of time increases due to frequent release rates
Solution Approach 1:
The patent segments the program into multiple blocks with block identifiers and semantic meanings. Instead of profiling the entire program, only specific blocks are selected and profiled based on their semantic importance, allowing accurate comparison of critical sections while reducing overall profiling time and resources required.
Solution Approach 2:
The patent applies different profiling depths to different blocks based on their semantic meaning. Critical blocks with important semantic meanings receive detailed profiling while less critical blocks receive minimal or no profiling, optimizing the balance between comparison accuracy and time consumption.
2Adaptability or versatility
If file format agnostic heuristic methods are used to determine binary differences, then adaptability is improved, but productivity decreases due to lower efficiency
Solution Approach 1:
The patent performs preliminary actions by generating block graphs and assigning semantic meanings to blocks before the actual comparison process. Block identifiers and semantic annotations are pre-computed and stored, allowing subsequent binary comparisons to proceed efficiently by matching blocks based on their pre-established semantic characteristics rather than performing full heuristic analysis.
Solution Approach 2:
The patent introduces block graphs with semantic meanings as an intermediary representation layer between the binary code and the comparison process. This intermediary structure enables efficient matching by providing a standardized semantic framework that works across different file formats, reducing reliance on format-specific heuristics while maintaining high productivity.
Data Source
AI summary
In one configuration, a program analyzer for comparing a first and second program is disclosed. The analyzer may be stored on tangible computer readable storage media, and configured to be executed by a processor of a computer. Each program may comprise a plurality of blocks, each block comprising a block identifier. The analyzer may comprise a preparation process, a comparison process, a refinement process, a repetition process, and an output process.


