The Computer Journal
Literate programming
The Z notation: a reference manual
The Z notation: a reference manual
Formal Approach to Scenario Analysis
IEEE Software
Experiences with cluster and class testing
Communications of the ACM
Reusable software: the Base object-oriented component libraries
Reusable software: the Base object-oriented component libraries
Mathematical Notation in Formal Specification: Too Difficult for the Masses?
IEEE Transactions on Software Engineering
ClassBench: a framework for automated class testing
Software—Practice & Experience
Object-oriented software construction (2nd ed.)
Object-oriented software construction (2nd ed.)
Testing generic Ada packages with APE
Proceedings of the 1998 annual ACM SIGAda international conference on Ada
Measuring the comprehensibility of Z specifications
Journal of Systems and Software
Testing object-oriented programs: from formal specification to test scenario generation
Journal of Systems and Software - Special issue on software engineering and knowledge engineering
Specifying the mode logic of a flight guidance system in CoRE and SCR
FMSP '98 Proceedings of the second workshop on Formal methods in software practice
Extreme programming explained: embrace change
Extreme programming explained: embrace change
STL tutorial and reference guide, second edition: C++ programming with the standard template library
STL tutorial and reference guide, second edition: C++ programming with the standard template library
The Java Language Specification
The Java Language Specification
A framework for table driven testing of Java classes
Software—Practice & Experience
Software requirements and acceptance testing
Annals of Software Engineering
IEEE Software
Programmatic Testing of the Standard Template Library Containers
ASE '98 Proceedings of the 13th IEEE international conference on Automated software engineering
Tools and Techniques for Java API Testing
ASWEC '00 Proceedings of the 2000 Australian Software Engineering Conference
Translating Object-Z Specifications to Passive Test Oracles
ICFEM '98 Proceedings of the Second IEEE International Conference on Formal Engineering Methods
Testing Java Monitors through Deterministic Execution
ASWEC '01 Proceedings of the 13th Australian Conference on Software Engineering
Increase Software Trustability with Self-Testable Classes in Java
ASWEC '01 Proceedings of the 13th Australian Conference on Software Engineering
A Case Study in Testing Distributed Systems
DOA '01 Proceedings of the Third International Symposium on Distributed Objects and Applications
Documentation Driven Development for Complex Real-Time Systems
IEEE Transactions on Software Engineering
Teaching Three Quality Assurance Techniques in Tandem - Lessons Learned
QSIC '05 Proceedings of the Fifth International Conference on Quality Software
Hi-index | 0.00 |
The rise of component-based software development has created an urgent need for effective application program interface (API) documentation. Experience has shown that it is hard to create precise and readable documentation. Prose documentation can provide a good overview but lacks precision. Formal methods offer precision but the resulting documentation is expensive to develop. Worse, few developers have the skill or inclination to read formal documentation.We present a pragmatic solution to the problem of API documentation. We augment the prose documentation with executable test cases, including expected outputs, and use the prose plus the test cases as the documentation. With appropriate tool support, the test cases are easy to develop and read. Such test cases constitute a completely formal, albeit partial, specification of input/output behavior. Equally important, consistency between code and documentation is demonstrated by runnig the test cases. This approach provides an attractive bridge between formal and informal documentation. We also present a tool that supports compact and readable test cases, and generation of test drivers and documentation, and illustrate the approach with detailed case studies.