Topic: CADES structural modeling with holons
Topic: decomposition of a system into levels
Topic: hierarchical structures
Topic: incremental development
Topic: language extension via macros
Topic: literate programming
Topic: localized understanding
Topic: macros
Topic: object-oriented design
Topic: pseudocode design
Topic: structured programming
Topic: Thesa as a database of modules
Topic: top-down vs. bottom-up design
Topic: transformation of programs
| |
Summary
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
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
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
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
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
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
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)
|