A specifier's introduction to formal methods

Formal methods used in developing computer systems (i.e. mathematically based techniques for describing system properties) are defined, and their role is delineated. Formal specification languages, which provide the formal method's mathematical basis, are examined. Certain pragmatic concerns about formal methods and their users, uses, and characteristics are discussed. Six well-known or commonly used formal methods are illustrated by simple examples. They are Z, VDM, Larch, temporal logic, CSP, and transition axioms.<<ETX>>

[1]  K. Mani Chandy,et al.  Parallel program design - a foundation , 1988 .

[2]  Hans-Dieter Ehrich Extensions and Implementations of Abstract Data Type Specifications , 1978, MFCS.

[3]  John V. Guttag,et al.  A few Remarks on Putting Formal Specifications to Productive Use , 1981, Program Specification.

[4]  Leslie Lamport,et al.  Proving Liveness Properties of Concurrent Programs , 1982, TOPL.

[5]  James J. Horning,et al.  The Larch Family of Specification Languages , 1985, IEEE Software.

[6]  Paliath Narendran,et al.  Formal verification of the Sobel image processing chip , 1988, 25th ACM/IEEE, Design Automation Conference.Proceedings 1988..

[7]  José Meseguer,et al.  Principles of OBJ2 , 1985, POPL.

[8]  Joseph A. Goguen,et al.  The Semantics of CLEAR, A Specification Language , 1979, Abstract Software Specifications.

[9]  Stephen J. Garland,et al.  An Overview of LP, The Larch Power , 1989, RTA.

[10]  Friedrich L. Bauer,et al.  The Munich Project CIP , 1988, Lecture Notes in Computer Science.

[11]  N. Delisle,et al.  Formally specifying electronic instruments , 1989, IWSSD '89.

[12]  Zohar Manna,et al.  Verification of concurrent programs, Part I: The temporal framework , 1981 .

[13]  Mack W. Alford SREM at the Age of Eight; The Distributed Computing Design System , 1985, Computer.

[14]  James J. Horning,et al.  Some Notes on Putting Formal Specifications to Productive Use , 1982, Sci. Comput. Program..

[15]  Orna Grumberg,et al.  Research on Automatic Verification of Finite-State Concurrent Systems , 1987 .

[16]  David Lorge Parnas,et al.  A technique for software module specification with examples , 1972, CACM.

[17]  Joseph A. Goguen,et al.  OBJ as a Theorem Prover with Applications to Hardware Verification , 1989 .

[18]  Edward Yourdon,et al.  Structured design : fundamentals of a discip!ine of computer proqram and system desiqn , 1979 .

[19]  Amnon Naamad,et al.  Statemate: a working environment for the development of complex reactive systems , 1988, ICSE '88.

[20]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[21]  Jeannette M. Wing Writing Larch interface language specifications , 1987, TOPL.

[22]  M. Gordon HOL: A Proof Generating System for Higher-Order Logic , 1988 .

[23]  Robin Milner,et al.  A Calculus of Communicating Systems , 1980, Lecture Notes in Computer Science.

[24]  Cliff B. Jones,et al.  Systematic software development using VDM , 1986, Prentice Hall International Series in Computer Science.

[25]  Donald Sannella,et al.  Program specification and development in standard ML , 1985, POPL.

[26]  J. Michael Spivey,et al.  Understanding Z : A specification language and its formal semantics , 1985, Cambridge tracts in theoretical computer science.

[27]  Michael Jackson,et al.  Principles of program design , 1975 .

[28]  Robert S. Boyer,et al.  A verified operating system kernel , 1987 .

[29]  William R. Swartout The GIST Behavior Explainer , 1983, AAAI.

[30]  Bertrand Meyer,et al.  On Formalism in Specifications , 1985, IEEE Software.

[31]  Martin S. Feather,et al.  Language support for the specification and development of composite systems , 1987, TOPL.

[32]  Tony Hoare,et al.  Notes on Data Structuring , 1972 .

[33]  Leslie Lamport,et al.  Specifying Concurrent Program Modules , 1983, TOPL.

[34]  Samuel N. Kamin Final Data Types and Their Specification , 1983, TOPL.

[35]  B. P. Collins,et al.  Introducing formal methods, the CICS experience , 1989 .

[36]  Peter Lee,et al.  The ergo support system: an integrated set of tools for prototyping integrated environments , 1988, SDE 3.

[37]  Martín Abadi,et al.  A logic of authentication , 1989, Proceedings of the Royal Society of London. A. Mathematical and Physical Sciences.

[38]  Mehdi T. Harandi,et al.  Workshop on software specification and design , 1988, SOEN.

