ScholarGate
Assistent

Formal Methods in Software

Formal methods apply mathematical logic to the specification, development, and verification of software, allowing properties of a system to be proven rather than only tested.

Hitta ämne med PaperMindSnartFind papers & topics
Tools & resources
Ladda ner bildspel
Learn & explore
VideoSnart

Definition

Formal methods are mathematically based techniques for specifying, developing, and verifying software systems, in which specifications are expressed in formal languages and properties are established by proof or exhaustive state exploration.

Scope

This topic covers formal specification languages such as Z, B, and TLA+; axiomatic semantics and Hoare logic for reasoning about program correctness; model checking for verifying finite-state and concurrent systems; theorem proving and proof assistants; and the use of formal methods in safety- and security-critical software.

Core questions

  • How can software behavior be specified unambiguously in a formal language?
  • How is program correctness proven with respect to a specification?
  • How does model checking exhaustively verify finite-state and concurrent systems?
  • Where do the costs and benefits of formal methods justify their use?

Key theories

Hoare logic and axiomatic semantics
Hoare introduced a logic of preconditions and postconditions in which the correctness of program constructs is expressed by axioms and inference rules, providing a basis for proving that programs meet their specifications.
Model checking
Model checking automatically and exhaustively explores the reachable states of a finite-state model to verify temporal-logic properties, detecting deadlocks and violations that testing would likely miss.

Clinical relevance

Formal methods provide the strongest available assurance of correctness and are applied where failure is unacceptable — avionics, rail signaling, security protocols, and hardware — though their cost confines them mainly to critical components rather than whole large systems.

Evidence & guidelines

Surveys of industrial practice document successful application of formal methods in safety-critical domains, and standards such as DO-178C and the Common Criteria recognize formal techniques at the highest assurance levels.

History

Program verification was founded by Floyd and Hoare in the late 1960s, model checking was developed by Clarke, Emerson, and Sifakis in the early 1980s (earning a Turing Award), and tools and proof assistants have since brought formal verification into industrial use for critical systems.

Debates

Scalability and cost of formal methods
A persistent debate concerns whether formal methods scale to large industrial software economically; advances in automation and lightweight formal methods have widened applicability, but full verification of large systems remains costly.

Key figures

  • C. A. R. Hoare
  • Edsger Dijkstra
  • Edmund Clarke
  • Leslie Lamport

Related topics

Seminal works

  • hoare1969
  • clarke1999
  • woodcock2009

Frequently asked questions

Do formal methods replace testing?
Generally no. Formal methods give strong guarantees about a model or specification, but assumptions, environment, and unmodeled aspects still require testing; in practice the two are complementary, with formal methods focused on the most critical properties.
Why aren't formal methods used everywhere?
They demand specialized expertise and effort that are hard to justify for most software, where testing offers adequate confidence at lower cost; formal methods are concentrated where the consequences of failure are severe enough to warrant the investment.

Methods for this concept

Related concepts