next up previous
Next: Scaling up Up: Introduction Previous: Introduction

Four themes

Our goal is to present a practical approach to software design and maintenance, using techniques ready for use in industry now. Four themes dominate:

  1. The central role of documentation. Our approach is based on a single set of documents supporting design, implementation, and maintenance. Precise system and module specifications play a key role: providing the foundation for the important practice of implementation to specification.
  2. Systematic verification. We use two complementary methods of verification. Inspections are applied to all work products, using the human roles and inspection steps now standard in industry. Testing is applied to executable work products, at both the system and module level. We emphasize automated testing of both modules and systems.
  3. Effective use of mathematics. We have selected a small set of discrete mathematics concepts. Notations based on these are used extensively in our specification documents. Our inspections are proof-based, in the sense that the reader's job is to present a convincing logical argument. For example, when inspecting an implementation, the reader must show that it satisfies the specification. This proof orientation has a substantial impact on the inspections and on the specification documents that support them.
  4. Reducing the cost of maintenance. Most texts deal with maintenance as a separate phase. Following Parnas [4], we view maintenance as redevelopment. Maintenance then consists of partially repeating the development phases, modifying the original work products to reflect the fix or enhancement. Most assignments focus on reading and modifying existing code and documentation. Course projects carry a change through from specification to testing, updating and verifying all the relevant work products along the way.

In developing these themes, we make extensive use of a fully-worked, non-trivial case study, to illustrate the techniques and to support concrete discussions of design alternatives. Intentionally, the case study is small by industrial standards. It was carefully constructed to be as simple as possible while still being sufficiently complex to illustrate the methods. Despite its small size, it gives rise to surprisingly subtle issues in specification, design, verification, and maintenance.



next up previous
Next: Scaling up Up: Introduction Previous: Introduction



Peter Walsh
Sat Apr 6 14:44:47 PST 1996