Semantic Guidance and Feedback for the Construction of Specifications and Implementations

The problem of writing a specification which accurately reflects the intent of the developer has long been recognized as fundamental. We propose a method and a supporting tool to write and check a specification and an implementation using a set of use cases, \ie input-output pairs that the developer supplies. These are instances of both good (correct) and bad (incorrect) behavior. We assume that the use cases are accurate, as it is easier to generate use cases than to write an accurate specification. We incrementally construct a specification (precondition and postcondition) based on semantic feedback generated from these use cases. We check the accuracy of the constructed specification using two proposed algorithms. The first algorithm checks the accuracy of the specification against an automatically generated specification from a supplied finite domain of use cases. The second checks the accuracy of the specification via reducing its domain to a finite yet equally satisfiable domain if possible. When the specification is mature, we start to also construct a program that satisfies the specification. However, our method makes provision for the continued modification of the specification, if needed. We illustrate our method with two examples; linear search and text justify.

[1]  Constance L. Heitmeyer,et al.  Automated consistency checking of requirements specifications , 1996, TSEM.

[2]  Kanth Miriyala,et al.  Automatic Derivation of Formal Software Specifications From Informal Descriptions , 1991, IEEE Trans. Software Eng..

[3]  Myla Archer,et al.  Using Abstraction and Model Checking to Detect Safety Violations in Requirements Specifications , 1998, IEEE Trans. Software Eng..

[4]  Mats Per Erik Heimdahl,et al.  NIMBUS: a tool for specification centered development , 2003, Proceedings. 11th IEEE International Requirements Engineering Conference, 2003..

[5]  Paul A. Strooper,et al.  Requirements engineering and verification using specification animation , 1998, Proceedings 13th IEEE International Conference on Automated Software Engineering (Cat. No.98EX239).

[6]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[7]  C. A. R. HOARE,et al.  An axiomatic basis for computer programming , 1969, CACM.

[8]  Shinji Kusumoto,et al.  An approach to safety and correctness verification of software design specification , 1995, Proceedings of Sixth International Symposium on Software Reliability Engineering. ISSRE'95.

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

[10]  Axel van Lamsweerde,et al.  Inferring Declarative Requirements Specifications from Operational Scenarios , 1998, IEEE Trans. Software Eng..

[11]  Russell W. Quong,et al.  ANTLR: A predicated‐LL(k) parser generator , 1995, Softw. Pract. Exp..

[12]  Tim Miller,et al.  A framework and tool support for the systematic testing of model-based specifications , 2003, TSEM.

[13]  Stacy J. Prowell,et al.  Foundations of Sequence-Based Software Specification , 2003, IEEE Trans. Software Eng..

[14]  Martin S. Feather Constructing Specifications by Combining Parallel Elaborations , 1989, IEEE Trans. Software Eng..

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

[16]  David Gries,et al.  The Science of Programming , 1981, Text and Monographs in Computer Science.