High-level testing and example-directed development of software specifications

Abstract A testing-based approach for constructing and refining very high-level software functionality representations such as intentions, natural language assertions, and formal specifications is presented and applied to a standard line-editing problem as an illustration. The approach involves the use of specification-based (black-box) test-case generation strategies, high-level specification formalisms, redundant or parallel development and cross-validation, and a logic programming support environment. Test-case reference sets are used as software functionality representations for the purposes of cross-validating two distinct high-level representations, and identifying ambiguities and omissions in those representations. In fact, we propose the use of successive refinements of such test reference sets as the authoritative specification throughout the software development process. Potential benefits of the approach include improvements in user/ designer communication over all life cycle phases, and an increase in the quality of specifications and designs.

[1]  Kenneth A. Foster Error Sensitive Test Cases Analysis (ESTCA) , 1980, IEEE Transactions on Software Engineering.

[2]  Robert A. Kowalski,et al.  Logic for problem solving , 1982, The computer science library : Artificial intelligence series.

[3]  John B. Goodenough,et al.  Toward a theory of test data selection , 1975 .

[4]  Eugene Miya,et al.  On "Software engineering" , 1985, SOEN.

[5]  Robert E. Noonan Structured programming and formal specification , 1975, IEEE Transactions on Software Engineering.

[6]  Glenford J. Myers,et al.  Art of Software Testing , 1979 .

[7]  David J. Panzl A method for evaluating software development techniques , 1981, J. Syst. Softw..

[8]  Jonathan A. Bauer,et al.  Test Plan Generation Using Formal Grammars , 1979, ICSE.

[9]  William E. Howden,et al.  Functional Program Testing , 1978, IEEE Transactions on Software Engineering.

[10]  William E. Howden Life-Cycle Software Validation , 1982, Computer.

[11]  Lawrence Yelowitz,et al.  Observations of Fallibility in Applications of Modern Programming Methodologies , 1976, IEEE Transactions on Software Engineering.

[12]  A. G. Duncan,et al.  Using attributed grammars to test designs and implementations , 1981, ICSE '81.

[13]  Peter Naur,et al.  Programming by action clusters , 1969 .

[14]  Robert L. Probert,et al.  User-Guided Test Sequence Generation , 1983, Protocol Specification, Testing, and Verification.

[15]  Leonard Bolc,et al.  Natural Language Communication with Computers , 1978, Lecture Notes in Computer Science.

[16]  K. Mani Chandy,et al.  Current trends in programming methodology , 1977 .