A design methodology for reliable software systems (1972)
October 8, 2023After earning her PhD in computer Science at Stanford University, Liskov worked again for MITRE Corporation. She was involved in the development of a time-sharing system called Venus, then was involved in finding ways to address the “software crisis.” at MITRE. A design methodology for reliable software systems describes a design methodology of structured programming developed as part of the second project.
The methodology uses testing to guarantee reliability. To test a program, it is necessary to identify relevant test cases, and the set of them must be small enough to implement. Structured programming helps to identify the relevant test cases and reduce the number of required test cases by dividing a system into modules.
Although Dijkstra proposed structured programming in 1968 and 1969, it does not have a standard definition. Liskov defined structured programming through two rules. The first rule permits only concatenation, condition, and iteration as ways of controlling structures. The second rule states that modules must be developed from the top down in levels of abstraction.
The level of abstraction concerns ways of accessing resources like I/O devices and data. The lowest levels is closest to the machine. Each level owes resources exclusively, and it is not permitted to access the other levels. The modules must pass data as explicit arguments to external functions of another module.