Next: Scaling up
Up: Introduction
Previous: Introduction
Our goal is to present a practical approach to
software design and maintenance,
using techniques ready for use in industry now.
Four themes dominate:
- 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.
- 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.
- 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.
- 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: Scaling up
Up: Introduction
Previous: Introduction
Peter Walsh
Sat Apr 6 14:44:47 PST 1996