Managing Complexity in Software Development with Formally Based Tools

  • Authors:
  • Constance Heitmeyer

  • Affiliations:
  • Center for High Assurance Computer Systems, Naval Research Laboratory (Code 5546), Washington, DC 20375

  • Venue:
  • Electronic Notes in Theoretical Computer Science (ENTCS)
  • Year:
  • 2004

Quantified Score

Hi-index 0.00

Visualization

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.