MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  Automatically checking an implementation against its formal specification (2000) [36 citations — 3 self]

Download:
Download as a PDF | Download as a PS
by Sergio Antoy, Dick Hamlet
IEEE Transactions on Software Engineering
ftp://ftp.cs.pdx.edu/pub/faculty/antoy/Testing-by-Self-Checking.ps.Z
Add To MetaCart

Abstract:

We propose to check the execution of an abstract data type's imperative implementation against its algebraic specification. An explicit mapping from implementation states to abstract values is added to the imperative code. The form of specification allows mechanical checking of desirable properties such as consistency and completeness, particularly when operations are added incrementally to the data type. During unit testing, the specification serves as a test oracle. Any variance between computed and specified values is automatically detected. When the module is made part of some application, the checking can be removed, or may remain in place for further validating the implementation. The specification, executed by rewriting, can be thought of as itself an implementation with maximum design diversity, and the validation as a form of multiversion-programming comparison.

Citations

1268 The C++ Programming Language – Stroustrup - 1997
1190 Object-Oriented Software Construction – Meyer - 1997
784 On the criteria to be used in decomposing systems into modules – Parnas - 1972
719 The Java Programming Language – Arnold, Gosling - 1996
579 Term rewriting systems – Klop - 1992
418 Simple word problems in universal algebras – Knuth, Bendix - 1970
342 Proofs of correctness of data representations – Hoare - 1972
305 Confluent reductions: Abstract properties and applications to term rewriting systems: Abstract properties and applications to term rewriting systems – Huet - 1980
240 E.G.: ‘An initial algebra approach to specification, correctness and implementation of abstract data types – GOGUEN, THATCHER, et al. - 1978
211 Selecting software test data using data flow information – Rapps, Weyuker - 1985
204 Fundamentals of Algebraic Specification 1 – Ehrig, Mahr - 1985
162 An Experimental Evaluation of the Assumption of Independence in Multiversion Programming – Knight, Leveson - 1986
135 Yacc: Yet another compiler compiler – Johnson - 1979
112 Partition testing does not inspire confidence – Hamlet, Taylor - 1990
109 Lex - a lexical analyzer generator – Lesk, Schmidt - 1975
107 Introducing OBJ3 – Goguen, Winkler, et al. - 2000
100 editors. Algebraic Specification – Bergstra, Heering, et al. - 1989
89 The algebraic specification of abstract data types – Guttag, Horning - 1978
87 The Larch family of specification languages – GUTTAG, HORNING, et al. - 1985
79 Testing programs with the aid of a compiler – Hamlet - 1977
75 Fault Tolerance by Design Diversity: Concepts and Experiments – Avizienis, Kelly - 1984
68 Equational Logic as a Programming Language – O'Donnell - 1985
62 Comparing the Effectiveness of Software Testing Strategies – Basili, Selby - 1987
57 On the Automated Generation of Program Test Data – Ramamoorthy, Ho, et al. - 1976
56 A Comparison of Some Structural Testing Strategies – Ntafos - 1988
47 Abstract data types and software validation – Guttag, Horowitz, et al. - 1978
46 Data-abstraction implementation, specification and testing – Gannon, McMullin, et al. - 1981
40 Programming with Specifications: An Introduction to Anna, A language for specifying Ada programs – Luckham, editor - 1990
37 The Operational Versus the Conventional Approach to Software Development – Zave - 1984
35 Operational semantics of order-sorted algebra – Goguen, Jouannaud, et al. - 1985
32 Random testing – Hamlet - 2002
30 Case studies on testing object-oriented programs – Doong, Frankl - 1991
26 Methodology for the generation of program test data – Howden - 1975
20 The Design of Data Type Specifications – Guttag, Horowitz, et al. - 1978
18 GYPSY: A language for specification and implementation of verifiable programs – Ambler, Good, et al. - 1977
17 Theory of Modules – Gannon, Hamlet, et al. - 1987
16 An Initial Algebra Approach to the Specification – Goguen, Thatcher, et al. - 1978
15 Software Templates – Volpano, Kieburtz - 1985
13 Module test case generation – Hoffman, Brealey - 1989
11 Fault Tolerance by Design Diversity – Avizienis, Kelly - 1984
11 Test Data Generation Using a Prolog with Constraints – Choquet - 1986
8 A lexical analyzer generator for Standard ML – Appel, Mattson, et al. - 1989
8 The use of self checks and voting in software detection: An empirical study – Leveson, Cha, et al. - 1990
8 A formal notion of program-based test data adequacy – Davis, Weyuker - 1983
8 Run-time consistency checking of algebraic specifications – Sankar - 1991
7 Sbreve2: A term rewriting laboratory with (AC-)unfailing completion – Anantharaman, Hsiang, et al. - 1989
7 ªOn the Criteria to be Used in Decomposing Systems into Modules,º – Parnas - 1972
7 Hardware testing and Software ICs – Hoffman - 1989
7 Using term rewriting systems to verify software – Antoy, Gannon - 1994
7 Dynamic verification of C++ generic algorithms – Wang, Musser - 1997