Software Code Critical Part Identification via Temporal Coupling

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Large software code files, often maintained by multiple developers, are difficult to manage and comprehend due to their complexity and lack of holistic evolution tracking, leading to challenges in identifying potential risks and critical parts.

Innovation Solution

Analyzing historic contributions and patterns of software code changes over time, including temporal coupling and developer involvement, to identify critical parts and suggest suitable developers for updates, while utilizing ticket identifiers to refine these analyses.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If multiple developers contribute to a single software code file, then the software code benefits from collaborative development and improved functionality, but the code becomes difficult to maintain and comprehend due to lack of holistic evolution tracking

Engineering Contradiction:
Improvecollaborative development capabilityVSAvoidcode maintainability
Core Design Contradiction:
Adaptability or versatilityVSEase of operation

Solution Approach 1:

The system implements feedback by continuously monitoring and analyzing code change patterns, automatically generating insights about critical parts and temporal couplings. This feedback loop provides maintainability information without interfering with the collaborative development process, allowing developers to benefit from both collaboration and automated code management insights.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The patent introduces an intermediary analysis system that sits between multiple developers and the codebase. This intermediary automatically tracks evolution patterns, identifies critical parts, and provides structured information about code relationships, mediating the complexity that arises from multiple contributors without requiring direct coordination overhead.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If developers are assigned to update critical parts of software code, then code quality and reliability improve, but identifying the right developers becomes time-consuming without holistic evolution tracking

Engineering Contradiction:
Improvecode qualityVSAvoiddeveloper identification time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The system performs preliminary analysis of code evolution patterns continuously in the background, pre-identifying critical parts and their historical maintainers before any update is needed. When a code update is required, the system can immediately suggest appropriate developers based on pre-computed temporal coupling data, eliminating the need for time-consuming manual identification at the moment of need.

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If large software code files are maintained without automated analysis, then development flexibility is preserved, but potential risks and critical parts cannot be effectively identified

Engineering Contradiction:
Improvedevelopment flexibilityVSAvoidrisk identification capability
Core Design Contradiction:
Adaptability or versatilityVSDifficulty of detecting and measuring

Solution Approach 1:

The system enables self-service by automatically analyzing code changes and identifying critical parts without requiring manual intervention or disrupting the natural development workflow. The codebase essentially analyzes itself through automated pattern recognition, allowing risks to be detected while preserving developer flexibility and autonomy.

Inventive Principle:
Principle #25Self-service

Data Source

PatentEP3497612B1Method for identifying critical parts in software code
Publication Date: 2022.07.27 CODESCENE AB
  • EP3497612B1 patent drawingFigure 1~2
  • EP3497612B1 patent drawingFigure 3~6
  • EP3497612B1 patent drawingFigure 7

AI summary

The inventive concept relates to a method for identifying critical parts in software code comprised in a number of software code files. The method comprises fetching at least two revisions of the software code, wherein the at least two revisions comprises a first revision and a second revision, the second revision being a latter revision. The method further comprises comparing the second revision to the first revision in order to identify at least a first and a second segment of software code in the second revision that have been changed; fetching at least a first and second timestamp correlated with the change of the at least first and second segment of software code respectively; determining a time difference between the change of the at least first and second segment of software code based on the at least first and second timestamp; if said time difference is within a predetermined range, assigning a temporal coupling between the at least first and second segment of software code; and if said temporal coupling has been assigned, identifying the first and/or second segment of software code as critical parts.