Abstract
Research on how to reason about correctness properties of software systems using model checking is advancing rapidly. Work on extracting finite-state models from program source code and on abstracting those models is focused on enabling the tractable checking of program properties such as freedom from deadlock and assertion violations. For the most part, the problem of specifying more general program properties has not been considered.
In this paper, we report on the support for specifying properties of dynamic multi-threaded Java programs that we have built into the Bandera system. Bandera extracts finite-state models, in the input format of several existing model checkers, from Java code based on the property to be checked. The Bandera Specification Language (BSL) provides a language for defining general assertions and pre/post conditions on methods. It also supports the definition of observations that can be made of the state of program objects and the incorporation of those observations as predicates that can be instantiated in the scope of object quantifiers and used in describing common forms of state/event sequencing properties. We describe BSL and illustrate it on an example analyzed with Bandera and the Spin model checker.
This work supported in part by NSF under grants CCR-9633388, CCR-9703094, CCR-9708184, and CCR-9701418 and DARPA/NASA under grant NAG 21209.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Bal, T., Rajamani, S.K.: Boolean programs: A model and process for software analysis. Technical Report 2000-14, Microsoft Research (2000)
Browne, I.A., Manna, Z., Sipma, H.B.: FSTTCS 1995. LNCS, vol. 1026. Springer, Heidelberg (1995)
Cimatti, A., Clarke, E., Giunchiglia, F., Roveri, M.: NuSMV: a new symbolic model checker. International Journal on Software Tools for Technology Transfer (2000) (to appear)
Corbett, J.C., Dwyer, M.B., Hatcliff, J., Laubach, S., Păsăreanu, C.S., Robby, Zheng, H.: Bandera: Extracting finite-state models from Java source code. In: Proceedings of the 22nd International Conference on Software Engineering (June 2000)
Corbett, J.C., Dwyer, M.B., Hatcliff, J., Robby: Bandera: A source-level interface for model checking Java programs. In: Proceedings of the 22nd International Conference on Software Engineering (June 2000)
Darimont, R., van Lamsweerde, A.: Formal refinement patterns for goal-driven requirements elaboration. In: Proceedings of the Fourth ACM SIGSOFT Symposium on Foundations of Software Engineering, October 1996, pp. 179–190 (1996)
Demartini, C., Iosif, R., Sisto, R.: A deadlock detection tool for concurrent Java programs. Software - Practice and Experience 29(7), 577–603 (1999)
Demartini, C., Iosif, R., Sisto, R.: dspin: A dynamic extension of SPIN. In: Dams, D.R., Gerth, R., Leue, S., Massink, M. (eds.) SPIN 1999. LNCS, vol. 1680, p. 261. Springer, Heidelberg (1999)
Dillon, L.K., Kutty, G., Moser, L.E., Melliar-Smith, P.M., Ra- makrishna, Y.S.: A graphical interval logic for specifying concurrent systems. ACM Transactions on Software Engineering and Methodology 3(2), 131–165 (1994)
Dwyer, M.B., Avrunin, G.S., Corbett, J.C.: Property specification patterns for finite-state verification. In: Ardis, M. (ed.) Proceedings of the Second Workshop on Formal Methods in Software Practice, March 1998, pp. 7–15 (1998)
Dwyer, M.B., Pasareanu, C.S., Corbett, J.C.: Translating Ada programs for model checking: A tutorial. Technical Report 98-12, Kansas State University, Department of Computing and Information Sciences (1998)
Dwyer, M.B., Avrunin, G.S., Corbett, J.C.: A System of Specification Patterns (1998), http://www.cis.ksu.edu/santos/spec-patterns
Dwyer, M.B., Avrunin, G.S., Corbett, J.C.: Patterns in property specifications for finite-state verification. In: Proceedings of the 21st International Conference on Software Engineering (May 1999)
Grove, D.P.: Effective Interprocedural Optimization of Object-oriented Lan- guages. PhD thesis, University of Washington (1998)
Hatcliff, J., Corbett, J.C., Dwyer, M.B., Sokolowski, S., Zheng, H.: A formal study of slicing for multi-threaded programs with JVM concurrency primitives. In: Cortesi, A., Filé, G. (eds.) SAS 1999. LNCS, vol. 1694, p. 1. Springer, Heidelberg (1999)
Havelund, K., Pressburger, T.: Model checking Java programs using Java PathFinder. International Journal on Software Tools for Technology Transfer (1999)
Holzmann, G.J.: The model checker SPIN. IEEE Transactions on Software Engineering 23(5), 279–294 (1997)
Holzmann, G.J., Smith, M.H.: Software model checking: Extracting verification models from source code. In: Proceedings of FORTE/PSTV 1999 (November 1999)
Iosif, R., Sisto, R.: On the specification and semantics of source level properties in java. In: Proceedings of the First International Workshop on Automated Program Analysis Testing and Verification (June 2000), Held in conjunction with the 2000 Internation Conference on Software Engineering
Jackson, D.: Alloy: A lightweight object modelling notation
Kramer, R.: iContract|the Java Design by Contract tool. In: Proceedings of Technology of Object-Oriented Languages and Systems, TOOLS-USA. IEEE Press, Los Alamitos (1998)
Leavens, G.T., Baker, A.L., Ruby, C.: JML: a Java modeling lan- guage. In: Reflection and Software Engineering (1998)
Manna, Z., Pnueli, A.: The Temporal Logic of Reactive and Concurrent Systems: Specification. Springer, Heidelberg (1991)
Warmer, J., Kleppe, A.: The Object Constraint Language: Precise Mode- ling with UML. Addison-Wesley, Reading (1998)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2000 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Corbett, J.C., Dwyer, M.B., Hatcliff, J., Robby (2000). A Language Framework for Expressing Checkable Properties of Dynamic Software. In: Havelund, K., Penix, J., Visser, W. (eds) SPIN Model Checking and Software Verification. SPIN 2000. Lecture Notes in Computer Science, vol 1885. Springer, Berlin, Heidelberg. https://doi.org/10.1007/10722468_13
Download citation
DOI: https://doi.org/10.1007/10722468_13
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-41030-0
Online ISBN: 978-3-540-45297-3
eBook Packages: Springer Book Archive