[comp.specification] Summary of Respones to: Suggestions for Formal Spec Textbook

mariam@unocss.unomaha.edu (mariam) (09/07/90)

The following is a summary of suggestions I received about
good textbooks for teaching a Formal Spec course. Thanks
to all of you... Also thanks go to Prof. Jones for his public
reply to my request.

Regards,
----------------------------------


You might consider a book that is about software engineering and is
conceptually grounded in formal specifications (although most of the book
uses informal specifications):

    Abstraction and Specification in Program Development
    Barbara Liskov and John Guttag
    MIT Press/ McGraw-Hill
    1986
    



I've been teaching a course on formal methods here for three years now.
Initially it was to second-year students with the same sort of background that
you mention.  I've now written up my course with additional maertial in:

Antoni Diller
Z: An Introduction to Formal Methods
Chichester, Wiley, 1990
ISBN 0 471 92489 X

Even if you don't decide to adopt this as a set book, it contains a lot
that I've learnt trying to teach formal methods to students who aren't
that keen on it. The third edition of Ian Summerville's book on
Software Engineering (which is recommended to our students) contains a
very good informal account of the advantages of all kinds of formal
specification.  Together with my book they are a really good
introduction to Z.



Have you looked at the text: An Introduction to Discrete Mathematics and
Formal Systems Specification, by Darrell C. Ince?  I recommend it highly.
It offers an introduction to requirements analysis and discrete math thats
needed, then approaches the task of formally specifying systems with a 
"what do I need to do now?" and "how do I do what I need to do?" kind of 
look at the process.  The book is published by Oxford Univ Press, c in 1988.
If you send me a fax telephone number I'll fax the table of contents to you.



check the following for an intro to formal methods:
J.Woodcock, M.Loomes, "Software Engineering Mathematics",
Pitman, 1988.



Well, this is a bit self-serving, but "Formal Methods of Program
Verification and Specification" by Berg, Boebert (moi), Franta and
Moher, though a bit out of date, is aimed at what you need.
Prentice-Hall; I think you can still get it.



The Bjorner and Jones book you mention is rather dated and also
mostly oriented to language semantics.  From what you describe
your needs as being, the latter would seem to be a disadvantage,
and may (I hope) account for some of your feelings that it is
too advanced.

To some extent, an "easy" book on formal specification is unlikely:
what formal specification does is to make visible just how hard
software engineering is.  I would suggest that you consider the
latest edition (2nd) of Jones' book "Systematic Software Development
using VDM" (which is used as a 2nd course text here), and its
companion volume "Case Studies in Systematic Software Development".
It might be possible to drive a course from the case studies without
getting too deeply into the semantics of the notation, if that would
help.

All the books are from Prentice-Hall's series in Computer Science.


One of the best introductory books for students is:

Woodcock J, Looms M, Software Engineering Mathematics, Pitman 1988



Each year the Software Engineering Institute publishes a variety of materials
in support of software engineering education.  Among these are course
syllabi and reading lists.  I have included below the first draft of the
reading list for a Software Specifications course.  If you are interested,
I can send you the tech report (to be published in a few weeks) that
contains recommendations for several such courses.


Agerwala79
T. Agerwala.  "Putting Petri Nets to Work."  Computer 12, 12 (Dec. 
1979), 85-94. 

Andrews83
G. R. Andrews, and F. B. Schneider.  "Concepts and Notations for 
Concurrent Programming."  ACM Computing Surveys 15, 1 (Mar. 1983), 
3-43. 

ANSI85
ANSI Standard for Information Systems P Computer Graphics P 
Graphical Kernel System (GKS) Functional Description.  Tech. Rep. 
ANSI X3.124-1985, American National Standards Institute, 1985. 

Auernheimer84
B. Auernheimer, and R. A. Kemmerer.  ASLAN User's Manual.  
Department of Computer Science, University of California, Santa 
Barbara, 1984. 

Cohen86
B. Cohen, W. T. Harwood, and M. I. Jackson.  The Specification of 
Complex Systems.  Addison-Wesley, 1986.  This book is now out of 
print.

Delisle89
N. Delisle, and D. Garlan.  "Formally Specifying Electronic 
Instruments."  Fifth International Workshop on Specification and 
Design.  IEEE Computer Society, May 1989.  Also published as ACM 
Software Engineering Notes 14 (3).

