Distributed Code Analysis via Snapshot Attribution

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Performing analysis and attribution of large code bases with many snapshots is computationally expensive and inefficient, particularly due to the high cost of data transfer and the need for sequential processing of snapshots.

Innovation Solution

A distributed static analysis system utilizing multiple worker computing nodes that operate concurrently to perform analysis and attribution tasks, where a manager node distributes tasks and allows worker nodes to analyze and attribute snapshots independently, reducing the need for centralized management and enabling parallel processing.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of energy

If sequential processing of snapshots is used, then data transfer costs are reduced, but processing time increases significantly

Engineering Contradiction:
Improvedata transfer costVSAvoidprocessing time
Core Design Contradiction:
Loss of energyVSLoss of time

Solution Approach 1:

The patent divides the code base into multiple snapshots and processes them in parallel across multiple worker nodes. Each worker node independently analyzes snapshots, breaking the monolithic sequential processing into segmented concurrent operations, thereby reducing total processing time while managing data transfer through organized attribution sets.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a new dimension of parallelism by distributing snapshot processing across multiple worker nodes simultaneously. Instead of processing snapshots one after another in a single thread, the system creates multiple processing streams that operate concurrently, transforming the time dimension from sequential to parallel execution.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Productivity

If multiple worker nodes are added to increase processing capacity, then productivity improves, but system complexity increases

Engineering Contradiction:
Improveprocessing capacityVSAvoidsystem complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent introduces an attribution set as an intermediary data structure that manages the relationship between snapshots and worker nodes. This intermediary organizes snapshots into sets that can be efficiently distributed and tracked, reducing the complexity of managing multiple worker nodes by providing a structured interface for task allocation and result aggregation.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Reliability

If centralized management of worker nodes is maintained, then system control is improved, but worker node flexibility decreases

Engineering Contradiction:
Improvesystem controlVSAvoidworker node flexibility
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

Worker nodes are designed to independently retrieve attribution sets and process snapshots without requiring constant centralized coordination. Each worker node can autonomously manage its task queue and processing state, enabling flexible addition or removal of nodes while maintaining system control through the shared attribution set structure that defines task boundaries and dependencies.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS9417985B2Distributed analysis and attribution of source code
Publication Date: 2016.08.16 MICROSOFT TECHNOLOGY LICENSING LLC
  • US9417985B2 patent drawing
  • US9417985B2 patent drawing
  • US9417985B2 patent drawing

AI summary

Methods, systems, and apparatus, including computer programs encoded on computer storage media, for distributing analysis tasks and attribution tasks. One of the methods includes receiving data representing a plurality of snapshots of a code base, wherein each snapshot comprises source code files, wherein one or more snapshots have a parent snapshot in the code base according to a revision graph of snapshots in the code base. An attribution set is generated from the plurality of snapshots, the attribution set having a target set of attributable snapshots to be attributed and a support set of all parent snapshots of all snapshots in the target set. An attribution task is distributed for the attribution set to a particular worker node of a plurality of worker nodes.