Finite State Machine Model for Software Defect Detection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Agile software engineering methodologies and rapid development lifecycles make software quality assurance challenging due to the combinatorial nature of model checking algorithms, which require excessive memory and processing power, leading to inefficiencies in detecting defects in software systems.

Innovation Solution

A method and system that generate a finite state machine (FSM) model using data abstraction and predicate abstraction to reduce the complexity of program slices, allowing for efficient detection of defects by identifying error states within the FSM, thereby reducing the computational burden.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If traditional model checking algorithms are used to verify software systems, then comprehensive defect detection is achieved, but memory and processing power requirements increase exponentially

Engineering Contradiction:
Improvedefect detection capabilityVSAvoidcomputational resources
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent divides the software system into multiple finite state machines (FSMs), where each FSM represents a specific component or module. This segmentation allows the model checker to verify each FSM independently rather than analyzing the entire system as one monolithic model, thereby reducing memory and processing requirements while maintaining comprehensive defect detection across all components.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent transforms the verification problem from analyzing the complete system state space to analyzing individual FSM state spaces. By changing the dimension of analysis from system-level to component-level, the computational complexity is reduced from exponential growth with respect to total system states to manageable levels for each individual FSM, enabling scalable verification.

Inventive Principle:
Principle #17Another dimension (Dimensionality change)

2Reliability

If the complete system model is analyzed, then all potential defects are detected, but analysis time and computational cost increase exponentially

Engineering Contradiction:
Improvedefect detection coverageVSAvoidanalysis time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The software system is segmented into multiple independent FSMs representing different components. Each FSM is analyzed separately for defects, which dramatically reduces analysis time compared to analyzing the complete system model. The segmentation enables parallel verification of multiple components, further accelerating the overall defect detection process while maintaining comprehensive coverage.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies partial action by verifying only the essential properties of each FSM rather than performing exhaustive analysis of all possible system behaviors. This selective verification approach detects critical defects efficiently without requiring complete exploration of the entire system state space, thereby reducing analysis time while maintaining adequate defect detection coverage.

Inventive Principle:
Principle #16Partial or excessive action

Data Source

PatentUS9208057B2Efficient model checking technique for finding software defects
Publication Date: 2015.12.08 ORACLE INT CORP
  • US9208057B2 patent drawing
  • US9208057B2 patent drawing
  • US9208057B2 patent drawing

AI summary

A method for detecting defects in a computer program. The method steps include obtaining source code and a potential defect definition; identifying, based on the potential defect definition, a set of program objects associated with a potential defect in the source code; extracting an executable program slice having the potential defect from the source code; generating, by a processor, an abstracted model of the program slice by: modeling, using data abstraction, the set of program objects as data-abstracted variables, identifying, within the program slice, a set of control statements including predicates necessary for evaluating the set of control statements, modeling, using predicate abstraction, the predicates as predicate-abstracted Boolean variables, and creating, based on the data-abstracted variables and the predicate-abstracted Boolean variables, a finite state machine (FSM) model of the program slice; and identifying an error state of the FSM indicating an occurrence of the potential defect within the program slice.