Verifiable Software Transition via Behavioral Modeling

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Legacy software, particularly in cloud services, becomes increasingly difficult to maintain and improve due to its complexity, making it challenging to guarantee software behavior and predict outcomes, which hinders successful configuration and evolution.

Innovation Solution

Implementing a correct-by-construction software development process that generates verifiably correct software through formal semantics and automated reasoning, ensuring mathematical precision and certainty in meeting behavioral objectives, with a behavioral model that serves as a basis for generating a drop-in replacement for legacy software.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If legacy software is maintained and improved over time, then functionality evolves to meet new requirements, but complexity increases making it difficult to maintain and predict behavior

Engineering Contradiction:
Improvesoftware functionalityVSAvoidsoftware complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent segments the software transition process into distinct phases: generating a behavioral model from legacy code, creating a verifiable specification, implementing new code that satisfies the specification, and verifying correctness. This segmentation allows complexity to be managed systematically rather than monolithically.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces a behavioral model as an intermediary representation between the legacy software and the new verifiable code. This intermediary captures the essential behavior of the legacy system in a formal, manageable format that can be used to generate correct-by-construction code without directly manipulating the complex legacy codebase.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If new programming language tools are used to enable provable correctness, then software reliability improves, but these tools cannot add provable correctness to existing legacy code

Engineering Contradiction:
Improvesoftware correctnessVSAvoidcode transitionability
Core Design Contradiction:
ReliabilityVSEase of manufacture

Solution Approach 1:

The patent performs preliminary actions by first generating a behavioral model from the legacy code and then creating a verifiable specification before writing the new correct-by-construction code. This preliminary formalization enables provable correctness to be added to legacy systems through a structured transition process rather than attempting to annotate existing code.

Inventive Principle:
Principle #10Preliminary action

3Measurement precision

If formal semantics and automated reasoning are used to generate verifiable code, then mathematical precision and certainty are achieved, but development process complexity increases

Engineering Contradiction:
Improvebehavioral specification precisionVSAvoiddevelopment process complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent replaces manual, ad-hoc code verification with automated reasoning tools that mechanically verify the correctness of generated code against the formal specification. This substitution of manual verification with automated mechanical checking achieves mathematical precision while managing the complexity through automation rather than human analysis.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

Data Source

PatentUS11797317B1Transitioning legacy software to be provably correct
Publication Date: 2023.10.24 AMAZON TECH INC
  • US11797317B1 patent drawing
  • US11797317B1 patent drawing
  • US11797317B1 patent drawing

AI summary

A software development process may support a transition from unverifiable, legacy code to verifiable code that is provably correct by construction. A behavioral model may be developed for legacy software that includes various behavioral criteria. Then, source code implemented in a verifiable language may be verified using the behavioral model to perform verification. Once the source code is complete and verified, a new verified implementation may be compiled. The verified implementation may then be executed, along with the legacy software, to identify differences in behavior which are fed back into the behavioral model and subsequently into the new source code. This process may then be iterated with the verifiable code being deployable once behavioral differences are resolved.