Program Analyzer Block Graph Semantic Comparison

Resolve Bottlenecks,
Find Innovative Solutions
Generate 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

VSEngineering 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

Engineering Contradiction:
Improveprogram comparison accuracyVSAvoidprofiling time
Core Design Contradiction:
Measurement precisionVSLoss of time

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.

Inventive Principle:
Principle #1Segmentation

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.

Inventive Principle:
Principle #3Local quality

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

Engineering Contradiction:
Improvefile format compatibilityVSAvoidbinary comparison efficiency
Core Design Contradiction:
Adaptability or versatilityVSProductivity

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.

Inventive Principle:
Principle #10Preliminary action

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.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS8997046B1Program analyzer for comparing programs
Publication Date: 2015.03.31 GOOGLE LLC
  • US8997046B1 patent drawing
  • US8997046B1 patent drawing
  • US8997046B1 patent drawing

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.