Meal Prep Guide· a Bicycle Guide

Partial profile · Book Profile — full narrative profile planned

[IEEE 2013 1st International Workshop on Combining Modelling and Search-Based Software Engineering (CMSBSE) - San Francisco,…

A position paper arguing that Search-Based Software Engineering (SBSE) meta-heuristic techniques can be effectively combined with software model checking to overcome state explosion and solve broader software engineering problems.

A profile of this book is on the way.

Get the book →

What it’s about

This position paper makes the case that two powerful but distinct software engineering approaches—Search-Based Software Engineering (SBSE) and software model checking—are complementary and can be combined to great effect. Software model checking exhaustively verifies program properties like deadlock and data race freedom but suffers from the state explosion problem as concurrency grows. SBSE uses meta-heuristic search techniques (genetic algorithms, particle swarm optimization, hill climbing, estimation of distribution algorithms) to solve intractable software problems approximately. The authors demonstrate, through existing literature and open research problems, two synergistic contexts: using SBSE to improve the model checking process itself (optimizing state-space search and incremental model checking), and using SBSE together with model checking to address general software engineering problems such as test suite generation and the automatic repair of concurrency bugs. It is a focused research agenda for anyone working at the intersection of verification and automated software improvement.

The through-line

Who it’s for
A software researcher or engineer who wants to verify and debug complex concurrent programs reliably and automatically.
The problem
Software model checking cannot scale to highly concurrent programs because state space grows exponentially, and concurrency bugs like data races and deadlocks are hard to find and fix. The engineer feels frustrated and limited by tools that run out of resources or cannot handle real-world parallel software.
The plan
  1. Express your verification challenge as a search-based optimization problem with a fitness function.
  2. Use SBSE meta-heuristics to optimize the model checker's state-space search for your program or bug pattern.
  3. Apply incremental model checking to avoid re-evaluating unchanged states across iterations.
  4. Use the model checker as a fitness evaluator for candidate solutions such as bug fixes.
  5. Record and reuse counter-examples to cheaply test proposed fixes before invoking full model checking.
The payoff
Concurrent programs can be verified and debugged more efficiently despite state explosion. · Data races and deadlocks can be found and automatically repaired. · Test suites can be generated and optimized more effectively.

See our guide

Related profiles we’ve built

Additional reading

PrivacyTermsSupport