Elements of style: analyzing a software design feature with a counterexample detector

We illustrate the application of Nitpick, a specification checker, to the design of a style mechanism for a word processor. The design is cast, along with some expected properties, in a subset of Z. Nitpick checks a property by enumerating all possible cases within some finite bounds, displaying as a counterexample the first case for which the property fails to hold. Unlike animation or execution tools, Nitpick does not require state transitions to be expressed constructively, and unlike theorem provers, operates completely automatically without user intervention. Using a variety of reduction mechanisms, it can cover an enormous number of cases in a reasonable time, so that subtle flaws can be rapidly detected.

[1]  Jeannette M. Wing,et al.  A Case study in Model Checking Software Systems , 1997, Sci. Comput. Program..

[2]  David Notkin,et al.  Model checking large software specifications , 1996, SIGSOFT '96.

[3]  Doron A. Peled,et al.  Using partial-order methods in the formal validation of industrial concurrent programs , 1996, ISSTA '96.

[4]  Daniel Jackson,et al.  Efficient Search as a Means of Executing Specifications , 1996, TACAS.

[5]  Somesh Jha,et al.  Exploiting symmetry in temporal logic model checking , 1993, Formal Methods Syst. Des..

[6]  D. H. Walker,et al.  NRM tools: a flexible decision support environment for integrated catchment management , 1996 .

[7]  Somesh Jha,et al.  Faster checking of software specifications by eliminating isomorphs , 1996, POPL '96.

[8]  Jim Woodcock,et al.  Using Z - specification, refinement, and proof , 1996, Prentice Hall international series in computer science.

[9]  Michael Jackson,et al.  Problem decomposition for reuse , 1996, Softw. Eng. J..

[10]  Jeannette M. Wing,et al.  Model checking software systems: a case study , 1995, SIGSOFT FSE.

[11]  Daniel Jackson,et al.  Structuring Z specifications with views , 1995, TSEM.

[12]  Constance L. Heitmeyer,et al.  Consistency checking of SCR-style requirements specifications , 1995, Proceedings of 1995 IEEE International Symposium on Requirements Engineering (RE'95).

[13]  Daniel Jackson,et al.  Exploiting Symmetry in the Model Checking of Relational Specifications , 1994 .

[14]  Daniel Jackson,et al.  Abstract Model Checking of Infinite Specifications , 1994, FME.

[15]  Nancy G. Leveson,et al.  Requirements Specification for Process-Control Systems , 1994, IEEE Trans. Software Eng..

[16]  Edmund M. Clarke,et al.  Model checking and abstraction , 1994, TOPL.

[17]  Peter Gorm Larsen,et al.  The IFAD VDM-SL toolbox: a practical approach to formal specifications , 1994, SIGP.

[18]  Richard A. Kemmerer,et al.  Aslantest: a symbolic execution tool for testing Aslan formal specifications , 1994, ISSTA '94.

[19]  John K. Slaney,et al.  FINDER: Finite Domain Enumerator - System Description , 1994, CADE.

[20]  Peter A. Lindsay,et al.  Proof in VDM: A Practitioner's Guide , 1993, Proof in VDM.

[21]  Jonathan P. Bowen,et al.  Z and HOL , 1994, Z User Workshop.

[22]  David L. Dill,et al.  Better verification through symmetry , 1996, Formal Methods Syst. Des..

[23]  J. E. Nicholls,et al.  Z User Workshop, York 1991 , 1992, Workshops in Computing.

[24]  Edmund M. Clarke,et al.  Symbolic Model Checking: 10^20 States and Beyond , 1990, Inf. Comput..

[25]  Samuel H. Valentine Z--, an Executable Subset of Z , 1991, Z User Workshop.

[26]  John Gannon,et al.  State-based model checking of event-driven system requirements , 1991, SIGSOFT '91.

[27]  Peter Gorm Larsen,et al.  An Executable Subset of Meta-IV with Loose Specification , 1991, VDM Europe.

[28]  Stephen J. Garland,et al.  Debugging Larch Shared Language Specifications , 1990, IEEE Trans. Software Eng..

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

[30]  A. P. Sistla,et al.  Automatic verification of finite-state concurrent systems using temporal logic specifications , 1986, TOPL.

[31]  James J. Horning,et al.  Formal specification as a design tool , 1980, POPL '80.

[32]  Peter Henderson,et al.  Finite state modelling in program development , 1975, Reliable Software.