265 ;;Quote: a mathematician proves a general theorem instead of closely related ones; but in software, generality is too expensive for unlikely events
|
265 ;;Quote: a system is hard to extend or contract if too many programs assume given features
|
266 ;;Quote: in multi-pass programs with different intermediate formats, can not remove a pass
|
266 ;;Quote: should not combine simple functions into one component
|
266 ;;Quote: using routines from untested modules can lead to systems that only work when everything works; e.g., a task scheduler that depends on the file system
|
266 ;;Quote: in design for change, must anticipate change before beginning a design
|
267 ;;Quote: identification of modules for a program family is difficult; first find a minimal subset and then add minimal increments
|
267 ;;Quote: virtual machine approach--instead of writing functions, we should design software machine extensions that will be useful for many programs
|
268 ;;Quote: 'A uses B' if the correct functioning of A depends on a correct implementation of B
|
268 ;;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
|
268 ;;Quote: a program may use another without invoking it; e.g., most programs depend on interrupt handlers working correctly
|
269 ;;Quote: each level of a 'uses' hierarchy is a testable and usable subset of the system
|
269+;;Quote: can test and use subsets of a level in the 'uses' hierarchy
|
269 ;;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
|
269 ;;Quote: if A and B use each other, then split into more than one program; called sandwiching
|
269 ;;Quote: a program is at the right 'uses' level if it doesn't need functions above it but does need ones below it
|
269 ;;Quote: the design of the 'uses' hierarchy should be a major design milestone
|
270 ;;Quote: example of design for change in processing street addresses
|
274 ;;Quote: for an application, identify the programs needed from the 'uses' hierarchy and include everything else that is used
|
274 ;;Quote: flexibility can not be added to a software design; choice of usable subsets must be a preliminary step
|
274 ;;Quote: no feature or function is always needed in a system
|
275 ;;Quote: software is general if it can be used without change; it is flexible if it can be easily changed
|
275+;;Quote: generalized software is less efficient than flexible software
|
276 ;;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
|