Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article

Elements of Style: Analyzing a Software Design Feature with a Counterexample Detector

Published: 01 July 1996 Publication History
  • Get Citation Alerts
  • Abstract

    We demonstrate how Nitpick, a specification checker, can be applied 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, Nitpick 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.

    References

    [1]
    R. Anderson P. Beame S. Burns W. Chan F. Modugno D. Notkin and J. Reese, "Model Checking Large Specifications," Proc. Fourth SIGSOFT Conf. Foundations of Software Eng. (FSE-4), San Francisco, Oct. 1996.
    [2]
    J.M. Atlee and J.D. Gannon, "State-Based Model Checking of Event-Driven Systems Requirements," IEEE Trans. Software Eng., Jan. 1993.
    [3]
    J. Bicarregui J.S. Fitzgerald P.A. Lindsay R. Moore and B. Ritchie, Proof in VDM: A Practitioner's Guide. FACIT, Springer-Verlag, 1994.
    [4]
    J.R. Burch E.M. Clarke K.L. McMillan D.L. Dill and L.J. Hwang, "Symbolic Model Checking: 10<sup>20</sup> States and Beyond," Information and Computation, vol. 98, no. 2, pp. 142-170, June 1992.
    [5]
    J. Bowen and M.J.C. Gordon, "Z and HOL," Proc. Z User Workshop, pp. 141-167, Cambridge, England, Springer-Verlag Workshops in Computing, 1994.
    [6]
    R. Berghammer and C. Hattensperger, "Computer-Aided Manipulation of Relational Expressions and Formulae Using RALF," Technical Report, Institut fur Informatik und Praktische Mathematik, Christian-Albrechts Universitat Zu Kiel, Germany, 1994.
    [7]
    E.M. Clarke E.A. Emerson and A.P. Sistla, "Automatic Verification of Finite-State Concurrent Systems Using Temporal Logic Specifications," ACM Trans. Programming Languages and Systems, vol. 8, no. 2, pp. 244-263, 1986.
    [8]
    E.M. Clarke T. Filkorn and S. Jha, "Exploiting Symmetry in Temporal Logic Model Checking," Proc. Fifth Int'l Conf. Computer-Aided Verification, June 1993.
    [9]
    E.M. Clarke O. Grumberg and D.E. Long, "Model Checking and Abstraction," Proc. ACM Symp. Principles of Programming Languages, Jan. 1992.
    [10]
    C.A. Damon and D. Jackson, "Efficient Search as a Means of Executing Specifications," Proc. Second Int'l Workshop Tools and Algorithms for the Construction and Analysis of Systems (TACAS '96), Passau, Germany, Mar. 1996.
    [11]
    J. Douglas and R.A. Kemmerer, "Aslantest: A Symbolic Execution Tool for Testing Aslan Formal Specifications," Proc. Int'l Symp. Software Testing and Analysis, Seattle, Aug. 1994.
    [12]
    R. Elmstrom P.G. Larsen and P.B. Lassen, "The IFAD VDM-SL Toolbox: A Practical Approach to Formal Specifications," ACM SIGPLAN Notices, vol. 29, no. 9, pp. 77-80, Sept. 1994.
    [13]
    M. Engel and J.U. Skakkebaek, "Applying PVS to Z," Technical Report ID/DTU ME 3/1, ProCos Project, Dept. of Computer Science, Technical Univ. of Denmark, Lyngby, Denmark.
    [14]
    S. Garland J. Guttag and J. Horning, "Debugging Larch Shared Language Specifications," IEEE Trans. Software Eng., vol. 16, no. 9, pp. 1,044-1,057, Sept. 1990.
    [15]
    J. Guttag and J. Horning, "Formal Specification as a Design Tool," Proc. Seventh Symp. Principles of Programming Languages, Las Vegas, Jan. 1980.
    [16]
    P. Godefroid D. Peled and M. Staskauskas, "Using Partial-Order Methods in the Formal Validation of Industrial Concurrent Programs," Proc. Int'l Symp. Software Testing and Analysis (ISSTA), pp. 261-269, San Diego, Jan. 1996.
    [17]
    Specification Case Studies, second edition., I. Hayes, ed., Prentice Hall Int'l (UK) Ltd, 1993.
    [18]
    C. Heitmeyer B. Labaw and D. Kiskis, "Consistency Checking of SCR-Style Requirements Specifications," Proc. RE '95: Second IEEE Int'l Symp. Requirements Eng., pp. 56-63, York, England, Mar. 1995.
    [19]
    P. Henderson, "Finite State Modelling in Program Development," Proc. Int'l Conf. Reliable Software, Los Angeles, 1975.
    [20]
    G.J. Holtzmann, Design and Validation of Computer Protocols. Prentice Hall Software Series, Prentice Hall, 1991.
    [21]
    C. Ip and D. Dill, "Better Verification Through Symmetry," Proc. 11th Int'l Symp. Computer Hardware Description Languages and Their Applications, Apr. 1993.
    [22]
    D. Jackson, "Abstract Model Checking of Infinite Specifications," Proc. Formal Methods Europe Conf., Barcelona, 1994.
    [23]
    D. Jackson, "Exploiting Symmetry in the Model Checking of Relational Specifications," Technical Report CMU-CS-94-219, School of Computer Science, Carnegie Mellon Univ., Dec. 1994.
    [24]
    D. Jackson, "Structuring Z Specifications with Views," ACM Trans. Software Eng. and Methodology, vol. 4, no. 4, pp. 365-389, Oct. 1995.
    [25]
    D. Jackson and C.A. Damon, "Semi-Executable Specifications," Technical Report CMU-CS-95-216, School of Computer Science, Carnegie Mellon Univ., Nov. 1995.
    [26]
    D. Jackson and C.A. Damon, "Nitpick: A Checker for Software Specifications (Reference Manual)," Technical Report CMU-CS-96-109, School of Computer Science, Carnegie Mellon Univ., Jan. 1996.
    [27]
    D. Jackson and M. Jackson, "Problem Decomposition for Reuse," Software Eng. J., vol. 11, no. 1, pp. 11-30, Jan. 1996.
    [28]
    D. Jackson S. Jha and C.A. Damon, "Faster Checking of Software Specifications by Eliminating Isomorphs," Proc. ACM Symp. Principles of Programming Languages, St. Petersburg Beach, Fla., Jan. 1996.
    [29]
    R.B. Jones, "ICL ProofPower," British Computer Soc. Formal Aspects of Computer Science, Series 3, vol. 1, no. 1, pp. 10-13, 1992.
    [30]
    N.G. Leveson M.P.E. Heimdahl H. Hildreth and J.D. Reese, "Requirements Specification for Process-Control Systems," IEEE Trans. Software Eng., vol. 20, no. 9, pp. 684-707, Sept. 1994.
    [31]
    P.G. Larsen and P.B. Lassen, "An Executable Subset of Meta-IV with Loose Specification," VDM'91: Formal Software Development Methods, vol. 1, S. Prehn, W.J. Toetenel, eds., Lecture Notes in Computer Science 551, Springer-Verlag, 1991.
    [32]
    D. Parnas and J. Madey, "Functional Documentation for Computer Systems Engineering," Technical Report TR-90-287, Queen's Univ., Kingston, Ontario, Sept. 1990.
    [33]
    J.K. Slaney, "Finder: Finite Domain Enumerator, System Description," Proc. 12th Int'l Conf. Automated Deduction, pp. 798-801, Lecture Notes in Artificial Intelligence series, Springer Verlag, Berlin, 1994.
    [34]
    J.M. Spivey, The Z Notation: A Reference Manual, second edition. Prentice Hall, 1992.
    [35]
    S.H. Valentine, "Z—, An Executable Subset of Z," Z User Workshop, J.E. Nicholls, ed., York, 1991. Springer-Verlag Workshops in Computing, 1992.
    [36]
    J. Woodcock and J. Davies, Using Z: Specification, Refinement, and Proof. Prentice Hall International Series in Computer Science, 1996.
    [37]
    J. Wing and M. Vaziri-Farahani, "Model Checking Software Systems: A Case Study," Proc. SIGSOFT Conf. Foundations of Software Eng., Washington, D.C., Aug. 1995.

    Cited By

    View all
    • (2024)Understanding Transaction Bugs in Database SystemsProceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3639207(1-13)Online publication date: 20-May-2024
    • (2023)Formal Specification and Verification of JDK’s Identity Hash Map ImplementationFormal Aspects of Computing10.1145/359472935:3(1-26)Online publication date: 13-Sep-2023
    • (2023)Randomized Testing of Byzantine Fault Tolerant AlgorithmsProceedings of the ACM on Programming Languages10.1145/35860537:OOPSLA1(757-788)Online publication date: 6-Apr-2023
    • Show More Cited By

    Recommendations

    Reviews

    Richard A. Baker

    Jackson and Damon present an interesting approach to the validation of functional specifications by means of a counterexample detector. This counterexample detector, called Nitpick, examines a product feature specification and presents a set of cases that demonstrate conflicts in the specification. The specifications must be written in a subset of the Z language. The authors describe the use of Nitpick in the validation of the paragraph style function for several existing commercial word processing programs. In these trials, several counterexamples were discovered. However, only a small subset of the specifications for a word processor could be handled within the available time, due to the enormous size of the set of possible examples. To address the test set size, the authors describe a number of algorithms that were used to reduce the number of searches needed to find the counterexamples. These approaches alone make this paper worth reading. This well-organized and well-written paper should serve as an example to the technical community of how to convey complex ideas.

    Access critical reviews of Computing literature here

    Become a reviewer for Computing Reviews.

    Comments

    Information & Contributors

    Information

    Published In

    cover image IEEE Transactions on Software Engineering
    IEEE Transactions on Software Engineering  Volume 22, Issue 7
    Special issue: best papers of the 1996 international symposium on software testing and analysis ISSTA'96
    July 1996
    87 pages
    ISSN:0098-5589
    Issue’s Table of Contents

    Publisher

    IEEE Press

    Publication History

    Published: 01 July 1996

    Author Tags

    1. Abstract modeling
    2. Z notation
    3. exhaustive testing.
    4. formal specification
    5. model checking
    6. software design

    Qualifiers

    • Research-article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)0
    • Downloads (Last 6 weeks)0
    Reflects downloads up to 10 Aug 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Understanding Transaction Bugs in Database SystemsProceedings of the IEEE/ACM 46th International Conference on Software Engineering10.1145/3597503.3639207(1-13)Online publication date: 20-May-2024
    • (2023)Formal Specification and Verification of JDK’s Identity Hash Map ImplementationFormal Aspects of Computing10.1145/359472935:3(1-26)Online publication date: 13-Sep-2023
    • (2023)Randomized Testing of Byzantine Fault Tolerant AlgorithmsProceedings of the ACM on Programming Languages10.1145/35860537:OOPSLA1(757-788)Online publication date: 6-Apr-2023
    • (2023)Chipmunk: Investigating Crash-Consistency in Persistent-Memory File SystemsProceedings of the Eighteenth European Conference on Computer Systems10.1145/3552326.3567498(718-733)Online publication date: 8-May-2023
    • (2022)Efficient Protocol Testing Under Temporal Uncertain Event Using Discrete-event Network SimulationsACM Transactions on Modeling and Computer Simulation10.1145/349002832:2(1-30)Online publication date: 4-Mar-2022
    • (2021)A Lightweight Formalism for Reference Lifetimes and Borrowing in RustACM Transactions on Programming Languages and Systems10.1145/344342043:1(1-73)Online publication date: 17-Apr-2021
    • (2021)Facet-oriented ModellingACM Transactions on Software Engineering and Methodology10.1145/342807630:3(1-59)Online publication date: 11-Feb-2021
    • (2020)Scalable multiple-view analysis of reactive systems via bidirectional model transformationsProceedings of the 35th IEEE/ACM International Conference on Automated Software Engineering10.1145/3324884.3416579(993-1003)Online publication date: 21-Dec-2020
    • (2019)Bounded Exhaustive Testing with Certified and Optimized Data Enumeration ProgramsTesting Software and Systems10.1007/978-3-030-31280-0_10(159-175)Online publication date: 15-Oct-2019
    • (2018)Testing probabilistic programming systemsProceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3236024.3236057(574-586)Online publication date: 26-Oct-2018
    • Show More Cited By

    View Options

    View options

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media