skip to main content
10.1145/1147403.1147406acmconferencesArticle/Chapter ViewAbstractPublication PagesisstaConference Proceedingsconference-collections
Article

Formal verification of concurrent software: two case studies

Published: 17 July 2006 Publication History

Abstract

Software model checking came to the focus of research recently, with sharp growth in the number of safety-critical applications and in the complexity of software. In model checking of software we meet some obstacles which do not exist in model checking of hardware: the state explosion problem is more acute, the model often consists of many processes that run concurrently, and there also can be a requirement for correct behavior in the presence of failures. Also, the programs are written in high-level programming languages, which causes two problems: the model-checker has to understand a programming language,and the state space of the program can be infinite (for example, the range of values for integer values is infinite in theory). In this paper, we present two case studies of real projects at IBM, which were formally modeled and verified using ExpliSAT model checker, as well a testing tool ConTest. The second case also involves modeling limited Byzantine (malicious) failures of processes. We discuss the special structure of the control flow graph of these programs and perform probabilistic analysis of the number of random executions needed in order to execute all control flow paths with high probability. We also compare the performance of ConTest and ExpliSAT on these case studies.

References

[1]
S. Barner, C. Eisner, Z. Glazberg, D. Kroening, and I. Rabinovitz. Explisat: Guiding sat-based software verification with explicit states. Submitted for publication, 2005.
[2]
A. Bron, E. Farchi, Y. Magid, Y. Nir, and S. Ur. Applications of synchronization coverage. In PPOPP pages 206--212, 2005.
[3]
E. Clarke and E. Emerson. Design and synthesis of synchronization skeletons using branching time temporal logic. In Proc. Workshop on Logic of Programs volume 131 of Lecture Notes in Computer Science pages 52--71. Springer-Verlag, 1981.
[4]
E. Clarke, D. Kroening, and F. Lerda. A tool for checking ANSI-C programs. In Proceedings of the Tools and Algorithms for the Construction and Analysis of Systems (TACAS 2004) volume 2988 of Lecture Notes in Computer Science pages 168--176. Springer, 2004.
[5]
C. Dwork, N. Lynch, and L. Stockmeyer. Consensus in the presence of partial synchrony. Journal of the ACM 35(2): 288--323, April 1888.
[6]
O. Edelstein, E. Farchi, E. Goldin, Y. Nir, G. Ratsaby, and S. Ur. Testing multi-threaded Java programs. IBM System Journal Special Issue on Software Testing 41(1), February 2002.
[7]
P. Godefroid and N. Klarlund. Software model checking: Searching for computations in the abstract or the concrete. In Proceedings of Fifth International Conference on Integrated Formal Methods (IFM) volume3771of Lecture Notes in Computer Science pages 20--32, Eindhoven, November 2005. Springer-Verlag.
[8]
T. Hoare. The verifying compiler. http://research.microsoft.com/~thoare/, 2005.
[9]
O. Lichtenstein and A. Pnueli. Checking that finite state concurrent programs satisfy their linear specification. In Proc. 12th ACM Symp. on Principles of Programming Languages pages 97--107, New Orleans, January 1985.
[10]
B. Miller, D. Koski, C. Lee, V. Maganty, R. Murthy, A. Natarajan, and J. Steidl. Fuzz revisited: A re-examination of the reliability of unix utilities and services, 1995.
[11]
M. Mitzenmacher and E. Upfal. Probability and Computing: Randomized Algorithms and Probabilistic Analysis Cambridge University Press, UK, 2005.
[12]
M. W. Moskewicz, C. F. Madigan, Y. Zhao, L. Zhang, and S. Malik. Chaff: Engineering an Efficient SAT Solver. In Proceedings of the 38th Design Automation Conference (DAC¿01) 2001.
[13]
A. Pnueli. The temporal semantics of concurrent programs. Theoretical Computer Science 13: 45--60, 1981.
[14]
J. Queille and J. Sifakis. Specification and verification of concurrent systems in Cesar. In Proc. 5th International Symp. on Programming volume 137 of Lecture Notes in Computer Science pages 337--351. Springer-Verlag, 1981.
[15]
J. A. Whittaker. How to Break Software Addison-Wesley, 2003.

Cited By

View all
  • (2009)Can Component/Service-Based Systems Be Proved Correct?Proceedings of the 35th Conference on Current Trends in Theory and Practice of Computer Science10.1007/978-3-540-95891-8_2(3-18)Online publication date: 24-Jan-2009
  • (2007)Instrumenting where it hurtsProceedings of the 2007 international symposium on Software testing and analysis10.1145/1273463.1273469(27-38)Online publication date: 9-Jul-2007
  • (2007)Comparative Assessment of Testing and Model Checking Using Program MutationTesting: Academic and Industrial Conference Practice and Research Techniques - MUTATION (TAICPART-MUTATION 2007)10.1109/TAIC.PART.2007.37(210-222)Online publication date: Sep-2007
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PADTAD '06: Proceedings of the 2006 workshop on Parallel and distributed systems: testing and debugging
July 2006
84 pages
ISBN:1595934146
DOI:10.1145/1147403
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 17 July 2006

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Article

Conference

ISSTA06
Sponsor:

Upcoming Conference

ISSTA '25

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)2
  • Downloads (Last 6 weeks)1
Reflects downloads up to 12 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2009)Can Component/Service-Based Systems Be Proved Correct?Proceedings of the 35th Conference on Current Trends in Theory and Practice of Computer Science10.1007/978-3-540-95891-8_2(3-18)Online publication date: 24-Jan-2009
  • (2007)Instrumenting where it hurtsProceedings of the 2007 international symposium on Software testing and analysis10.1145/1273463.1273469(27-38)Online publication date: 9-Jul-2007
  • (2007)Comparative Assessment of Testing and Model Checking Using Program MutationTesting: Academic and Industrial Conference Practice and Research Techniques - MUTATION (TAICPART-MUTATION 2007)10.1109/TAIC.PART.2007.37(210-222)Online publication date: Sep-2007
  • (2007)ExpliSAT: Guiding SAT-Based Software Verification with Explicit StatesHardware and Software, Verification and Testing10.1007/978-3-540-70889-6_11(138-154)Online publication date: 2007
  • (2006)ExpliSATProceedings of the 2nd international Haifa verification conference on Hardware and software, verification and testing10.5555/1763218.1763232(138-154)Online publication date: 23-Oct-2006

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media