|
ABSTRACT
The study of methodologies and techniques to produce correct software has been active for four decades. During this period, researchers have developed and investigated a wide variety of approaches, but techniques based on mathematical modeling of program behavior have been a particular focus since they offer the promise of both finding errors and assuring important program properties. The past fifteen years have seen a marked and accelerating shift towards algorithmic formal reasoning about program behavior - we refer to these as formal software analysis. In this paper, we define formal software analyses as having several important properties that distinguish them from other forms of software analysis. We describe three foundational formal software analyses, but focus on the adaptation of model checking to reason about software. We review emerging trends in software model checking and identify future directions that promise to significantly improve its cost-effectiveness.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
[1] J.-R. Abrial, E. Böorger, and H. Langmaack, editors. Formal Methods for Industrial Applications, Specifying and Programming the Steam Boiler Control, volume 1165 of Lecture Notes in Computer Science. Springer, 1996.
|
 |
2
|
Rajeev Alur , Pavol Černý , P. Madhusudan , Wonhong Nam, Synthesis of interface specifications for Java classes, Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.98-109, January 12-14, 2005, Long Beach, California, USA
|
| |
3
|
Rajeev Alur , Thomas A. Henzinger , Freddy Y. C. Mang , Shaz Qadeer , Sriram K. Rajamani , Serdar Tasiran, MOCHA: Modularity in Model Checking, Proceedings of the 10th International Conference on Computer Aided Verification, p.521-525, June 28-July 02, 1998
|
| |
4
|
[4] R. Alur, P. Madhusudan, and W. Nam. Symbolic Compositional Verification by Learning Assumptions. In Proceedings of CAV'05, pages 548-562, 2005.
|
 |
5
|
|
| |
6
|
|
| |
7
|
[7] J. Berdine, C. Calcagno, and P. W. O'Hearn. Smallfoot: Modular automatic assertion checking with separation logic. In FMCO, pages 115-137, 2005.
|
| |
8
|
|
| |
9
|
|
 |
10
|
|
| |
11
|
[11] L. Briand and A. Wolf, editors. Future of Software Engineering 2007. IEEE-CS Press, 2007.
|
| |
12
|
[12] http://research.microsoft.com/ qadeer/cav-issta.htm.
|
| |
13
|
|
| |
14
|
[14] Y. Cheon and G. T. Leavens. A runtime assertion checker for the Java modeling language. In Proceedings of the International Conference on Software Engineering Research and Practice, 2002.
|
| |
15
|
[15] A. Cimatti, E. Clarke, F. Giunchiglia, and M. Roveri. NuSMV : a new symbolic model checker. International Journal on Software Tools for Technology Transfer, 2(4):410-425, 2000.
|
 |
16
|
David G. Clarke , John M. Potter , James Noble, Ownership types for flexible alias protection, Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.48-64, October 18-22, 1998, Vancouver, British Columbia, Canada
|
| |
17
|
|
| |
18
|
[18] E. M. Clarke, O. Grumberg, and D. Peled. Model Checking. MIT Press, 2000.
|
| |
19
|
[19] J. M. Cobleigh, D. Giannakopoulou, and C. S. Pasareanu. Learning Assumptions for Compositional Verification. In Proceedings of TACAS'03, pages 331-346, 2003.
|
 |
20
|
Brian Cole , Daniel Hakim , David Hovemeyer , Reuven Lazarus , William Pugh , Kristin Stephens, Improving your software using static analysis to find bugs, Companion to the 21st ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, October 22-26, 2006, Portland, Oregon, USA
[doi> 10.1145/1176617.1176667]
|
 |
21
|
|
| |
22
|
[22] P. Cousot, R. Cousot, J. Feret, L. Mauborgne, A. Miné, D. Monniaux, and X. Rival. The astreé analyzer. In Proceeding of ESOP'05, pages 21-30, 2005.
|
| |
23
|
|
| |
24
|
|
| |
25
|
|
 |
26
|
|
| |
27
|
[27] S. Edelkamp, S. Leue, and A. Lluch-Lafuente. Partial-order reduction and trail improvement in directed model checking. International Journal on Software Tools for Technology Transfer, 6(4), 2004.
|
| |
28
|
|
 |
29
|
Michael D. Ernst , Adam Czeisler , William G. Griswold , David Notkin, Quickly detecting relevant program invariants, Proceedings of the 22nd international conference on Software engineering, p.449-458, June 04-11, 2000, Limerick, Ireland
[doi> 10.1145/337180.337240]
|
| |
30
|
|
 |
31
|
|
 |
32
|
Cormac Flanagan , K. Rustan M. Leino , Mark Lillibridge , Greg Nelson , James B. Saxe , Raymie Stata, Extended static checking for Java, Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation, June 17-19, 2002, Berlin, Germany
|
 |
33
|
|
| |
34
|
[34] C. Flanagan and S. Qadeer. Thread-modular model checking. In Proceedings of SPIN'03, pages 213-224, 2003.
|
| |
35
|
[35] R. Floyd. Assigning meaning to programs. In Proceedings of the Symposium on Applied Mathematics, 1967.
|
| |
36
|
|
 |
37
|
|
 |
38
|
|
| |
39
|
Patrice Godefroid , J. van Leeuwen , J. Hartmanis , G. Goos , Pierre Wolper, Partial-Order Methods for the Verification of Concurrent Systems: An Approach to the State-Explosion Problem, Springer-Verlag New York, Inc., Secaucus, NJ, 1996
|
| |
40
|
|
| |
41
|
[41] A. Groce and W. Visser. Heuristics for model checking java programs. Int'l. Journal on Software Tools for Tech. Transfer , 6(4):260-276, 2004.
|
 |
