Program development by stepwise refinement

  title={Program development by stepwise refinement},
  author={Niklaus Wirth},
  journal={Commun. ACM},
  • N. Wirth
  • Published 1971
  • Computer Science
  • Commun. ACM
Program Development by Stepwise Refinement Niklaus Wirth EidgeniSssische Technische Hochschule Ziirich, Switzerland The creative activity of programming--to be distinguished from coding--is usually taught by examples serving to exhibit certain techniques. It is here considered as a sequence of design decisions concerning the decomposition of tasks into subtasks and of data into data structures. The process of successive refinement of specifications is illustrated by a short but nontrivial… Expand
A tool for developing correct programs by refinement
The design and implementation of a new tool to support refinement based on the requirements as gleaned from the experience with a number of existing refinement tools are reported on. Expand
Refinement as Inclusion of Predicates over Programs
An approach to refinement is described: (1) formalize the syntax and semantics of the target programming language; (2) specify the requirements by defining a predicate over programs thatExpand
Patterns and model transformation tools for designing Contractual State Machines
This research helps engineers produce more reliable and robust systems by providing a rigorous engineering process supported by engineer-friendly tools based on the application of refinement and refactoring patterns for Contractual State Machines. Expand
Programming with a read-eval-synth loop
It is found that programmers using RESL solve problems with far less need to edit the code themselves and by browsing documentation far less, and are less likely to leave a task unfinished and more likely to be correct. Expand
Parallel programming by transformation
A model-driven approach and framework to encode and systematize the domain knowledge used by experts when building optimized libraries and program implementations, and a tool to support the proposed framework, ReFlO, which is developed to illustrate how knowledge is encoded and used to incrementally—and mechanically—derive efficient parallel program implementations in different application domains. Expand
Deductive Synthesis and Repair
This thesis explores techniques for the development of recursive functional programs over unbounded domains that are proved correct according to their high-level specifications and formulates program repair in the framework of deductive synthesis and uses the existing program structure as a hint to guide synthesis. Expand
Software Specification
  • I. Hayes, Steve King
  • Computer Science
  • Theories of Programming
  • 2021
A further line of research was sparked as part of the specification of checkpointing within the CICS transaction processing system using Tony’s language CSP, which provided a general mechanism that could be used for specifying checkpoints. Expand
Refinement, Decomposition, and Instantiation of Discrete Models: Application to Event-B
It is argued that formal modeling should be the starting point for any serious development of computer systems, and three techniques are presented, refinement, decomposition, and instantiation, that are considered indispensable for modeling large and complex systems. Expand
Sound and Relaxed Behavioural Inheritance
  • N. Amálio
  • Computer Science
  • From Astrophysics to Unconventional Computation
  • 2019
This paper revisits BI at the light of Z and the theory of data refinement, and proposes improved relaxations that are applicable to any OO language that supports design-by-contract (DbC). Expand
Property preserving development and testing for CSP-CASL
This thesis studies new development notions for CSP-CASL capable of capturing informal vertical and horizontal software development which the authors typically find in industrial applications and provides proof techniques for such development notions and verification methodologies to prove interesting properties of reactive systems. Expand


Programming by action clusters
A programming discipline, aiming at the systematic construction of programs from given global requirements, which is the conversion of the global requirements into sets of action clusters (sequences of program statements), which are then used as building blocks for the final program. Expand
A constructive approach to the problem of program correctness
As an alternative to methods by which the correctness of given programs can be established a posteriori, this paper proposes to control the process of program generation such as to produce a prioriExpand
Notes on structured programming
The final author version and the galley proof are versions of the publication after peer review that features the final layout of the paper including the volume, issue and page numbers. Expand
Programming in Action.
Notes on structured programming. EWD 249 Technical U
  • Notes on structured programming. EWD 249 Technical U
  • 1969
The following arlicles are lisled for further reference on the subject of programming
  • The following arlicles are lisled for further reference on the subject of programming