Software Dependency Graph via Asynchronous Message Broker Analysis

Resolve Bottlenecks,
Find Innovative Solutions
Generate 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

VSEngineering 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

Engineering Contradiction:
Improvesystem flexibilityVSAvoiddependency detection difficulty
Core Design Contradiction:
Adaptability or versatilityVSDifficulty of detecting and measuring

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.

Inventive Principle:
Principle #24Intermediary (Mediator)

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.

Inventive Principle:
Principle #1Segmentation

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

Engineering Contradiction:
Improvedependency information completenessVSAvoidsystem complexity
Core Design Contradiction:
Loss of informationVSDevice complexity

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.

Inventive Principle:
Principle #6Universality (Multi-functionality)

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.

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

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

Engineering Contradiction:
Improvedependency extraction easeVSAvoiddependency relationship accuracy
Core Design Contradiction:
Ease of operationVSMeasurement precision

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.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS11392372B1Identification of dependencies among software entities
Publication Date: 2022.07.19 DELL PROD LP
  • US11392372B1 patent drawing
  • US11392372B1 patent drawing
  • US11392372B1 patent drawing

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.