42
|
Bhargav S. Gulavani , Thomas A. Henzinger , Yamini Kannan , Aditya V. Nori , Sriram K. Rajamani, SYNERGY: a new algorithm for property checking, Proceedings of the 14th ACM SIGSOFT international symposium on Foundations of software engineering, November 05-11, 2006, Portland, Oregon, USA
[doi> 10.1145/1181775.1181790]
|
| |
43
|
[43] T. A. Henzinger, R. Jhala, R. Majumdar, and S. Qadeer. Thread-modular abstraction refinement. pages 262-274, July 2003.
|
 |
44
|
Thomas A. Henzinger , Ranjit Jhala , Rupak Majumdar , Grégoire Sutre, Lazy abstraction, Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, p.58-70, January 16-18, 2002, Portland, Oregon
|
 |
45
|
|
| |
46
|
[46] G. Holzmann and D. Bosnacki. Multi-Core Model Checking with SPIN. In Proceedings of HIPS-TOPMoDRS, Long Beach, CA, 2007. IEEE.
|
| |
47
|
|
| |
48
|
|
| |
49
|
[49] G. J. Holzmann and R. Joshi. Model-driven software verification. In Proceedings of SPIN'04, 2004.
|
| |
50
|
Monica Hutchins , Herb Foster , Tarak Goradia , Thomas Ostrand, Experiments of the effectiveness of dataflow- and controlflow-based test adequacy criteria, Proceedings of the 16th international conference on Software engineering, p.191-200, May 16-21, 1994, Sorrento, Italy
|
| |
51
|
[51] R. Iosif. Symmetry reductions for model checking of concurrent dynamic software. STTT, 6(4):302-319, 2004.
|
| |
52
|
|
| |
53
|
[53] C. B. Jones. Specification and Design of (Parallel) Programs. In Information Processing 83: Proceedings of the IFIP 9th World Congress, pages 321-332. IFIP: North Holland, 1983.
|
| |
54
|
|
| |
55
|
[55] S. Khurshid, C. S. Pasareanu, and W. Visser. Generalized symbolic execution for model checking and testing. In Proceedings of TACAS'03, 2003.
|
 |
56
|
|
| |
57
|
Barbara A. Kitchenham , Shari Lawrence Pfleeger , Lesley M. Pickard , Peter W. Jones , David C. Hoaglin , Khaled El Emam , Jarrett Rosenberg, Preliminary guidelines for empirical research in software engineering, IEEE Transactions on Software Engineering, v.28 n.8, p.721-734, August 2002
[doi> 10.1109/TSE.2002.1027796]
|
| |
58
|
[58] G. T. Leavens, A. L. Baker, and C. Ruby. JML: a Java modeling language. In Formal Underpinnings of Java Workshop, Oct. 1998.
|
| |
59
|
[59] A. Loginov, T. W. Reps, and S. Sagiv. Abstraction refinement via inductive learning. In Proceedings of CAV'05, pages 519-533, 2005.
|
| |
60
|
|
| |
61
|
|
 |
62
|
Madanlal Musuvathi , David Y. W. Park , Andy Chou , Dawson R. Engler , David L. Dill, CMC: a pragmatic approach to model checking real code, Proceedings of the 5th symposium on Operating systems design and implementation Due to copyright restrictions we are not able to make the PDFs for this conference available for downloading, December 09-11, 2002, Boston, Massachusetts
[doi> 10.1145/1060289.1060297]
|
| |
63
|
|
| |
64
|
[64] C. S. Pasareanu, R. Pelánek, and W. Visser. Concrete search with abstract matching and refinement. In Proceedings CAV'05, pages 52-66, 2005.
|
| |
65
|
|
| |
66
|
[66] Robby, E. Rodríguez, M. Dwyer, and J. Hatcliff. Checking Strong Specifications Using an Extensible Software Model Checking Framework. In Proceedings of TACAS'04, pages 404-420, 2004.
|
| |
67
|
[67] E. Rodríguez, M. Dwyer, C. Flanagan, J. Hatcliff, G. T. Leavens, and Robby. Extending sequential specification techniques for modular specification and verification of multi-threaded programs. In Proceedings of ECOOP'05, pages 551-576, 2005.
|
 |
68
|
|
 |
69
|
|
| |
70
|
[70] N. Sharygina, S. Chaki, E. Clarke, and N. Sinha. Dynamic Component Substitutability Analysis. In Proceedings of FM'05), volume 3582 of LNCS, pages 512-528, 2005.
|
| |
71
|
|
 |
72
|
|
 |
73
|
Jianbin Tan , George S. Avrunin , Lori A. Clarke , Shlomo Zilberstein , Stefan Leue, Heuristic-guided counterexample search in FLAVERS, Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering, October 31-November 06, 2004, Newport Beach, CA, USA
|
| |
74
|
|
 |
75
|
|
| |
76
|
[76] T. Xie, D. Marinov, W. Schulte, and D. Notkin. Symstra: A framework for generating object-oriented unit tests using symbolic execution. In Proceedings of TACAS'05, 2005.
|
 |
77
|
|
 |
78
|
Greta Yorsh , Thomas Ball , Mooly Sagiv, Testing, abstraction, theorem proving: better together!, Proceedings of the 2006 international symposium on Software testing and analysis, July 17-20, 2006, Portland, Maine, USA
[doi> 10.1145/1146238.1146255]
|
| |
79
|
[79] http://pmd.sourceforge.net.
|
| |
80
|
[80] http://www.satcompetition.org.
|
|