Self-Mending Software Builder for Automated Code Reversion

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional software build systems lack a self-mending capability, requiring manual intervention to identify and revert problematic code changes, which leads to resource consumption and delays in software development due to the inability to automatically revert to a previous working version upon detecting test failures.

Innovation Solution

A self-mending software builder that identifies offending and dependent code changes, reverts them, and generates revised code to ensure the application's master copy remains functional, facilitating automated testing and code review processes.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If testing is performed on each code change before merging, then the reliability of the application is improved, but the productivity and time consumption worsen

Engineering Contradiction:
Improveapplication reliabilityVSAvoidsoftware development productivity
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system performs preliminary testing on code changes before they are merged into the main application. The build component automatically tests each code change in isolation prior to integration, identifying problematic changes early in the process before they can affect the overall application stability.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system extracts and isolates individual code changes for separate testing. By separating each code change into an independent testable unit, the system can evaluate them individually without requiring full application retesting, thus maintaining reliability while improving productivity.

Inventive Principle:
Principle #2Taking out (Extraction)

2Ease of operation

If manual intervention is used to identify and revert problematic code changes, then the ease of operation is maintained, but the loss of time and productivity worsen

Engineering Contradiction:
Improveoperational simplicityVSAvoidtime for identifying and reverting code changes
Core Design Contradiction:
Ease of operationVSLoss of time

Solution Approach 1:

The build system performs self-service by automatically identifying problematic code changes through testing, determining which changes caused failures, and reverting those changes without requiring manual intervention. The system autonomously maintains the application in a working state by detecting and correcting its own issues.

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The system implements automatic feedback loops where test results from code changes are immediately analyzed, and failing changes are automatically reverted. This closed-loop feedback mechanism eliminates manual review time while maintaining operational simplicity through automated decision-making based on test outcomes.

Inventive Principle:
Principle #23Feedback

3Productivity

If multiple code changes are merged before testing, then the productivity is improved, but the reliability and ability to identify specific problematic changes worsen

Engineering Contradiction:
Improvemerging speedVSAvoidapplication stability
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The system segments the testing process by evaluating each code change individually before merging, rather than testing multiple changes together. This segmentation allows rapid merging to proceed while maintaining reliability through isolated pre-testing of each change unit.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Preliminary testing is performed on each code change before it is merged with others. This preliminary action ensures that only validated changes are integrated, maintaining application stability while allowing multiple changes to be merged efficiently since each has already been verified in isolation.

Inventive Principle:
Principle #10Preliminary action

4Productivity

If automated testing and self-mending is implemented, then the productivity and time efficiency are improved, but the device complexity increases

Engineering Contradiction:
Improvesoftware development efficiencyVSAvoidbuild system complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The build component is designed as a multi-functional universal system that performs multiple tasks: testing code changes, identifying problematic changes, determining dependencies between changes, and reverting failures. By consolidating these functions into a single automated build system, productivity improves without proportionally increasing overall system complexity.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The build system provides self-service capabilities by automatically performing all testing, analysis, and reverting operations without external intervention. This automation eliminates manual labor and significantly improves productivity, while the self-service nature actually simplifies operation despite the underlying complexity of the automated processes.

Inventive Principle:
Principle #25Self-service

Data Source

PatentUS10175975B2Self-mending software builder
Publication Date: 2019.01.08 RED HAT ISRAEL
  • US10175975B2 patent drawing
  • US10175975B2 patent drawing
  • US10175975B2 patent drawing

AI summary

Implementations of the disclosure provide for a self-amending software builder. A method of the disclosure includes performing at least one test on an application having source code that is stored in a source code repository and has incurred a plurality of code changes by a plurality of users; detecting a failure of the application during the test; identifying, using a processing device, an offending code change of the plurality of code changes corresponding to the failure and at least one dependent code change of the plurality of code changes that depends on the offending code change; and updating, using the processing device, a master copy of the application in view of at least one of the offending code change or the dependent code change.