Managing Complexity in Software Development with Formally Based Tools

https://doi.org/10.1016/j.entcs.2004.11.004Get rights and content
Under a Creative Commons license
open access

Abstract

Over the past two decades, formal methods researchers have produced a number of powerful software tools designed to detect errors in, and to verify properties of, hardware designs, software systems, and software system artifacts. Mostly used in the past to debug hardware designs, in future years, these tools should help developers improve the quality of software systems. They should be especially useful in developing high assurance software systems, where compelling evidence is required that the system satisfies critical properties, such as safety and security. This paper describes the different roles that formally based software tools can play in improving the correctness of software and software artifacts. Such tools can help developers manage complexity by automatically exposing certain classes of software errors and by producing evidence (e.g., mechanically checked proofs, results of executing automatically generated test cases, etc.) that a software system satisfies its requirements. In addition, the tools allow practitioners to focus on development tasks best performed by people—e.g., obtaining and validating requirements and constructing a high-quality requirements specification.

Keywords

formal methods
software tools
formal specification
formal verification
model checking
theorem proving
SCR

Cited by (0)

1

The author's research is sponsored by the Office of Naval Research.