Software Dependency Graph via Asynchronous Message Broker Analysis
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In modern enterprise environments, understanding the complex inter-dependencies among multiple software applications is challenging, especially when middleware asynchronously connects them, making it difficult to identify impacted applications during updates.
Innovation Solution
A method involving scanning source code and configuration information to extract connection information, resolving Uniform Resource Identifiers (URIs) to obtain network addresses, and analyzing source code to determine producer or consumer roles in asynchronous connections, generating a dependency graph to identify dependent software entities.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If asynchronous messaging using intermediate message brokers is employed to connect software applications, then the flexibility and decoupling of the system is improved, but the difficulty of detecting and measuring dependencies worsens
Solution Approach 1:
The patent uses message brokers as intermediaries to connect software applications asynchronously. The message broker acts as a mediator that receives messages from producer applications and delivers them to consumer applications, enabling flexible decoupled communication while maintaining traceable dependency relationships through the intermediary component.
Solution Approach 2:
The patent segments the complex software ecosystem into individual software entities and their specific dependency relationships. By breaking down the overall system into discrete components (software applications, message brokers, dependencies) and mapping their relationships in a graph structure, the system makes complex dependencies detectable and measurable despite the asynchronous nature of communication.
2Loss of information
If comprehensive dependency mapping is performed across multiple software applications, then the understanding of system inter-dependencies is improved, but the device complexity increases
Solution Approach 1:
The patent creates a universal dependency graph structure that can represent multiple types of software entities (applications, services, components) and their various dependency relationships (synchronous, asynchronous, direct, indirect) using a unified model. This multi-functional graph structure handles diverse dependency scenarios without requiring separate complex analysis mechanisms for each case.
Solution Approach 2:
The patent transitions from analyzing dependencies in a single-dimensional linear fashion to a multi-dimensional graph structure. The dependency graph adds dimensions such as dependency direction (producer to consumer), dependency type (synchronous/asynchronous), and relationship strength, enabling comprehensive dependency information to be organized and visualized without overwhelming system complexity.
3Ease of operation
If static code analysis is used to extract connection information, then the ease of operation is improved, but the measurement precision of dependency relationships worsens
Solution Approach 1:
The patent performs preliminary static code analysis to extract connection information from source code and configuration files before dynamic execution. This preliminary action identifies potential dependency relationships by analyzing code patterns, imports, and configuration declarations, establishing an initial dependency map that can be refined through dynamic analysis to achieve both ease of operation and measurement precision.
Data Source
AI summary
Techniques are provided for identifying dependencies among multiple software entities. One exemplary method comprises scanning source code and/or configuration information of a given software entity to extract connection information for connections made by the given software entity with other software entities, wherein at least one connection made by the given software entity is an asynchronous connection that employs asynchronous messaging using an intermediate message broker; resolving at least one uniform resource identifier in the extracted connection information to obtain a corresponding network address; analyzing the source code associated with the asynchronous connection to determine whether the given software entity is a producer or a consumer associated with the asynchronous connection; and generating a dependency graph identifying a plurality of the other software entities that depend on the given software entity. The dependency graph is optionally generated by aggregating the connections of the given software entity with connections by other software entities.


