Teaching formal methods lite via testing

A new style of formal methods course is described, based on a pragmatic approach that emphasizes testing. The course introduces students to formal specification using Z, and shows how formal specification and testing can benefit each other, in both the validation and verification phases. It uses a tools‐based approach, with practical work that reinforces formal specification techniques as well as traditional software engineering skills, such as unit and system testing, inspection and defensive programming with assertions. The two main results are to identify several practical uses of formal specifications that are not widely practised or taught, and to demonstrate that teaching them results in a more interesting and relevant formal methods course. Copyright © 2001 John Wiley & Sons, Ltd.

[1]  Cliff B. Jones,et al.  Specifications are not (necessarily) executable , 1989 .

[2]  Michael R. Donat Automating Formal Specification-Based Testing , 1997, TAPSOFT.

[3]  C. A. R. HOARE,et al.  An axiomatic basis for computer programming , 1969, CACM.

[4]  Stephen J. Garland,et al.  Larch: Languages and Tools for Formal Specification , 1993, Texts and Monographs in Computer Science.

[5]  Cliff B. Jones,et al.  Formal methods light , 1996, CSUR.

[6]  Peter T. Breuer,et al.  Towards Correct Executable Semantics for Z , 1994, Z User Workshop.

[7]  Michel Bidoit,et al.  TAPSOFT '97: Theory and Practice of Software Development , 1997, Lecture Notes in Computer Science.

[8]  Richard G. Hamlet,et al.  Software Quality, Software Process, and Software Testing , 1995, Adv. Comput..

[9]  David Lorge Parnas,et al.  An Invitation to Formal Methods , 1996, Computer.

[10]  C. A. R. Hoare,et al.  An axiomatic basis for computer programming , 1969, CACM.

[11]  Susan Stepney Testing as Abstraction , 1995, ZUM.

[12]  Steve Maguire,et al.  Writing Solid Code , 1993 .

[13]  Philip Alan Stocks,et al.  Applying formal methods to software testing , 1993 .

[14]  Thomas Santen,et al.  Automating Test Case Generation from Z Specifications with Isabelle , 1997, ZUM.

[15]  J. Michael Spivey,et al.  The Z notation - a reference manual , 1992, Prentice Hall International Series in Computer Science.

[16]  Richard G. Hamlet,et al.  Data Abstraction, Implementation, Specification, and Testing , 1981, TOPL.

[17]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[18]  Cliff B. Jones,et al.  A Rigorous Approach to Formal Methods , 1996 .

[19]  David A. Carrington,et al.  A Tale of Two Paradigms: Formal Methods and Software Testing , 1994, Z User Workshop.

[20]  Bertrand Meyer,et al.  Eiffel: The Language , 1991 .

[21]  Ken Arnold,et al.  The Java programming language (2nd ed.) , 1998 .

[22]  Glenford J. Myers,et al.  Art of Software Testing , 1979 .

[23]  Barry Mark Utting An object-oriented refinement calculus with modular reasoning , 1992 .

[24]  Bjarne Stroustrup,et al.  The C++ programming language (2nd ed.) , 1991 .

[25]  K. Rustan M. Leino,et al.  An Extended Static Checker for Modular-3 , 1998, CC.

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

[27]  Jonathan Jacky,et al.  The Way of Z: Practical Programming with Formal Methods , 1996 .

[28]  David Lorge Parnas,et al.  Using Test Oracles Generated from Program Documentation , 1998, IEEE Trans. Software Eng..

[29]  Thomas B. Hilburn,et al.  Inspections of formal specifications , 1996, SIGCSE '96.

[30]  Mark Saaltink The Z/EVES System , 1997, ZUM.

[31]  David A. Carrington,et al.  A Framework for Specification-Based Testing , 1996, IEEE Trans. Software Eng..

[32]  Jeffrey M. Voas Quality Time: How Assertions Can Increase Test Effectiveness , 1997, IEEE Softw..

[33]  Michael L. Rhodes,et al.  Computers in Surgery and Therapeutic Procedures - Guest Editors' Introduction , 1996, Computer.

[34]  Jawed I. A. Siddiqi,et al.  A toolset to support the construction and animation of formal specifications , 1998, J. Syst. Softw..