Duce88
D. A. Duce, E. V. C. Fielding, and L. S. Marshall.  "Formal 
Specification of a Small Example Based on GKS."  ACM Transactions 
on Graphics 7, 7 (July 1988), 180-197. 

Gehani86
N. Gehani, and A. McGettrick.  Software Specification Techniques.  
Addison-Wesley, 1986. 

Guttag85
John V. Guttag, James J. Horning, and Jeanette M. Wing.  "The 
Larch Family of Specification Languages."  IEEE Software 2, 5 
(Sept. 1985), 24-36. 

Harel87
D. Harel.  "Statecharts:  A Visual Formalism for Complex Systems."  
Science of Computer Programming 8 (1987), 231-274.  Need to 
confirm that this is a journal paper.

Harel88
D. Harel, H. Lachover, A Naamad, A. Pnueli, M. Politi, R. Sherman, 
and A. Shtul-Trauring.  "Statemate:  A Working Environment for the 
Development of Complex Reactive Systems."  10th International 
Conference on Software Engineering.  IEEE, 1988, 396-406. 

Hayes85
I. J. Hayes.  "Applying Formal Specification to Software 
Develoment in Industry."  IEEE Trans. Software Engineering SE-11, 
2 (Feb. 1985), 169-178. 

Hoare78
C. A. R. Hoare.  "Communicating Sequential Processes."  Comm. ACM 
21, 8 (Aug. 1978), 666-677. 
Horning73
J. J. Horning, and B. Randel.  "Process Structuring."  ACM 
Computing Surveys 5, 1 (Mar. 1973), 5-30. 

IEEE84
IEEE Guide to Software Requirements Specifications.  Tech. Rep. 
Std. 830-1984, IEEE, 1984. 

Jones89
Peggy Jones.  DASC Requirements Document.  In Software Maintenance 
Exercises for a Software Engineering Project Course, CMU/SEI-89-
EM-1, Software Engineering Institute, Carnegie Mellon University, 
Pittsburgh, Pa., Feb. 1989. 

Kemmerer85
R. A. Kemmerer.  "Testing Formal Specifications to Detect Design 
Errors."  IEEE Trans. Software Engineering SE-11, 1 (Jan. 1985), 
32-43. 

Parnas72
David L. Parnas.  "A Technique for Software Module Specification 
with Examples."  Comm. ACM 15, 5 (May 1972), 330-336.  Also in 
Software Specification Techniques, p. 75-88.

Parnas86
David L. Parnas, and Paul C. Clements.  "A Rational Design 
Process:  How and Why to Fake It."  IEEE Trans. Software 
Engineering SE-12, 2 (Feb. 1986), 251-257. 

Peterson77
J. L. Peterson.  "Petri Nets."  ACM Computing Surveys 9, 3 (Sept. 
1977), 223-252. 

Ruggles88
C. Ruggles.  "Towards a Formal Definition of GKS and Other 
Graphics Standards."  VDM '88 P The Way Ahead, L. Marshall; R 
Bloomfield; R. Jones, eds.  Springer-Verlag, 1988, 64-73. 

Spivey89
J. M. Spivey.  "An Introduction to Z and Formal Specifications."  
Software Engineering Journal 4, 1 (Jan. 1989), 40-50. 

Woodcock88
J. C. P. Woodcock, and B. Dickinson.  "Using VDM with Rely and 
Guarantee-Conditions."  VDM '88 P The Way Ahead, L. Marshall; R 
Bloomfield; R. Jones, eds.  Springer-Verlag, 1988, 449-455. 

Zave82
Pamela Zave.  "An Operational Approach to Requirements 
Specification for Embedded Systems."  IEEE Trans. Software 
Engineering SE-8, 3 (May 1982), 250-269.  Also in Software 
Specification Techniques, p. 131-169.

Zave85
Pamela Zave.  "A Distributed Alternative to Finite-State-Machine 
Specifications."  ACM Trans. Prog. Lang. and Systems 7, 1 (Jan. 
1985), 10-36. 



And of course Prof. Jones' new book:

Systematic Software Development using VDM, 2nd Ed., Prentice-Hall