Abstraction and Specification in Program Development offers professionals in program design and software engineering a methodology that will enable them to construct programs that are reliable and reasonably easy to understand, modify, and maintain. Good programming involves the systematic mastery of complexity, and this book provides the first unified treatment of the techniques of abstraction and specification, which, the authors argue, are the linchpin of any effective approach to programming. They place particular emphasis on the use of data abstraction to produce highly modular programs. The authors focus on the process of decomposing large program projects into independent modules that can be assigned to independent working groups. They discuss methods of decomposition, the kinds of modules that are most useful in this process, and techniques to increase the likelihood that modules produced can in fact be recombined to solve the original programming problem. There are many examples of abstractions throughout the text, and each chapter ends with pertinent references and exercises. Most of the sample implementations in the book are written in CLU, one of a growing number of languages able to support data abstraction. Sufficient material is included, however, to allow the reader to work in Pascal as well. The material in this book was developed by the authors during a decade of teaching undergraduate, graduate, and professional-level courses.
Abstraction and Specification in Program Development is included in the MIT Electrical Engineering and Computer Science series.
Barbara Liskov, the developer of CLU, is Professor of Computer Science at MIT.
John V. Guttag is the Dugald C. Jackson Professor of Computer Science and Electrical Engineering at MIT.