Code Lineage Tool Builds Parse Tree to Trace Nested Dependencies

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Complex software code makes it difficult for developers to identify the source of bugs or errors due to its complexity, leading to challenges in maintenance and debugging as dependencies and nested dependencies become hard to trace.

Innovation Solution

A code lineage tool that uses a scanner, parser, and integrator to build a parse tree from software code, determining dependencies and nested dependencies by analyzing the code and generating a lineage that shows how changes to one element affect others, thereby simplifying the debugging process.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If software code is improved and extended over time, then functionality and application capability are enhanced, but code complexity increases making debugging and maintenance difficult

Engineering Contradiction:
Improveapplication capabilityVSAvoidcode complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent segments complex software code into a hierarchical parse tree structure with multiple levels of elements (e.g., SQL statements, queries, expressions, identifiers). This segmentation allows developers to navigate and understand code dependencies by breaking down complex code into manageable hierarchical components, thereby reducing the perceived complexity while maintaining full functionality.

Inventive Principle:
Principle #1Segmentation

2Adaptability or versatility

If software code becomes more complex with multiple dependencies, then functionality is enhanced, but the ability to identify bug sources and trace dependencies deteriorates

Engineering Contradiction:
ImprovefunctionalityVSAvoiddependency tracing difficulty
Core Design Contradiction:
Adaptability or versatilityVSDifficulty of detecting and measuring

Solution Approach 1:

The patent introduces a new dimensional representation of code relationships through the parse tree structure and lineage information. Instead of linear code navigation, dependencies are visualized and traced through hierarchical levels and parent-child relationships in the parse tree, adding a structural dimension that makes dependency tracing significantly easier despite increased code complexity.

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

Solution Approach 2:

The system provides feedback by generating lineage information that shows the complete path of dependency relationships between code elements. When a bug is detected, the lineage feedback mechanism traces back through the parse tree to identify the source of the problem, enabling developers to understand the full impact chain of dependent elements and efficiently locate bug sources.

Inventive Principle:
Principle #23Feedback

3Loss of information

If developers manually trace dependencies in complex code, then understanding of code relationships can be achieved, but time consumption and productivity are reduced

Engineering Contradiction:
Improvedependency understandingVSAvoiddebugging efficiency
Core Design Contradiction:
Loss of informationVSProductivity

Solution Approach 1:

The patent performs preliminary action by automatically generating the parse tree and lineage information before debugging or maintenance activities. The system pre-processes the code to establish the hierarchical structure and dependency relationships, so that when developers need to trace dependencies or identify bug sources, the analytical work has already been completed, significantly reducing the time required for debugging and maintenance tasks.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10802805B2Code lineage tool
Publication Date: 2020.10.13 BANK OF AMERICA CORP
  • US10802805B2 patent drawing
  • US10802805B2 patent drawing
  • US10802805B2 patent drawing

AI summary

A code lineage tool includes a scanner, a parser, and an integrator. The scanner identifies a plurality of elements in software code. The parser determines that a value of a first element is affected by a second element and a third element. The parser adds the first element to a parse tree and adds the second and third elements to the parse tree as sub-nodes of the first element. The parser determines that a value of the second element is affected by a fourth element and adds the fourth element to the parse tree as a sub-node of the second element. The integrator determines that a change to the fourth element will change the value of the first element and the value of the second element and generates a lineage for the first element.