Module Renaming via Synthesized Alias Dependency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Renaming a module in a module system can lead to errors and break dependencies, as consumers may reference the old module name, requiring extensive editing to update references, which is time-consuming and impractical, especially when developers lack access to consuming modules' code.

Innovation Solution

The system synthesizes a new module with a second module name and declares a dependency on the original module with the first module name, allowing for transparent renaming without breaking dependencies, by generating a synthesized module that depends transitively on the renamed module, ensuring compatibility with both old and new names.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a module is renamed, then the module can have a new name, but consumers referencing the old name will break and require extensive editing

Engineering Contradiction:
Improvemodule renaming capabilityVSAvoidtime to update consumer references
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent introduces an alias as an intermediary between the old module name and the new module name. The alias maintains a reference to the original module, allowing consumers to continue using the old name while the system transparently redirects to the new module. This mediator approach resolves the contradiction by enabling renaming without requiring consumers to update their references.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If multiple names are declared for a single module, then renaming becomes possible, but the programming environment and runtime must track multiple names which is resource-intensive and error-prone

Engineering Contradiction:
Improvemultiple name supportVSAvoidname tracking complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent extracts the name mapping functionality from the core programming environment and runtime system, placing it instead in the alias declaration mechanism. Rather than requiring the entire system to track multiple names, only the alias structure needs to maintain the mapping between old and new names. This extraction reduces the complexity burden on the programming environment while still enabling multiple name support.

Inventive Principle:
Principle #2Taking out (Extraction)

3Reliability

If every consumer reference to an old module name is edited, then the module rename succeeds, but the process is time-consuming and expensive

Engineering Contradiction:
Improvemodule reference correctnessVSAvoidrenaming operation efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent performs preliminary action by pre-declaring aliases that map old module names to new module names before the actual renaming occurs. This allows the system to be prepared in advance with the mapping relationships, so when renaming happens, consumers can immediately use the old names through the pre-configured aliases without requiring any changes to their code. This preliminary setup maintains reliability while dramatically improving productivity.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS10346225B2Synthesized modules for module renaming
Publication Date: 2019.07.09 ORACLE INT CORP
  • US10346225B2 patent drawing
  • US10346225B2 patent drawing
  • US10346225B2 patent drawing

AI summary

Techniques for renaming a module in a module system are disclosed. It is determined that a first module is declared with a corresponding first module name. It is determined that the first module is associated with a second module name. Responsive to determining that the first module is associated with the second module name: a second module declared with the second module name is synthesized, and a dependency of the second module, with the second module name, is declared on the first module with the first module name.