Code Lineage Tool for ETL Dependency Analysis

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 intricate dependencies and nested dependencies, leading to challenges in maintenance and debugging.

Innovation Solution

A code lineage tool that uses a scanner, parser, and integrator to build a parse tree from extract, transform, load (ETL) software code, determining dependencies and nested dependencies, and generating a lineage that indicates 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 enhanced over time, then functionality and capabilities are improved, but code complexity increases making debugging and maintenance difficult

Engineering Contradiction:
ImprovefunctionalityVSAvoidcode 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 nesting. Each node in the tree represents a specific code element or dependency, breaking down the monolithic complex code into manageable, visually separable components that can be analyzed independently while maintaining their relational context.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent transforms flat, linear code representation into a multi-dimensional hierarchical tree structure. This adds dimensional depth to code analysis by organizing elements across multiple levels (parent-child-grandchild relationships), allowing developers to navigate and understand dependencies through vertical hierarchy rather than horizontal scanning.

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

2Measurement precision

If code elements and dependencies are tracked comprehensively, then debugging accuracy is improved, but analysis time and computational resources increase

Engineering Contradiction:
Improvedebugging accuracyVSAvoidanalysis time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The patent performs preliminary parsing and tree construction before actual debugging or analysis operations. The parse tree is built in advance, pre-organizing all code elements and their dependencies into a structured format, so that subsequent debugging queries can be executed efficiently without re-analyzing the entire codebase.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent creates a symbolic copy of the code structure in the form of a parse tree. This abstract representation copies the essential hierarchical relationships and dependencies without duplicating the actual code execution overhead, allowing rapid analysis of code relationships without the computational cost of full code interpretation.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS10795650B2Code lineage tool
Publication Date: 2020.10.06 BANK OF AMERICA CORP
  • US10795650B2 patent drawing
  • US10795650B2 patent drawing
  • US10795650B2 patent drawing

AI summary

A code lineage tool includes a scanner, a parser, and an integrator. The scanner identifies elements in ETL code. The parser determines that a first element is affected by a second element and adds the first element to a parse tree and the second element to the parse tree as a sub-node of the first element. The parser determines that the second element is affected by a third element and adds the third element to the parse tree as a sub-node of the second element. The parser determines that a fourth element does not affect the first element and prevents the fourth element from being added to the parse tree or removes the fourth element from the parse tree. The integrator determines that a change to the third element will change the value of the first element and generates a lineage for the first element.