Abstract
Most software developers today rely on only a small number of techniques to check their code for defects: peer review, code walkthroughs, and testing. Despite a rich literature on these subjects, the results often leave much to be desired. The current software testing process consumes a significant fraction of the overall resources in industrial software development, yet it cannot promise zero-defect code. There is reason to hope that the process can be improved. A range of tools and techniques has become available in the last few years that can asses the quality of code with considerably more rigor than before, and often also with more ease. Many of the new tools can be understood as applications of automata theory, and can readily be combined with logic model checking techniques.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
T. Ball, S.K. Rajamani, Automatically Validating Temporal Safety Properties of Interfaces, Proc. SPIN 2001 Workshop on Model Checking of Software, Springer LNCS 2057, May 2001, Toronto, pp. 103–122.
J. Corbett, M. Dwyer, et. al. Bandera: Extracting Finite-state Models from Java Source Code. Proc. ICSE 2000, Limerick, Ireland.
P. Cousot, R. Cousot, Static Determination of Dynamic Properties of Programs, In B. Robinet, (Ed.), Proc. 2nd Int. Symp. on Programming, Paris, France, April 1976, pp. 106–130.
J.J. Harrow, Runtime checking of multithreaded applications with Visual Threads. Proc. SPIN 2000 Workshop on Spin Model Checking and Software Verification, Springer LNCS 1885, August/Sept. 2001, Stanford University, pp. 331–343.
J. Hatcliff, M.B. Dwyer, and H. Zheng, Slicing software for model construction, Journal of Higher-Order and Symbolic Computation.
D. Engler, B. Chelf, A. Chou, and S. Hallem, Checking system rules using system-specific, programmer-written compiler extensions. Proc. 4th Symp. on Operating Systems Design and Implementation (OSDI), Usenix Organization, San Diego, CA., Oct. 22–25, 2000.
R. Gerth, D. Peled, M. Vardi, P. Wolper, Simple On-the-fly Automatic Verification of Linear Temporal Logic, Proc. Symp. on Protocol Specification Testing and Verification, Warsaw, Poland, 1995, pp. 3–18.
P.R. Gluck, G.J. Holzmann Using Spin Model Checking for Flight Software Verification, Proc. 2002 Aerospace Conference, IEEE, March 2002, Big Sky, MT, USA.
K. Havelund, T. Pressburger Model Checking Java Programs Using Java PathFinder Int. Journal on Software Tools for Technology Transfer.
G.J. Holzmann, The model checker. IEEE Trans. on Software Engineering, Vol 23, No. 5, pp. 279–295, May 1997.
G.J. Holzmann, Economics of Software Verification, Proc. Workshop on Program Analysis for Software Tools and Engineering, ACM, Snowbird, Utah, USA, June 2001.
G.J. Holzmann, and M.H. Smith, Automating software feature verification, Bell Labs Technical Journal, April–June 2000, pp. 72–87.
G.J. Holzmann, and M.H. Smith, FeaVer 1.0 User Guide, Technical Report, Bell Labs, February 28, 2002, 64 pgs.
G.J. Holzmann, Static source code checking for user-defined properties, Proc. IDPT 2002, 6th World Conference on Integrated Design & Process Technology, Pasadena, CA, USA, June 2002.
W.E. Howden, Functional Program Testing and Analysis, McGraw Hill, 1987.
W. Kelly, V. Maslov, W. Pugh, E. Rosser, T. Shpeisman, and D. Wonna-cott, The Omega calculator and library, Version 1.1.0. Technical Report November 18, 1996, University of Maryland.
B.W. Kernighan, and D.M. Ritchie, The C Programming Language, 2nd Edition, Prentice Hall, Englewood Cliffs, N.J., 1988.
O. Kupferman, M.Y. Vardi, Vacuity detection in temporal model checking, Conf. on Correct Hardware Design and Verification Methods, Springer-Verlag, LNCS 1703, 1999, pp. 82–96.
L. Amster, D.L. McClain(Eds.), Kill Duck Before Serving, Red Faces at The New York Times, Publ. St. Martin’s Griffin, New York, 2002, 172 pgs.
S. Savage, M. Burrows, G. Nelson, P. Sobalvarro, and T.E. Anderson. Eraser: A dynamic data race detector for multithreaded programming. ACM Transactions on Computer Systems, Vol. 15, No. 4, pp. 391–411, 1997.
C. Strachey, An impossible program, Computer Journal, Vol. 7, No. 4, January 1965, p. 313.
F. Tip, A survey of program slicing techniques. Journal of Programming Languages, Vol. 3, No. 3, Sept. 1995, pp. 121–189.
W. Visser, S. Park, and J. Penix, Applying predicate abstraction to model checking object-oriented programs. Proc. 3rd ACM SOGSOFT Workshop on Formal Methods in Software Practice, August 2000.
W. Visser, K. Havelund, G. Brat, and S. Park, Model checking programs. Proc. Int. Conf. on Automated Software Engineering, Sept. 2000.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2002 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Holzmann, G. (2002). Software Analysis and Model Checking. In: Brinksma, E., Larsen, K.G. (eds) Computer Aided Verification. CAV 2002. Lecture Notes in Computer Science, vol 2404. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45657-0_1
Download citation
DOI: https://doi.org/10.1007/3-540-45657-0_1
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-43997-4
Online ISBN: 978-3-540-45657-5
eBook Packages: Springer Book Archive