Graph Debugging via Separate Insertion Components
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Debugging source code often requires modifying the graph, which can inadvertently alter its original functionality, and testers may lack permission to edit the graph, leading to inefficient testing and risk of breaking the original functionality.
Innovation Solution
A method that generates a second graph with insertion components, such as probes and test sources, separate from the original graph, allowing for debugging and testing without modifying the original graph, by providing pre-validated data and monitoring data flows, thus avoiding the risk of altering the original functionality.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Ease of operation
If the graph is modified to add debug code, then debugging capability is improved, but the original functionality may be altered and reliability deteriorates
Solution Approach 1:
The system segments the graph into two separate versions: the original graph and a debug version. The debug version contains the inserted probe components while the original graph remains unchanged. This segmentation allows debugging operations to be performed on the copy without affecting the original functionality.
Solution Approach 2:
The system creates a copy of the original graph to serve as a debug version. This copy contains all the components and flows of the original graph, plus additional probe components for debugging. By working on the copy rather than the original, the system enables debugging while preserving the original functionality intact.
2Adaptability or versatility
If debug components are inserted into the graph, then testing capability is improved, but device complexity increases
Solution Approach 1:
The probe components are extracted as separate, identifiable elements that can be independently managed. The specification file separates the debug component definitions from the graph structure, allowing the probe components to be taken out and inserted only where needed for debugging, rather than requiring comprehensive modification of the entire graph.
Solution Approach 2:
The probe components are predefined in a specification file before being inserted into the graph. This preliminary preparation allows the system to automatically generate the debug version with components inserted at appropriate locations, reducing the manual complexity of configuring each debug element individually.
3Productivity
If the original graph is modified for debugging, then debugging efficiency is improved, but the risk of breaking functionality increases
Solution Approach 1:
The system prepares a protective copy of the original graph before any debugging modifications are made. This copy serves as a cushion that absorbs the risks of debugging modifications, allowing developers to experiment with probe insertions and modifications without fear of breaking the original functionality. The original graph remains protected and can be restored if needed.
4Adaptability or versatility
If testers are given permission to edit the graph, then debugging flexibility is improved, but the risk of unintended modifications increases
Solution Approach 1:
The system introduces an intermediary process that automatically generates the debug version from the original graph based on a specification file. Testers work with this generated debug version rather than directly editing the original graph. The intermediary generation process ensures that the original graph integrity is maintained while still providing testers with full flexibility to modify the debug version as needed.
Data Source
Figure 1
Figure 2
Figure 3
AI summary
In certain aspects, a method includes: receiving a first graph that includes components and flows, the components representing operations performed on data records, the flows representing flows of data records between components; receiving a specification that is separate from the first graph, the specification defining one or more insertions, each of the insertions associated with a flow of the first graph; generating one or more components that each corresponds to one of the insertions; and generating a second graph that includes components and flows that correspond to at least some of the components and flows of the first graph and the one or more generated components.