Graph-Based Application Debugging via Overlay Versioning

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Debugging graph-based applications often requires modifying the source code, which can inadvertently break the original functionality, and testers may lack permissions or efficiency in testing due to the need to manually provide input data and specify output destinations.

Innovation Solution

The method involves generating a second version of the computer program by identifying and replacing external data sources and sinks with test sources and probes defined in an overlay specification, allowing for consistent input data and monitoring of output without modifying the original graph, using a processor to analyze and execute the modified program.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of operation

If the source code is modified with debug code to enable debugging, then the debugging capability is improved, but the original functionality of the source code is compromised

Engineering Contradiction:
Improvedebugging capabilityVSAvoidoriginal functionality
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The patent creates a copy of the graph (second version) that includes debug code and test data sources, while leaving the original graph unchanged. This allows debugging operations to be performed on the copy without affecting the original functionality, resolving the contradiction between improving debugging capability and maintaining original functionality.

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The patent separates the graph into a first version (original) and a second version (debugging version). The second version is generated by copying the first version and adding debug code, allowing independent modification of the debugging version without impacting the original graph's functionality.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If manual testing is performed by providing input data and specifying output destinations, then testing flexibility is improved, but testing efficiency and system resource usage deteriorate

Engineering Contradiction:
Improvetesting flexibilityVSAvoidtesting efficiency
Core Design Contradiction:
Adaptability or versatilityVSProductivity

Solution Approach 1:

The patent pre-creates test data sources with predefined input data and destinations before execution. These test data sources are automatically generated and configured, eliminating the need for manual data provision during testing and significantly improving testing efficiency while maintaining flexibility through automated configuration.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system automatically generates test data sources and configures them without requiring manual intervention. The automated generation process creates appropriate test data and destinations based on the graph structure, allowing the system to serve itself in the testing process and improving both efficiency and resource utilization.

Inventive Principle:
Principle #25Self-service

Data Source

PatentEP3783494A1Application testing
Publication Date: 2021.02.24 AB INITIO TECHNOLOGY LLC
  • EP3783494A1 patent drawingFigure 1
  • EP3783494A1 patent drawingFigure 2
  • EP3783494A1 patent drawingFigure 3

AI summary

A method includes analyzing, by a processor, a first version of a computer program. The analyzing includes identifying a first data processing element included in the first version of the computer program. The first data processing element references a first data source external to the first version of the computer program. The method includes generating a data source element that represents a second data source different from the first data source. The method includes generating a second version of the computer program. The second version of the computer program includes the generated data source element and a second data processing element that is based on the first data processing element. In the second version of the computer program, the second data processing element references the generated data source element.