Abstract
The use of formal methods in software engineering requires that the user adopt a suitable level of precision in the description of both design artifacts and the properties that should hold for those artifacts. The level of precision must be sufficiently high that the logical consistency of the design and the logic properties can be verified mechanically.
The source code of any well-defined program is itself a formal object, although it typically contains more detail than desirable for effective analysis. But, practitioners often have no problem producing or recognizing an abstracted version of the key features of a design, expressed in the modeling language of a verification tool.
The real problem preventing a broader acceptance of formal methods is that there are no intuitive formalisms that practitioners can use to express logic requirements at the level of precision that is required for formal verification. That problem is the focus of this paper.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
References
Lutz, R.R.: Analyzing software requirements errors in safety-critical embedded systems. In: Proceedings IEEE International Symposium on Requirements Engineering, pp. 126–133. San Diego, CA, January (1993)
Pnueli, A.: The temporal logic of programs. In: Proceedings 18th FOCS, pp. 46–57. Providence, RI, November (1977)
Smith, M.H., Holzmann, G.J., Etessami, K.: Events and constraints a graphical editor for capturing logic properties of programs. In: Proceedings 5th International Symposium on Requirements Engineering, pp. 14–22. Toronto Canada, August (2001)
Holzmann, G.J.: The Spin Model Checker - Primer and Reference Manual. Addison-Wesley, Mass (2004)
Bohn, J., Damm, W., Grumberg, O., Hungar, H., Laster, K.: First-order-CTL model checking. In: Arvind, V., Ramanujam, S. (eds.) FSTTCS 1998. LNCS, vol. 1530, pp. 283–294. Springer, Heidelberg (1998). https://doi.org/10.1007/978-3-540-49382-2_27
Havelund, K., Reger, G., Thoma, D., Zălinescu, E.: Monitoring events that carry data. In: Bartocci, E., Falcone, Y. (eds.) Lectures on Runtime Verification. LNCS, vol. 10457, pp. 61–102. Springer, Cham (2018). https://doi.org/10.1007/978-3-319-75632-5_3
Savage, S., Burrows, M., Nelson, G., Sobalvarro, P.: Eraser: a dynamic data race detector for multithreaded programs. ACM Trans. Comput. Syst. 15(4), 391–411 (1997)
Rete algorithm. https://en.wikipedia.org/wiki/Rete_algorithm
Clavel, M., Eker, S., Lincoln, P., Meseguer, J.: Principles of maude. In: 1st International Workshop on Rewriting Logic and its Applications. Electronic Notes in Theoretical Computer Science, vol. 4 (1996)
Holzmann, G.J.: Cloud-based verification of concurrent software. In: Jobstmann, B., Leino, K.R.M. (eds.) VMCAI 2016. LNCS, vol. 9583, pp. 311–327. Springer, Heidelberg (2016). https://doi.org/10.1007/978-3-662-49122-5_15
Holzmann, G.J.: Cobra: a light-weight tool for static and dynamic program analysis. Innov. Syst. Softw. Eng. NASA J. 13(1), 35–49 (2017). http://spinroot.com/cobra
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2019 Springer Nature Switzerland AG
About this chapter
Cite this chapter
Holzmann, G.J. (2019). Formalizing Requirements Is \(\Diamond \Box \) Hard. In: Bartocci, E., Cleaveland, R., Grosu, R., Sokolsky, O. (eds) From Reactive Systems to Cyber-Physical Systems. Lecture Notes in Computer Science(), vol 11500. Springer, Cham. https://doi.org/10.1007/978-3-030-31514-6_4
Download citation
DOI: https://doi.org/10.1007/978-3-030-31514-6_4
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-31513-9
Online ISBN: 978-3-030-31514-6
eBook Packages: Computer ScienceComputer Science (R0)