Automated Software Verification Service Parallel Task Splitting
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Verifying software updates is computationally expensive and time-consuming, requiring repeated formal proofs for each new version, which is inefficient and labor-intensive, especially when using specialized verification tools.
Innovation Solution
A distributed computing system utilizing cloud resources to perform formal and other types of software verification through a generic API, allowing verification tasks to be split among multiple virtual resources, thereby reducing verification time and automating the process within a continuous integration pipeline.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Reliability
If formal verification is performed on each new version of software using specialized verification tools, then safety guarantees are maintained, but verification time and computational cost increase significantly
Solution Approach 1:
The patent divides the software verification process into multiple independent verification tasks that can be executed in parallel. Each verification task processes a specific aspect or module of the software, allowing the overall verification to be segmented across multiple computational units, thereby reducing total verification time while maintaining comprehensive safety checks
Solution Approach 2:
The patent transitions from sequential verification to parallel verification by adding the dimension of concurrent execution. Multiple verification tasks are executed simultaneously across distributed computational resources, fundamentally changing the time dimension of the verification process from linear to parallel, thus reducing verification time without compromising reliability
2Reliability
If formal verification is performed on each new version of software, then safety guarantees are maintained, but computational resources and complexity increase
Solution Approach 1:
The patent creates a universal verification framework that can handle multiple verification tasks through a single distributed system. The system is designed to be multi-functional, accommodating various types of verification tasks (safety properties, liveness properties, invariants) within a unified architecture, thereby managing complexity through standardization rather than proliferation of specialized tools
Solution Approach 2:
The patent introduces an intermediary layer (the distributed verification service) that mediates between the software under verification and the complex verification tasks. This intermediary abstracts the complexity of formal verification methods, presenting a simplified interface to users while managing the intricate computational processes in the background, thus reducing perceived complexity
3Measurement precision
If verification is performed manually for each software update, then thorough checking is possible, but productivity and speed of deployment decrease
Solution Approach 1:
The patent implements self-service verification where the system automatically initiates, executes, and completes verification tasks without human intervention. The distributed verification service autonomously manages task scheduling, resource allocation, and result aggregation, enabling thorough verification to occur automatically as part of the software update process, thus maintaining precision while dramatically improving productivity
Solution Approach 2:
The patent establishes continuous verification as an integral part of the software development lifecycle. Verification tasks are continuously executed alongside software updates in an automated pipeline, ensuring that thorough checking occurs without interruption to the development flow, thereby maintaining verification precision while enabling rapid and continuous software deployment
Data Source
AI summary
A method for verifying source code for a program includes determining that a new version of the source code is available. One or more verification tools are determined to use for verification of the new version of the source code from a verification specification associated with the source code. A plurality of verification tasks to perform for the verification of the new version of the source code are automatically determined from the verification specification associated with the source code. The plurality of verification tasks for the new version of the source code are automatically performed using the one or more verification tools. A determination is then made as to whether the new version of the source code is verified.


