Software Change Analytics for Code Complexity Tracking

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Managing software code changes across multiple teams in complex software development projects is challenging due to cascading effects and increased complexity, making it difficult to track and resource effectively.

Innovation Solution

A change analytics system that determines, tracks, and analyzes software code changes by comparing versions, calculating cyclomatic complexity, and assessing divergence complexity, enabling resource allocation and budgeting across teams.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If multiple teams concurrently develop software code segments, then development productivity increases, but code change tracking and management complexity increases

Engineering Contradiction:
Improvedevelopment productivityVSAvoidcode change tracking complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system segments code changes into discrete units of analysis by identifying specific code blocks that are added, modified, or removed between versions. Each code block change is tracked independently with metadata including location, type of change, and affected elements, enabling granular tracking without overwhelming complexity

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system introduces an intermediary analysis layer that automatically compares code versions and generates structured change information. This intermediary process translates raw code differences into meaningful metrics about code block changes, cascading effects, and complexity variations, shielding developers from the underlying tracking complexity

Inventive Principle:
Principle #24Intermediary (Mediator)

2Measurement precision

If code changes are tracked in detail, then change analysis precision improves, but processing time and computational resources increase

Engineering Contradiction:
Improvechange analysis precisionVSAvoidprocessing time
Core Design Contradiction:
Measurement precisionVSLoss of time

Solution Approach 1:

The system applies local quality analysis by focusing detailed examination only on specific code blocks that actually changed between versions. Rather than analyzing entire codebases, the system identifies modified code blocks and their immediate context, providing precise change analysis where needed while avoiding unnecessary processing of unchanged code

Inventive Principle:
Principle #3Local quality

Solution Approach 2:

The system monitors changes in code complexity parameters such as cyclomatic complexity before and after modifications. By tracking parameter changes rather than performing exhaustive code analysis, the system achieves precise measurement of code evolution with reduced computational overhead

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS11809866B2Software change tracking and analysis
Publication Date: 2023.11.07 ELECTRONIC ARTS INC
  • US11809866B2 patent drawing
  • US11809866B2 patent drawing
  • US11809866B2 patent drawing

AI summary

A change tracking and analytics system and method receives software code blocks from one or more repositories of software related to a software project, such as a new video game. Changes associated with software code blocks, such as relative to previous versions of the software code blocks, may be determined and logged. Additionally, various analytics, such as metrics associated with complexity, divergence from a master version of software code blocks, and/or any cascading effects of the software code blocks may be generated and stored in association with the software code blocks. The change information and analytics may then be used to generate any variety of reports indicating complexity, divergence, or the like over time, information related to software code blocks, and/or information related to behavior of software teams. The change information may also be used to make changes to allocated resources, such as quality assurance resources and/or software engineering resources.