[39]  Allen T. Goldberg,et al.  Knowledge-based programming: A survey of program design and construction techniques , 1986, IEEE Transactions on Software Engineering.

[40]  Nancy A. Lynch,et al.  Hierarchical correctness proofs for distributed algorithms , 1987, PODC '87.

[41]  James L. Peterson,et al.  Petri Nets , 1977, CSUR.

[42]  W. J. Cullyer Implementing Safety-Critical Systems: The VIPER Microprocessor , 1988 .

[43]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1976, IEEE Trans. Software Eng..

[44]  Willem P. de Roever,et al.  Real-time programming and asynchronous message passing , 1983, PODC '83.

[45]  Cliff B. Jones,et al.  Software development - a rigorous approach , 1980, Prentice Hall international series in computer science.

[46]  Amir Pnueli,et al.  Applications of Temporal Logic to the Specification and Verification of Reactive Systems: A Survey of Current Trends , 1986, Current Trends in Concurrency.

[47]  J. Doug Tygar,et al.  Constraining Pictures with Pictures , 1989, IFIP Congress.

[48]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975, IEEE Transactions on Software Engineering.

[49]  David S. Rosenblum,et al.  Testing the correctness of tasking supervisors with TSL specifications , 1989 .

[50]  Lawrence Robinson,et al.  SPECIAL - A Specification and Assertion Language. , 1976 .

[51]  John D. Gannon,et al.  Combining Testing with Formal Specifications: A Case Study , 1983, IEEE Transactions on Software Engineering.

[52]  Robert Balzer,et al.  Transformational Implementation: An Example , 1981, IEEE Transactions on Software Engineering.

[53]  Friedrich Ludwig Bauer,et al.  The wide spectrum language CIP-L , 1985 .

[54]  Leslie Lamport,et al.  Artificial Intelligence and Language Processing ]acques Cohen Editor a Simple Approach to Specifying Concurrent Systems , 2022 .

[55]  John B. Shoven,et al.  I , Edinburgh Medical and Surgical Journal.

[56]  K. Mani Chandy Parallel program design , 1989 .

[57]  Nancy G Leveson,et al.  Software safety: why, what, and how , 1986, CSUR.

[58]  Pierre Lescanne,et al.  Computer experiments with the REVE term rewriting system generator , 1983, POPL '83.

[59]  Zohar Manna,et al.  A Deductive Approach to Program Synthesis , 1979, TOPL.

[60]  David C. Luckham,et al.  An Overview of Anna, a Specification Language for Ada , 1985, IEEE Software.

[61]  Willem P. de Roever,et al.  A Proof System for Communicating Sequential Processes , 1980, ACM Trans. Program. Lang. Syst..

[62]  Pamela Zave,et al.  An Operational Approach to Requirements Specification for Embedded Systems , 1982, IEEE Transactions on Software Engineering.

[63]  J. C. P. Woodcock,et al.  Transaction processing primitives and CSP , 1987 .

[64]  D. I. Good,et al.  An interactive program verification system , 1975, IEEE Transactions on Software Engineering.

[65]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Specification 1 , 1985, EATCS Monographs on Theoretical Computer Science.

[66]  David S. Rosenblum,et al.  Testing the Correctness of Tasking Supervisors with TSL Specifications , 1989, Symposium on Testing, Analysis, and Verification.

[67]  John Darlington,et al.  A Transformation System for Developing Recursive Programs , 1977, J. ACM.

[68]  Mitchell Wand,et al.  Final Algebra Semantics and Data Type Extensions , 1979, J. Comput. Syst. Sci..

[69]  Sentot Kromodimoeljo,et al.  m-EVES: a tool for verifying software , 1988, Proceedings. [1989] 11th International Conference on Software Engineering.

[70]  Stephen J. Garland,et al.  Verification of VLSI Circuits Using LP , 1988 .

[71]  Deepak Kapur,et al.  Proof by Consistency , 1987, Artif. Intell..

[72]  David Harel,et al.  On visual formalisms , 1988, CACM.

[73]  Manfred Broy,et al.  A Fixed Point Approach to Applicative Multiprogramming , 1982 .

[74]  Harry Katzan Systems design and documentation : an introduction to the HIPO method , 1976 .

[75]  Friedrich L. Bauer,et al.  The Munich Project CIP: Volume I: The Wide Spectrum Language CIP-L , 1985 .

[76]  Per Martin-Löf,et al.  Constructive mathematics and computer programming , 1984 .

[77]  Grzegorz Rozenberg,et al.  Current Trends in Concurrency, Overviews and Tutorials , 1986, Current Trends in Concurrency.

[78]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[79]  John V. Guttag,et al.  The specification and application to programming of abstract data types. , 1975 .