Staged program development

  • Authors:
  • K. Rustan M. Leino

  • Affiliations:
  • Microsoft Research, Redmond, WA, USA

  • Venue:
  • Proceedings of the 3rd annual conference on Systems, programming, and applications: software for humanity
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

A major issue facing software development and maintenance is the sheer complexity of programs. Even software designs that start off simple often evolve into programs that are both brittle and hard to understand. In this talk, I advocate programming in stages, where the programming language allows the program design to be described at varying levels of abstraction. Higher levels of abstraction focus on the intent of the design, whereas lower levels of abstraction introduce optimizations and other details. Since the layering is expressed in the programming language, the stages are preserved as part of the program text. Therefore, the stages help break down the program's complexity not only during development but also during maintenance. I will describe some language features, both old and new, that encourage staged development. To help communicate the vision, I will demonstrate Dafny, a research programming system whose language blends specifications, imperative programming, and staged program refinements and whose development environment is powered by an automatic program verifier that constantly analyzes the program to help the programmer get details right. Joint work with Jason Koenig.