Graph Data Structure for Software Development Item Relationships

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Software development teams face challenges in coordinating efforts due to the difficulty in determining which developers are familiar with specific code pieces, as the history of code modifications is often scattered across various sources like emails, source code stores, and bug tracking databases, making it hard to find relevant information efficiently.

Innovation Solution

A graph data structure is used to represent software development items and their relationships, allowing for implicit queries and graph browsing, which enables the identification of relevant developers and code history by connecting nodes and edges representing different development items and their interactions.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of information

If developers consult multiple sources (emails, source code store, bug tracking database) to find code history, then they can access comprehensive information, but the time required to sift through these sources increases significantly

Engineering Contradiction:
Improvecode history informationVSAvoidtime to find code history
Core Design Contradiction:
Loss of informationVSLoss of time

Solution Approach 1:

The patent combines multiple disconnected data collections (emails, source code store, bug tracking database) into a unified graph data structure that represents software development items and their relationships. This merging allows developers to query all information sources through a single interface, retrieving comprehensive code history information without manually sifting through multiple separate systems, thus resolving the contradiction between information completeness and search time

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The graph data structure acts as an intermediary layer between developers and the underlying data collections. Instead of directly querying multiple sources, developers interact with the graph which automatically retrieves and synthesizes information from emails, source code stores, and bug tracking databases, significantly reducing the time required to find code history while maintaining comprehensive information access

Inventive Principle:
Principle #24Intermediary (Mediator)

2Loss of information

If a project historian is assigned to track code history, then developers can consult someone knowledgeable, but the historian cannot know entire project history and may leave the team

Engineering Contradiction:
Improvecode history knowledgeVSAvoidavailability of code history knowledge
Core Design Contradiction:
Loss of informationVSReliability

Solution Approach 1:

The patent creates a machine-readable copy of the code history information by automatically generating a graph data structure that mirrors the relationships and history stored in the underlying data collections. This digital copy encapsulates the knowledge that would otherwise reside in the historian's mind, ensuring the information persists independently of any individual developer's presence on the team

Inventive Principle:
Principle #26Copying

Solution Approach 2:

The system enables self-service by allowing developers to directly query the graph data structure for code history information without needing to consult a human historian. The graph automatically provides the needed information about code relationships, modifications, and developer involvement, making the knowledge accessible and reliable without depending on any single person's availability or memory

Inventive Principle:
Principle #25Self-service

3Adaptability or versatility

If developers work on large software projects with many tasks, then project complexity increases, but coordinating efforts and finding familiar developers becomes more difficult

Engineering Contradiction:
Improveproject scopeVSAvoiddeveloper coordination
Core Design Contradiction:
Adaptability or versatilityVSEase of operation

Solution Approach 1:

The patent adds a new dimension to code organization by creating a graph-based representation that visualizes relationships between software development items across multiple dimensions (authorship, modification history, related bugs, etc.). This dimensional transformation allows developers to navigate complex projects by exploring relationships in different directions, making it easier to find relevant developers and understand code contexts in large-scale projects

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

Data Source

PatentUS7739653B2Representing software development item relationships via a graph
Publication Date: 2010.06.15 MICROSOFT TECHNOLOGY LICENSING LLC
  • US7739653B2 patent drawing
  • US7739653B2 patent drawing
  • US7739653B2 patent drawing

AI summary

Software development items can be represented in a graph data structure. Relationships between the represented items can be detected and reflected in the graph data structure. Queries can be run against the data structure to determine which software development items are related to each other. Implicit query can be implemented in a software development context. A graph browser can present panes showing related items.