Module Declarations Manage Software Dependency Complexity

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Software systems face increased complexity and maintenance risks due to growing code size and dependencies, leading to performance issues and unmanageability, which modularization attempts to address but requires effective management of dependencies throughout the software life cycle.

Innovation Solution

A system utilizing a software development kit (SDK) and runtime system that associates classes with module declarations to manage dependencies, employing unique module identities, dependencies, and reverse dependency constraints to control visibility and interaction among modules across the software life cycle phases.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If software systems are modularized into components, then maintainability and readability improve, but dependency management complexity increases

Engineering Contradiction:
ImprovemaintainabilityVSAvoiddependency management complexity
Core Design Contradiction:
Ease of manufactureVSDevice complexity

Solution Approach 1:

The patent segments the software system into modular components with explicit interface declarations. Each module declares its dependencies through structured interface definitions, allowing the build system to process dependencies in a systematic, phase-by-phase manner rather than as a monolithic complex system.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces module interface declarations as an intermediary layer between implementation code and dependency management. These declarations serve as contracts that explicitly define relationships between modules, enabling automated dependency resolution without requiring complex manual configuration or analysis of implementation details.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If new features are added to increase functionality, then software sophistication improves, but code size and complexity increase

Engineering Contradiction:
ImprovefunctionalityVSAvoidcode complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent enables new features to be implemented as separate modular components that declare their dependencies through interfaces. This segmentation allows functionality to grow while maintaining manageable complexity, as each new module is self-contained with explicit dependency declarations rather than implicit couplings.

Inventive Principle:
Principle #1Segmentation

3Productivity

If modules are developed independently, then development efficiency improves, but dependency resolution difficulty increases

Engineering Contradiction:
Improvedevelopment efficiencyVSAvoiddependency resolution difficulty
Core Design Contradiction:
ProductivityVSDifficulty of detecting and measuring

Solution Approach 1:

The patent requires module interface declarations to be prepared in advance, explicitly specifying dependencies before the build process begins. This preliminary action of declaring interfaces and dependencies upfront enables automated resolution during the build phases, eliminating the need for complex post-factum dependency analysis while preserving independent development benefits.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS9229709B2Polyphasic modules for software development
Publication Date: 2016.01.05 ORACLE INT CORP
  • US9229709B2 patent drawing
  • US9229709B2 patent drawing
  • US9229709B2 patent drawing

AI summary

The disclosed embodiments provide a system that facilitates the development and maintenance of a software program. This system includes a software development kit (SDK) and a runtime system for the software program. During operation, the system associates classes of the software program with module declarations for a set of modules and uses the module declarations to manage dependencies in the software program throughout the life cycle of the software program.