Topic: stepwise refinement

topics > computer science > programming > Group: program design

CADES structural modeling with holons
decomposition of a system into levels
hierarchical structures
incremental development
language extension via macros
literate programming
localized understanding
object-oriented design
pseudocode design
structured programming
Thesa as a database of modules
top-down vs. bottom-up design
transformation of programs


Stepwise refinement is a form of top-down design. A problem is refined into a sequence of high-level commands. Typically pseudo-code is used for the commands. Then each command is in turn refined into additional steps. The process is repeated until all commands are implemented via existing procedures or a programming language. Stepwise refinement encourages structured programming. Cleanroom is a formal implementation of stepwise refinement.

The original work in stepwise refinement used the refinements only in the development process. This loses valuable design information. A number of systems assist with managing refinements and turning the refinements into code. The refinements may be derived from existing refinements or plans.

Object-oriented programming has largely replaced stepwise refinement. Top-down design may be too restrictive for large programs. Object-oriented programming encourages the careful design of data types before designing procedures and functions. This reduces the apparent size of the individual programs. The best approach may be a balanced mix of object-oriented design and stepwise refinement. (cbb 4/98)

Subtopic: stepwise refinement problem analysis, modularize up

Quote: the subroutines of any routine may themselves have subroutines; like bigger and lesser fleas
Quote: break a problem into subroutines; this simplifies the problem and creates useful routines for other problems [»turiA3_1951]
Quote: limit span of attention through top-down design; only one use of each program component [»jackMA_1975]
Quote: Cleanroom's development team designs each increment top-down with usage hierarchy, black-box, state-box, and clear-box [»cobbRH11_1990]
Quote: Cleanroom's development team implements clear boxes by stepwise refinement and verifies each function
Quote: problem analysis diagrams based on stepwise refinement, i.e., breaking down vagueness by sequence, repetition, and selection [»futaY3_1981]
Quote: plans for programming can be sequenced, nested, merged or tailored [»soloE9_1986]

Subtopic: stepwise refinement as documentation up

Quote: programming is easy to understand if it is done in steps that preserve and represent the problem's structure [»baueFL_1976]
Quote: the stepwise refinement of a program is the most valuable documentation available [»petrL9_1982]
Quote: if refine a step by substituting the body, then lose derivation information; better to retain each refinement as a function [»meerL_1978]
Quote: Cornell_Program_Synthesizer uses comment templates: a one-line comment followed by a block of statements which are optionally displayed [»teitT9_1981]
Quote: PDS maintains the refinement history of a module and the user's reasons for a refinement and its implications for other modules [»cheaTE_1979]
Quote: in stepwise refinement distinguish between program expansions (executable) and functional expansions (documentation) [»petrL9_1982]

Subtopic: stepwise refinement as reuse up

Quote: part of stepwise refinement is using subproblems for which you already have canned solutions [»soloE9_1986]
Quote: object-oriented programming: decide on classes; provide a full set of operations for each class; sub-classes will inherit these operations [»stroB5_1989]

Subtopic: examples up

Quote: ABC supports stepwise refinement with dotted refinements and globally-allocated, persistent variables [»pembS1_1987]
QuoteRef: wirtN4_1971 ;;excellent description of developing solution to 8 queens problem using stepwise refinement
Quote: several programming systems assist stepwise refinement by textual replacement [»meerL_1978]
Quote: Schemacode supports stepwise refinement down to the code level [»plamR7_1981]
Quote: representing a program as a hierarchy of frames encourages top-down, stagewise refinement

Subtopic: problems with stepwise refinement up

Quote: while stepwise refinement works well for new development, it requires rewrite for changed requirements [»berrDM10_2002]
Quote: top-down design and step-wise refinement may not represent the developmental steps in the final program [»wulfWA_1977]
Quote: program refinement is in general a process of trial and error
Quote: good programs need not be written top-down; even if the final result looks well structured [»greeTR_1980]
Quote: top-down design and step-wise refinement ignore the search for commonality; generates a tree of steps

Related Topics up

Topic: CADES structural modeling with holons (24 items)
Topic: decomposition of a system into levels (49 items)
Topic: hierarchical structures (46 items)
Topic: incremental development (74 items)
Topic: language extension via macros (23 items)
Topic: literate programming (16 items)
Topic: localized understanding (43 items)
Topic: macros (22 items)
Topic: object-oriented design (30 items)
Topic: pseudocode design (43 items)
Topic: structured programming (27 items)
Topic: Thesa as a database of modules (23 items)
Topic: top-down vs. bottom-up design (30 items)
Topic: transformation of programs
(27 items)

Updated barberCB 2/05
Copyright © 2002-2008 by C. Bradford Barber. All rights reserved.
Thesa is a trademark of C. Bradford Barber.