Automated Data Flow Discovery in Application Code
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing methods are inefficient for tracking the execution of code from user interactions to the backend and end user in large code bases, particularly due to complex data flows and lack of automated approaches, leading to increased debugging time.
Innovation Solution
A method and system for automatically discovering application components that populate a user interface element by building a directed graph from application code, identifying matching code and data store elements, and creating a map of trees using Natural Language Processing (NLP) techniques to trace data flows across application layers.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Loss of information
If manual documentation is written to track data flows, then understanding of code execution is improved, but time consumption and maintenance burden increase significantly
Solution Approach 1:
The system enables self-service by automatically generating data flow tracking information through instrumentation of the codebase. The framework instruments backend code to capture data flow information, eliminating the need for manual documentation while providing up-to-date tracking data automatically
Solution Approach 2:
The system performs preliminary action by instrumenting the codebase during the development phase rather than requiring post-hoc manual documentation. The data flow tracking infrastructure is built in advance, allowing automatic generation of tracking information as code is executed
2Loss of information
If search in IDE is used to trace code execution, then some code paths can be found, but comprehensive tracking across multiple layers is insufficient
Solution Approach 1:
The system introduces an intermediary framework that sits between the backend code and the observer. This framework instruments the code to capture data flow information and presents it through a unified interface, enabling comprehensive automated tracking that goes beyond simple IDE search capabilities
Solution Approach 2:
The system segments the codebase into instrumentable units and applies tracking instrumentation systematically across different layers (frontend, backend, data storage). This segmentation allows comprehensive coverage of data flows across multiple application layers while maintaining manageability
3Ease of operation
If clear architecture is built from scratch, then data flow tracking becomes easier, but development time and complexity increase for existing applications
Solution Approach 1:
The system extracts data flow tracking functionality as a separate, independent framework that can be applied to existing architectures without requiring complete architectural redesign. The instrumentation layer is extracted from the core business logic, allowing tracking capabilities to be added without fundamentally changing the application architecture
4Loss of information
If manual tracking of data flows is performed, then understanding of code paths is improved, but debugging time increases significantly
Solution Approach 1:
The system implements feedback by automatically capturing and presenting data flow information as code is executed. The instrumentation framework provides real-time feedback about data flow paths, allowing developers to understand execution paths without manual tracking, thereby improving debugging efficiency
Data Source
AI summary
Automatically discovering application components that populate a user interface element may be provided. A directed graph may be built from an application code implementing a backend layer of an application. A code element in the application code may be identified that matches an input element of a user interface of the application. A data store element of a data store implementing data layer of the application may be identified that matches the input element. For the input element, a map of trees may be built tracing through the directed graph based on the code element and the data store element that are identified. The map of trees may be grouped based on at least matching of annotations of the trees in the map, a similarity of begin and end points of the trees in the map and matching of the end points of the trees in the map.


