Software Dependency Analysis via Build Instrumentation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Large software systems with complex architectures face challenges in managing dependencies and maintaining modular and hierarchical structures, leading to issues like unmanageable sub-systems, incomprehensible cross-cutting concerns, and sporadic build failures due to unclear or highly coupled chains of interdependencies.

Innovation Solution

A computer-implemented method and system that identifies and reports illegal dependencies among software components by analyzing metadata and actual dependence relationships, using tools like LD_PRELOAD libraries to log file creation and access, and instrumenting build processes to capture and visualize dependency information, thereby enforcing architectural rules and promoting modular and hierarchical organization.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If software systems are composed of millions of entities connected in many ways to achieve functionality, then the system's capability and versatility improve, but the architectural complexity and difficulty of maintenance worsen

Engineering Contradiction:
Improvesystem capabilityVSAvoidarchitectural complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent segments the software system into software components with explicit metadata declarations. Each component's dependencies are broken down into explicit metadata fields that declare intended relationships, separating the complex web of connections into manageable, declarable units that can be analyzed and enforced independently.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces metadata as an intermediary layer between software components and their dependencies. This metadata acts as a mediator that explicitly declares intended dependency relationships, allowing the system to manage complexity by inserting a structured representation layer that mediates between actual component interactions and architectural rules.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Ease of repair

If modular architectures with formal boundaries are employed to separate internal environments, then independence and maintainability of components improve, but the difficulty of detecting and measuring actual dependencies worsens

Engineering Contradiction:
Improvecomponent independenceVSAvoiddependency detection
Core Design Contradiction:
Ease of repairVSDifficulty of detecting and measuring

Solution Approach 1:

The patent performs preliminary action by instrumenting the build process to capture actual dependency information before the software components are fully integrated. Dependency information is collected and recorded during the build process itself, allowing dependencies to be detected and analyzed before they cause integration problems.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent implements feedback by comparing declared metadata dependencies with actually observed dependencies from build process instrumentation. This feedback loop identifies discrepancies between intended and actual relationships, allowing the system to detect illegal dependencies and enforce architectural rules based on real behavioral data.

Inventive Principle:
Principle #23Feedback

3Ease of operation

If hierarchical structures with directed acyclic graphs are used to organize components, then control and comprehension improve, but the loss of information about actual runtime dependencies increases

Engineering Contradiction:
Improvesystem comprehensionVSAvoidruntime dependency information
Core Design Contradiction:
Ease of operationVSLoss of information

Solution Approach 1:

The patent merges hierarchical metadata-based dependency declarations with actual runtime dependency observations from build process instrumentation. By combining these two sources of dependency information, the system maintains the comprehensibility of hierarchical structures while capturing complete runtime dependency data that would otherwise be lost.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The patent performs preliminary action by capturing dependency information during the build process before runtime execution. This allows the system to record actual dependencies early in the software lifecycle, preserving information about runtime behavior without requiring complex runtime instrumentation that would complicate the hierarchical structure.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentEP3155515B1Computer-implemented tools and methods for extracting information about the structure of a large computer software system, exploring its structure, discovering problems in its design, and enabling refactoring
Publication Date: 2022.05.11 SILVERTHREAD INC
  • EP3155515B1 patent drawingFigure 1
  • EP3155515B1 patent drawingFigure 2
  • EP3155515B1 patent drawingFigure 3

AI summary

An interrelated set of tools and methods are disclosed for recording the identity of software components responsible for creating files, recording the identity of software components that access software files, reasoning about the dependency relationships between software components, identifying and reporting undesirable dependencies between them, and reporting other useful information about a large-scale software architecture by instrumenting a software build process or test process.