Conditional Software Component Compilation via Persistent Data Store

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing multi-component software products lack efficient mechanisms for dynamically detecting and utilizing complementary components during installation, leading to manual management of connections and potential software failure upon component uninstallation or alteration.

Innovation Solution

A system employing a persistent data store to record component installation status, enabling conditional compilation and automatic dependency checking, ensuring components are recompiled and updated when dependencies change, allowing seamless operation even if complementary components are not installed.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If a persistent data store with automatic dependency checking is implemented, then the software can automatically detect and adapt to component changes, but the system complexity increases

Engineering Contradiction:
Improveautomatic dependency detectionVSAvoidsystem architecture
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

A persistent data store acts as an intermediary between components, automatically recording installation status and enabling dependency detection without direct component-to-component communication. This mediator approach resolves the contradiction by providing automatic adaptability through a centralized, manageable mechanism rather than complex distributed detection logic.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

Components are designed to conditionally depend on the persistent data store, which automatically tracks their installation status. The system serves itself by having components self-detect dependencies through the data store without requiring external management, thus achieving adaptability while keeping the mechanism simple and self-maintaining.

Inventive Principle:
Principle #25Self-service

2Reliability

If conditional compilation is used to enable components to adapt to missing dependencies, then the software maintains functionality, but the compilation and build process becomes more complex

Engineering Contradiction:
Improvesoftware functionalityVSAvoidcompilation process
Core Design Contradiction:
ReliabilityVSEase of manufacture

Solution Approach 1:

The persistent data store is updated in advance during component installation to record the presence and status of components. This preliminary action allows the compilation process to simply check the data store rather than implementing complex conditional logic, maintaining reliability while simplifying the build process.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

Components use conditional compilation directives that check parameters stored in the persistent data store (installation status, version information). By changing the approach from hard-coded conditional logic to data-driven parameter checking, the system maintains functionality while making the compilation process more manageable and flexible.

Inventive Principle:
Principle #35Parameter changes

3Ease of operation

If the installation places a catalog of all product components on the customer's system, then the installer can identify installed components, but the customer can detect what other components are available

Engineering Contradiction:
Improvecomponent identificationVSAvoidproduct configuration secrecy
Core Design Contradiction:
Ease of operationVSLoss of information

Solution Approach 1:

The persistent data store extracts and stores only the necessary installation status information in a controlled manner. Instead of placing a comprehensive catalog that reveals all available components, the system extracts and records only what is needed for dependency management, maintaining ease of operation for installed components while protecting product configuration information.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The persistent data store serves as an intermediary that selectively exposes component information. It provides easy access to installation status for operational purposes while controlling what information about available components is revealed to customers, thus balancing ease of operation with information protection.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Device complexity

If manual management of component connections is required, then the system remains simple, but the customer must manually manage connections and the risk of software failure increases

Engineering Contradiction:
Improveconnection management systemVSAvoidsoftware operation
Core Design Contradiction:
Device complexityVSReliability

Solution Approach 1:

The persistent data store enables components to automatically detect their dependencies and adapt to the presence or absence of other components. This self-service mechanism eliminates the need for manual connection management while ensuring software reliability, as the system automatically adjusts to component changes without human intervention.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The persistent data store provides continuous feedback about component installation status to the software system. This feedback mechanism enables automatic dependency management and adaptation, improving reliability by ensuring the system always operates with accurate knowledge of available components without requiring complex manual management.

Inventive Principle:
Principle #23Feedback

Data Source

PatentUS8239855B2Component-based software installation
Publication Date: 2012.08.07 ORACLE INT CORP
  • US8239855B2 patent drawing
  • US8239855B2 patent drawing
  • US8239855B2 patent drawing

AI summary

A system and method for automated management of a multi-component software installation. The software product comprises multiple components that can operate independently, but which may operate better (e.g., with more or different functionality) if able to call another component (a “supplying” component). A persistent data store records the installation status of the components (e.g., as static Boolean values). Each installed component that depends on another component (i.e., can benefit from calling an element of the other component) is coded to compile conditionally, based on whether the supplying component is installed. If installed, the supplying component can be linked at compile time; if the supplying component is not installed, the installed component compiles and runs without the benefit of the supplying component.