Self-Healing Software System Using Emulator-Based Vaccine

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current methods for handling software failures, such as proactive approaches and fault-tolerance schemes, often result in reduced system performance, user interaction issues, and inability to maintain high availability, especially in environments like e-commerce web servers, due to their reliance on user intervention and resource-intensive solutions.

Innovation Solution

A self-healing system that automatically detects and repairs software failures by emulating and updating application code using sensors and an emulator-based vaccine, allowing for immediate recovery from faults without user intervention and minimizing performance impact.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If proactive approaches and fault-tolerance schemes are used to make code dependable, then software reliability is improved, but system performance deteriorates and user interaction becomes monotonous

Engineering Contradiction:
Improvesoftware reliabilityVSAvoidsystem performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The system implements automatic self-healing capabilities where the application monitors itself for faults and automatically recovers without user intervention. The fault detection mechanism continuously checks for errors, and when faults are detected, the system automatically initiates recovery procedures including state restoration and thread management, eliminating the need for manual user actions while maintaining high performance

Inventive Principle:
Principle #25Self-service

Solution Approach 2:

The system performs preliminary actions by maintaining backup state information and pre-configured recovery mechanisms before faults occur. When a fault is detected, the system can immediately restore from saved state without requiring user intervention, thus improving reliability without impacting ongoing system performance

Inventive Principle:
Principle #10Preliminary action

2Reliability

If fault-tolerance schemes with voting among service instances are implemented, then software reliability is improved, but device complexity increases

Engineering Contradiction:
Improvesoftware reliabilityVSAvoidsystem complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system extracts the complexity of fault tolerance from the application logic and implements it as a separate monitoring and recovery mechanism. Instead of requiring multiple service instances with voting logic embedded in the application, the system uses a dedicated fault detection and recovery layer that operates independently, simplifying the overall system architecture while maintaining reliability

Inventive Principle:
Principle #2Taking out (Extraction)

3Reliability

If server applications are restarted to recover from faults, then software reliability is improved, but service availability deteriorates

Engineering Contradiction:
Improvesoftware reliabilityVSAvoidservice availability
Core Design Contradiction:
ReliabilityVSDuration of action of stationary object

Solution Approach 1:

The system segments the recovery process by maintaining separate state information for different components and threads of the server application. When a fault is detected in a specific component, only that component's state is restored while other components continue operating, allowing partial recovery without complete server restart and thus maintaining service availability

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system implements dynamic recovery where the application can adjust its operation mode based on detected faults. Instead of static restart procedures, the system dynamically modifies thread execution, state restoration, and resource allocation in real-time based on the nature and location of faults, enabling continuous service operation while recovering from errors

Inventive Principle:
Principle #15Dynamics

4Reliability

If antivirus programs are installed on mobile platforms to protect applications, then software reliability is improved, but device complexity increases and system performance deteriorates

Engineering Contradiction:
Improveapplication securityVSAvoidplatform complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The system merges the fault detection and protection functionality directly into the application runtime environment rather than using separate antivirus programs. The monitoring mechanisms are integrated at the operating system and application levels, combining security, reliability, and performance monitoring into a unified system that does not require additional standalone software

Inventive Principle:
Principle #5Merging (Combining)

Data Source

PatentUS7490268B2Methods and systems for repairing applications
Publication Date: 2009.02.10 THE TRUSTEES OF COLUMBIA UNIV IN THE CITY OF NEW YORK
  • US7490268B2 patent drawing
  • US7490268B2 patent drawing
  • US7490268B2 patent drawing

AI summary

In accordance with the present invention, computer implemented methods and systems are provided that allow an application to automatically recover from software failures and attacks. Using one or more sensors, failures may be detected in the application. In response to detecting the failure, the portion of the application's code that caused the failure is isolated. Using the input vectors that caused the failure, information regarding the failure (e.g., the type of failure), a core dump file (e.g., stack trace), etc., an emulator-based vaccine that repairs the failure is constructed. In response to verifying that the vaccine repaired the failure, the application is automatically updated with the emulator-based vaccine without user intervention. Application community features that efficiently use the resources available in software monoculture is also provided. An application community may be defined that includes a plurality of devices and the application's code may be divided into smaller portions of code, which are assigned to each of the plurality of devices for monitoring. Each device also notifies the other devices of the failure.