Run-time consistency checking of algebraic specifications
TAV4 Proceedings of the symposium on Testing, analysis, and verification
Handbook of logic in computer science (vol. 2)
Simulating the Behavior of Software Modules by Trace Rewriting
IEEE Transactions on Software Engineering
The ASTOOT approach to testing object-oriented programs
ACM Transactions on Software Engineering and Methodology (TOSEM)
Daistish: systematic algebraic testing for OO programs in the presence of side-effects
ISSTA '96 Proceedings of the 1996 ACM SIGSOFT international symposium on Software testing and analysis
Foundations of programming languages
Foundations of programming languages
In black and white: an integrated approach to class-level testing of object-oriented programs
ACM Transactions on Software Engineering and Methodology (TOSEM)
Extreme programming explained: embrace change
Extreme programming explained: embrace change
Automatically Checking an Implementation against Its Formal Specification
IEEE Transactions on Software Engineering
Data Abstraction, Implementation, Specification, and Testing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Data Type Specification: Parameterization and the Power of Specification Techniques
ACM Transactions on Programming Languages and Systems (TOPLAS)
TACCLE: a methodology for object-oriented software testing at the class and cluster levels
ACM Transactions on Software Engineering and Methodology (TOSEM)
Finding bugs with a constraint solver
Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis
Alloy: a lightweight object modelling notation
ACM Transactions on Software Engineering and Methodology (TOSEM)
Compiling language definitions: the ASF+SDF compiler
ACM Transactions on Programming Languages and Systems (TOPLAS)
Test Driven Development: By Example
Test Driven Development: By Example
VAlloy - Virtual Functions Meet a Relational Language
FME '02 Proceedings of the International Symposium of Formal Methods Europe on Formal Methods - Getting IT Right
Debugging temporal specifications with concept analysis
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
A Tool for Writing and Debugging Algebraic Specifications
Proceedings of the 26th International Conference on Software Engineering
Rapid prototyping: in the OBJ executable specification language
Proceedings of the workshop on Rapid prototyping
Inferring method specifications from natural language API descriptions
Proceedings of the 34th International Conference on Software Engineering
Proceedings of the 2013 International Symposium on Software Testing and Analysis
Second-order constraints in dynamic invariant inference
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Hi-index | 0.00 |
Modern programs make extensive use of reusable software libraries. For example, a study of a number of large Java applications shows that between 17% and 30% of the classes in those applications use container classes defined in the java.util package. Given this extensive code reuse in Java programs, it is important for the interfaces of reusable classes to be well documented. An interface is well documented if it satisfies the following requirements: (1) the documentation completely describes how to use the interface; (2) the documentation is clear; (3) the documentation is unambiguous; and (4) any deviation between the documentation and the code is machine detectable. Unfortunately, documentation in natural language, which is the norm, does not satisfy the above requirements. Formal specifications can satisfy them but they are difficult to develop, requiring significant effort on the part of programmers. To address the practical difficulties with formal specifications, we describe and evaluate a tool to help programmers write and debug algebraic specifications. Given an algebraic specification of a class, our interpreter generates a prototype that can be used within an application like a regular Java class. When running an application that uses the prototype, the interpreter prints error messages that tell the developer in which way the specification is incomplete or inconsistent with a hand-coded implementation of the class. We use case studies to demonstrate the usefulness of our system.