Graph Model for Software Dependency Tracking
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Conventional systems for managing software package dependencies are inefficient due to time-intensive source code reviews and recursive database queries, failing to provide a comprehensive view of dependency changes across software releases, which can lead to API/ABI breakages.
Innovation Solution
A graph model is generated to represent software releases, including package and function dependencies, allowing for efficient comparison and identification of changes between releases, thereby tracking and managing software package dependencies and API/ABI breakages.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Measurement precision
If conventional package managers review source code to determine software dependencies, then dependency information can be obtained, but the process becomes time intensive and inefficient
Solution Approach 1:
The system pre-generates and stores dependency information in a database before it is needed. When software packages are installed or updated, their dependency information is extracted and stored in advance, so that subsequent queries can retrieve this information immediately without performing time-consuming source code analysis.
Solution Approach 2:
Instead of analyzing original source code each time dependency information is needed, the system creates and stores copies of dependency information in a database. These pre-extracted dependency relationships can be quickly queried and compared across different software releases without re-analyzing the source code.
2Loss of information
If recursive calls are made in relational database models to retrieve package dependency information, then comprehensive dependency data can be obtained, but the retrieval process becomes inefficient
Solution Approach 1:
The system segments the dependency information retrieval process by creating a normalized database schema that separates package information from dependency relationships. This allows the system to query specific dependency information directly without needing to make recursive calls through multiple database tables, thus maintaining information completeness while improving retrieval efficiency.
Solution Approach 2:
The system introduces an intermediary dependency information storage layer between the source code and the query interface. This intermediary database pre-stores parsed dependency relationships, acting as a mediator that provides comprehensive dependency information without requiring recursive database calls to original source code or complex relational table joins.
3Measurement precision
If software dependency monitoring is conducted at the package level for each package release, then individual package dependencies can be tracked, but the system fails to provide an efficient means for retrieving information about overall system impact
Solution Approach 1:
The system merges individual package-level dependency information into a comprehensive system-wide view stored in the database. By consolidating dependency data from multiple packages and releases into a unified database structure, the system enables efficient retrieval of both individual package dependencies and overall system impact information through single queries rather than requiring aggregation of multiple separate package-level analyses.
Data Source
AI summary
Methods and systems for generating a graph model associated with a software release. The methods and systems are configured to receive a software release including a set of software packages. The software release is parsed to identify modeling information including package information, package dependency information, and function dependency information associated with each software package in the set of software packages. A graph model is generated and stored which represents the modeling information, wherein the graph model comprises a package node for each software package in the set of software packages and a function node for each function in the set of software packages.


