DAG Dependency Graph for Cross-Project Change Visibility

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Software development environments face challenges in managing cross-project dependencies, leading to inefficiencies in tracking changes to components, resulting in compile-time and run-time errors, and inefficient storage and deployment of components.

Innovation Solution

A directed acyclic graph (DAG) project dependency data structure is used to represent dependencies between projects and components, ensuring dependent projects reflect the latest versions of components, and a recursive algorithm for searching type information optimizes resource management and change visibility.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If a component is built in a separate project, then the application's project can reference the component, but the application's project cannot see or reference changes to the component until it is rebuilt

Engineering Contradiction:
Improvecomponent reusabilityVSAvoidchange visibility
Core Design Contradiction:
Ease of manufactureVSLoss of information

Solution Approach 1:

The system implements a feedback mechanism by monitoring file system changes in real-time. When a component source file is modified, the IDE detects the change through file system events and automatically updates the dependent application project, ensuring change visibility without requiring a full rebuild.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The system performs preliminary actions by pre-compiling components and maintaining compiled versions in the IDE's workspace before they are actually needed. This allows the IDE to quickly provide syntax checking and completion features without waiting for explicit rebuild operations.

Inventive Principle:
Principle #10Preliminary action

2Loss of information

If the application developer includes the component directly in the application's project, then immediate visibility into changes to the component is provided, but dependencies between the component and the application are created thereby reducing the ability to reuse the component in other applications

Engineering Contradiction:
Improvechange visibilityVSAvoidcomponent reusability
Core Design Contradiction:
Loss of informationVSAdaptability or versatility

Solution Approach 1:

The system segments the component into two distinct representations: the source component files that remain separate and reusable, and the compiled component representation that is included in the application project. This segmentation allows the application to have immediate access to component changes while the source component remains independently reusable.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system creates a compiled copy of the component that is included in the application project. This copy provides immediate visibility into changes while the original source component remains separate and reusable in other applications. The copy is automatically updated when the source component changes.

Inventive Principle:
Principle #26Copying

3Loss of information

If components are copied into all the projects that use them, then each project has immediate access to the component, but storage efficiency is reduced and deployment of component changes is complicated

Engineering Contradiction:
Improvechange visibilityVSAvoidstorage efficiency
Core Design Contradiction:
Loss of informationVSQuantity of substance

Solution Approach 1:

The system merges multiple project dependencies on the same component into a single shared compiled representation in the IDE workspace. Instead of maintaining separate copies in each project, the compiled component is stored once and shared across all dependent projects, reducing storage overhead while maintaining immediate change visibility.

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS7757212B2System and method for managing cross project dependencies at development time
Publication Date: 2010.07.13 ORACLE INT CORP
  • US7757212B2 patent drawing
  • US7757212B2 patent drawing
  • US7757212B2 patent drawing

AI summary

A method for responding to a change in source code, said method comprising: interconnecting a plurality of nodes to form a graph data structure wherein the graph embodies at least one dependency between a plurality of software projects; traversing the graph to identify dependent code affected by the change; evaluating the identified dependent code; and wherein the changed source code is from a first software project and the identified dependent code is from a second software project.