Topic: the 'uses' hierarchy for organizing systems

topics > computer science > programming > Group: program module

program design

decomposition of a system into levels
design documentation
families of programs
localized understanding
information hiding
hierarchical structures
object-oriented design
virtual machine


Parnas builds virtual machines from a 'uses' hierarchy, i.e., the structural decomposition of a system into its simplest components. One module (A) "uses" another (B) if using module B simplifies A's specification, the relationship is hierarchical, and B is useful without regard to A. "uses" is not who calls whom since the interrupt handler is used by everyone but called by no one. (cbb 5/80)
Subtopic: assumption up

Quote: measure structure by identifying those units that make assumptions about other units [»chanRN_1974, OK]

Subtopic: uses hierarchy up

Quote: should organize modules in a hierarchy over the 'uses' or 'depends on' relation; allows independent use of lower levels
Quote: in higher-order-software, a module controls invocation and ordering of its immediate sub-modules only [»hamiM3_1976]
Quote: the design of the 'uses' hierarchy should be a major design milestone [»parnDL5_1978]
Quote: a program is at the right 'uses' level if it doesn't need functions above it but does need ones below it [»parnDL5_1978]
Quote: good interfaces allow low-level details to change without effecting the higher levels [»rossDT_1970]
Quote: in a 'uses' hierarchy, low level operations may assume a data structure, next level may allow similar data structures, and top level doesn't know [»parnDL5_1978]
Quote: the top-down designer creates tree structures; at a level with no shared components [»jackMA_1975]
Quote: CADES design is a series of levels; each level an abstract machine [»pearDJ7_1973]
Quote: if A and B use each other, then split into more than one program; called sandwiching [»parnDL5_1978]

Subtopic: uses subset up

Quote: each level of a 'uses' hierarchy is a testable and usable subset of the system [»parnDL5_1978]
Quote: for an application, identify the programs needed from the 'uses' hierarchy and include everything else that is used [»parnDL5_1978]
Quote: can test and use subsets of a level in the 'uses' hierarchy

Subtopic: A uses B up

Quote: A uses B when it simplifies A, B doesn't use A, a useful subset includes B alone, and useful subsets with A must include B [»parnDL5_1978]
Quote: 'A uses B' if the correct functioning of A depends on a correct implementation of B [»parnDL5_1978]
Quote: a program may use another without invoking it; e.g., most programs depend on interrupt handlers working correctly [»parnDL5_1978]
Quote: a program may invoke a program without using it; e.g., if A's specifications only require that it invoke B on some condition [»parnDL5_1978]

Subtopic: problems of uses hierarchy up

Quote: lower levels can't use knowledge about higher levels; but undesired events need higher level information to determine the appropriate action

Related Topics up

Group: program design   (13 topics, 454 quotes)

Topic: decomposition of a system into levels (49 items)
Topic: design documentation (43 items)
Topic: families of programs (11 items)
Topic: localized understanding (43 items)
Topic: information hiding (50 items)
Topic: hierarchical structures (14 items)
Topic: object-oriented design (30 items)
Topic: virtual machine
(13 items)

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