Abstract
The use of systematic testing and formal verification in the validation of reactive systems implemented in synchronous languages is illustrated. Systematic testing and formal verification are two techniques for checking the consistency between a program and its specification. The approach to validation is through specification: two system views are developed in addition to the program, a behavioural specification for systematic testing and a logical specification for formal verification. Pursuing both activities, reactive programs can be validated both more efficiently (in terms of costs) and more effectively (in terms of confidence in correctness). This principle is demonstrated here using the well known lift example.
Similar content being viewed by others
References
Benveniste, A. (1994) Synchronous languages provide safety in reactive systems design. Control Engineering September, 87–89.
BenvenisteA. and BerryG. (1991) The synchronous approach to reactive and real-time systems. Proceedings of the IEEE 79(9) pp. 1270–1282.
Bochmann, von G. and Petrenko, A. (1994) Protocol testing: review of methods and relevance for software testing. In Software Engineering Notes, special issue, Proc. of the 1994 International Symposium on Software Testing and Analysis (ISSTA), Association for Computing Machinery (ACM), pp. 109–124.
ClarkeE.M., EmersonE.A. and SistlaA.P. (1986) Automatic verification of finite-state concurrent systems using temporal logic specifications. ACM Trans. Programming Languages 8(2), pp. 244–263.
Halbwachs, N. (1993a) A Tutorial of LUSTRE, available by anonymous ftp from imag.imag.fr as file /ftp/pub/ LUSTRE/tutorial.ps, 19 pages.
HalbwachsN. (1993b) Synchronous Programming of Reactive Systems (Kluwer Academic, Dordrecht).
HalbwachsN., LagnierF. and RatelC. (1992) ‘Programming and verifying real-time systems by means of the synchronous data-flow language LUSTRE’. IEEE Trans. on Software Engineering 18(9) 785–793.
HarelD. and PnueliA. (1985) On the development of reactive systems’. In Logic and Models of Concurrent Systems, AptK. R. (ed.) (Springer-Verlag, Berlin) pp. 477–498.
LeGuernicP., GautierT., LeBorgneM. and LeMaireC., (1991) Programming real-time applications with Signal. Proceedings of the IEEE, 79(9) 1321–1336.
Liggesmeyer, P. (1995) A set of complexity metrics for guiding the software test process, in this issue.
McMillanK.L. (1993) Symbolic Model Checking (Kluwer Academic Publishers, Boston).
MüllerburgM. (1993) Formalising testing concepts. In KellyM. (ed) Management and Measurement of Software Quality, UNICOM Applied Information Technology Series, Ashgate Publishing Ltd., Aldershot, UK, pp. 155–166.
Müllerburg, M. (1994) ‘Why systematic testing is difficult: the problem of the sample’. In Miller, E. (ed.) Proc. of the Seventh International Software Quality Week, Software Research, San Francisco.
Müllerburg, M. (1995) ‘Systematic testing: a means for validating reactive systems’, (reprinted from EuroSTAR'94) in Software Testing, Verification, and Reliability 4(3).
Pilaud, D. and Halbwachs, N. (1988) From a synchronous declarative language to a temporal logic dealing with multiform time. In Formal Techniques in Real-Time and Fault-Tolerant Systems, Joseph, M. (ed.), Lecture Notes in Computer Science, 331 (Springer Verlag).
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Müllerburg, M., Holenderski, L., Maffeis, O. et al. Systematic testing and formal verification to validate reactive programs. Software Qual J 4, 287–307 (1995). https://doi.org/10.1007/BF00402649
Received:
Revised:
Issue Date:
DOI: https://doi.org/10.1007/BF00402649