Software Code Part Ranking via Change History Recency

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing software code development and maintenance approaches struggle to effectively prioritize among different parts of the code, leading to sub-optimal prioritization, increased iterations, and higher hardware utilization, particularly in large codebases, as they often focus on the current state rather than development and maintenance history, and may not generalize to other codebases.

Innovation Solution

A method that ranks software code parts by determining constituent metrics such as code complexity, change frequency, architectural significance, and developer fragmentation, using a change history register, and scales these metrics based on alteration recency, to identify candidate parts for alteration, thereby optimizing prioritization and hardware utilization.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If traditional code analysis approaches are used to prioritize software code parts, then code quality assessment is possible, but the approach does not generalize to other software code bases and requires extensive training data

Engineering Contradiction:
Improvegeneralization to other code basesVSAvoidtraining data requirements
Core Design Contradiction:
Adaptability or versatilityVSQuantity of substance

Solution Approach 1:

The system uses the software code's own change history register as training data, eliminating the need for external training datasets. The code base serves itself by utilizing its inherent historical alteration records to train the machine learning model for prioritization.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The change history register pre-stores all alteration information including timestamps, developer identities, and modification details before analysis is needed. This preliminary recording of data eliminates the need for extensive external training data collection.

Inventive Principle:
Principle #10Preliminary action

2Productivity

If software code parts are prioritized without considering historical data, then analysis is simpler, but prioritization is sub-optimal leading to more iterations and versions

Engineering Contradiction:
Improvedevelopment iterationsVSAvoidanalysis complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system implements feedback by analyzing the change history register which contains historical alteration information. This feedback loop uses past modification patterns to inform current prioritization decisions, reducing unnecessary iterations.

Inventive Principle:
Principle #23Feedback

Solution Approach 2:

The system adds a temporal dimension by incorporating time indications from the change history register into the analysis. This transforms the analysis from a static code examination to a dynamic historical pattern recognition task.

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

3Productivity

If all software code parts are analyzed with equal priority, then comprehensive coverage is achieved, but hardware utilization increases and development efficiency decreases

Engineering Contradiction:
Improvedevelopment efficiencyVSAvoidhardware utilization
Core Design Contradiction:
ProductivityVSUse of energy by moving object

Solution Approach 1:

The system applies local quality by determining different priority levels for different code parts based on their historical change patterns. Instead of uniform analysis, each code part receives customized prioritization based on its specific alteration recency and frequency characteristics.

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The system changes parameters by scaling constituent metrics based on alteration recency. This transforms static code metrics into dynamic prioritization scores that reflect the temporal aspects of code modification history.

Inventive Principle:
Principle #35Parameter changes

4Measurement precision

If code prioritization focuses on current state only, then analysis is faster, but important historical context is lost leading to poor prioritization decisions

Engineering Contradiction:
Improveprioritization accuracyVSAvoidanalysis time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The change history register performs preliminary action by pre-recording all alteration information including timestamps and developer identities. This preliminary data collection enables comprehensive historical analysis without increasing real-time analysis time.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system adds temporal dimensionality by incorporating time indications from the change history register. This transforms the analysis from examining only the current code state to analyzing the evolution of code over time, improving prioritization accuracy.

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

Data Source

PatentUS11487535B2Ranking of software code parts
Publication Date: 2022.11.01 CODESCENE AB
  • US11487535B2 patent drawing
  • US11487535B2 patent drawing

AI summary

A method of ranking a plurality of parts of a software code is disclosed for identification of one or more candidate parts of the software code for alteration. The software code is associated with a change history register indicative of previous alterations of the parts of the software code. The method includes (for each of the plurality of parts of the software code) determining a plurality of constituent metrics of the part of the software code by parsing the change history register and the software code determining an alteration recency metric for the part of the software code based on the time indications of the change history register, and scaling one or more of the constituent metrics based on the alteration recency metric.