Enhancing cleanroom techniques with refinement calculus

  • Authors:
  • Michael R. Donat

  • Affiliations:
  • University of British Columbia, Department of Computer Science

  • Venue:
  • CASCON '95 Proceedings of the 1995 conference of the Centre for Advanced Studies on Collaborative research
  • Year:
  • 1995

Quantified Score

Hi-index 0.00

Visualization

Abstract

A refinement calculus is a mathematical technique that provides a mechanism for rigorously transforming specifications into executable programs in a step-wise manner. A by-product of this technique is a formal proof of correctness of both the implementation and the design. These step-wise and rigorous aspects make this an attractive method for reducing software development costs and mitigating risk.The cleanroom technique has been quite successful as a development method [4]. However, it does not directly address the issue of assessing costs due to changes in the specification. This paper proposes a mechanized refinement calculus extension to the traditional cleanroom technique and a method for assessing the impact of specification changes.Within the cleanroom methodology, a refinement calculus approach replaces the "design, build and verify" process by transforming the specification itself into provably correct code through successive refinements. Additional tool support can link terms in the specification to the pertinent inferences in the proofs of various refinement steps. This information can then be directly used to determine the impact of specification changes at any point in the product life-cycle. Affected parts of the program and its design can be flagged automatically. The same technique also provides the means for evaluating certain elements of the design.Some tools are beginning to emerge to support refinement calculi. The current level of support is weak and certain shortcomings make refinement calculi presently too expensive for industry. However, recent advances in theorem prover technology suggest that these shortcomings are surmountable.