Program Invocation Ordering via Dependency Files

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current systems lack effective techniques for managing the order in which programs are started and closed, particularly when invoked programs result in calls to numerous dependent programs, leading to inefficiencies and potential conflicts.

Innovation Solution

A dependency file is maintained and updated to track called programs, with a startup order file generated to determine the correct invocation sequence, ensuring called programs are initiated before calling programs, and the reverse order is used for program closure.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If programs are started and closed without a defined ordering mechanism, then system operation is simpler, but program conflicts and instability increase

Engineering Contradiction:
Improvesystem stabilityVSAvoidordering management complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system performs preliminary action by pre-calculating and storing the execution order of programs in a dependency file before actual program execution. This ordering information is prepared in advance based on program dependencies, ensuring that when programs are launched, they follow the predetermined safe sequence, thereby preventing conflicts and improving stability without adding runtime complexity.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The dependency file acts as an intermediary mechanism between the program launcher and the programs themselves. It mediates the coordination by storing and providing the execution order information, allowing the launcher to simply read the pre-computed order rather than managing complex real-time scheduling logic, thus improving reliability while keeping the launcher simple.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If called programs are invoked before calling programs, then program execution is more reliable, but startup time increases

Engineering Contradiction:
Improveprogram execution reliabilityVSAvoidstartup time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs preliminary action by pre-calculating the execution order based on program dependencies and storing it in the dependency file. This allows the launcher to simply read the pre-determined order rather than performing complex real-time analysis, reducing startup time while ensuring called programs are executed before calling programs.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system changes the parameter of execution ordering by using a predefined sequence stored in the dependency file. Instead of dynamically determining execution order, the system uses a static pre-computed order that prioritizes called programs, thereby ensuring reliability while minimizing the time overhead of order determination.

Inventive Principle:
Principle #35Parameter changes

3Reliability

If a dependency file is processed to determine program execution order, then program conflicts are prevented, but system complexity increases

Engineering Contradiction:
Improveprogram conflict preventionVSAvoiddependency management complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The dependency file is processed in advance to determine execution order before program execution begins. This preliminary processing of dependency information allows the actual program execution to simply follow the pre-determined sequence, preventing conflicts without requiring complex real-time dependency resolution during execution.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The dependency file serves as an intermediary that encapsulates the complexity of dependency management. It stores the processed dependency information and execution order, allowing the launcher to access this information directly without needing to implement complex dependency resolution logic, thus preventing conflicts while keeping the launcher simple.

Inventive Principle:
Principle #24Intermediary (Mediator)

4Reliability

If the reverse order is used for program closure, then resource cleanup is more reliable, but shutdown time increases

Engineering Contradiction:
Improveresource cleanup reliabilityVSAvoidshutdown time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system applies inversion by using the reverse of the execution order for program closure. Since programs were started in a specific sequence based on dependencies, closing them in reverse order ensures that called programs are terminated before calling programs, guaranteeing proper resource cleanup. This inverted approach maintains reliability while minimizing shutdown time by avoiding unnecessary waiting.

Inventive Principle:
Principle #13The other way round (Inversion)

Data Source

PatentUS9575803B2Determining an ordering to use to open and close programs that call other programs
Publication Date: 2017.02.21 MAPLEBEAR INC
  • US9575803B2 patent drawing
  • US9575803B2 patent drawing
  • US9575803B2 patent drawing

AI summary

Provided are a computer program product, system, and method for determining an ordering to use to open and close programs that call other programs. A dependency file indicates for each calling program at least one called program called by the calling program, wherein a called program that calls another program also comprises a calling program. The dependency file is processed to determine an order in which the called programs are called by the calling programs. A determination is made from the order the called programs called by an invoked calling program. The determined called programs are invoked according to the order. The calling program is invoked in response to invoking the determined called programs. The order indicates the order in which the calling programs and the called programs are invoked so the called programs are invoked before invoking the calling programs that invoke the called programs.