skip to main content
research-article
Free Access

Specification and verification: the Spec# experience

Published:01 June 2011Publication History
Skip Abstract Section

Abstract

Can a programming language really help programmers write better programs?

References

  1. Barnes, J. High-Integrity Software: The SPARK Approach to Safety and Security. Addison-Wesley, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Barnett, M., Chang, B.-Y. E., DeLine, R., Jacobs, B., and Leino, K.R.M. Boogie: A modular reusable verifier for object-oriented programs. In Proceedings of Formal Methods for Components and Objects, Volume 4111 LNCS (Amsterdam, The Netherlands, Nov. 1--4, 2005). Springer, 2006, 364--387. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Barnett, M., Leino, K.R.M., and Schulte, W. The Spec# programming system: An overview. In Proceedings of Construction and Analysis of Safe, Secure, and Interoperable Smart Devices, Volume 3362 LNCS (Nice, France, Mar. 8--11). Springer, 2005, 49--69. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Burdy, L., Cheon, Y., Cok, D. R., Ernst, M. D., Kiniry, J. R., Leavens, G. T., Leino, K.R.M., and Poll, E. An overview of JML tools and applications. Electronic Notes in Theoretical Computer Science 80 (2003), 212--232. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Chatterjee, S., Lahiri, S. K., Qadeer, S., and Rakamaric, Z. A reachability predicate for analyzing low-level software. In Proceedings of Tools and Algorithms for Construction and Analysis of Systems, Volume 4424 LNCS (Braga, Portugal, Mar. 24--Apr. 1). Springer, 2007, 19--33. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Cohen, E., Dahlweid, M., Hillebrand, M., Leinenbach, D., Moskal, M., Santen, T., Schulte, W., and Tobies, S. VCC: A practical system for verifying concurrent C. In Proceedings of Theorem Proving in Higher Order Logics, Volume 5674 LNCS (Munich, Aug. 17--20). Springer, 2009, 23--42. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. de Moura, L. and Bjørner, N. Z3: An efficient SMT solver. In Proceedings of Tools and Algorithms for Construction and Analysis of Systems, Volume 4963 LNCS (Budapest, Mar. 29--Apr. 6). Springer, 337--340. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Detlefs, D. L., Leino, K.R.M., Nelson, G., and Saxe, J. B. Extended Static Checking Research Report 159. Compaq Systems Research Center, Palo Alto, CA, 1998.Google ScholarGoogle Scholar
  9. Dhara, K. K. and Leavens, G. T. Forcing behavioral subtyping through specification inheritance. In Proceedings of the International Conference on Software Engineering (Berlin, Mar. 25--30). IEEE Computer Society Press, 1996, 258--267. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Fähndrich, M. and Leino, K.R.M. Declaring and checking non-null types in an object-oriented language. In Proceedings of the ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (Anaheim, CA, Oct. 26--30). ACM Press, New York, 2003, 302--312. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Fähndrich, M. and Xia, S., Establishing object invariants with delayed types. In Proceedings of the ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (Montrél, Oct. 21--25). ACM Press, New York, 2007, 337--350. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Filliâtre, J.-C. and Marché, C. The Why/Krakatoa/Caduceus platform for deductive program verification. In Proceedings of Computer Aided Verification, Volume 4590 LNCS (Berlin, July 3--7). Springer, 2007, 173--177. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Flanagan, C., Leino, K.R.M., Lillibridge, M., Nelson, G., Saxe, J. B., and Stata, R. Extended static checking for Java. In Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation (Berlin, June 17--19). ACM Press, New York, 2002, 234--245. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Floyd, R. W. Assigning meanings to programs. In Mathematical Aspects of Computer Science, Volume 19 of Proceedings of Symposia in Applied Mathematics. American Mathematical Society, 1967, 19--32.Google ScholarGoogle ScholarCross RefCross Ref
  15. Hoare, C., Misra, J., Leavens, G. T., and Shankar, N. The verified software initiative: A manifesto. ACM Computing Surveys 41, 4 (2009), 1--8. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Jacobs, B., Leino, K.R.M., Piessens, F., Smans, J., and Schulte, W. A programming model for concurrent object-oriented programs. ACM Transactions on Programming Languages and Systems 31, 1 (2008), 1--48. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Kassios, I. T. Dynamic frames: Support for framing, dependencies and sharing without restrictions. In Proceedings of World Congress on Formal Methods, Volume 4085 LNCS (Hamilton, Canada, Aug. 21--27). Springer, 2006, 268--283. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Leavens, G. T., Baker, A. L., and Ruby, C. Preliminary design of JML: A behavioral interface specification language for Java. ACM SIGSOFT Software Engineering Notes 31, 3 (2006), 1--38. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Leino, K.R.M. This is Boogie 2. Microsoft Research Technical Report (June 2008).Google ScholarGoogle Scholar
  20. Leino, K.R.M. and Müller, P. Using the Spec# language, methodology, and tools to write bug-free programs. Advanced Lectures on Software Engineering: LASER Summer School 2007/2008, Volume 6029 LNCS. Springer, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Liskov, B. H. and Wing, J. M. A behavioral notion of subtyping. ACM Transactions on Programming Languages and Systems 16, 6 (1994), 1811--1841. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Meyer, B. Object-oriented Software Construction. Prentice-Hall, 1988. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Müller, P. Modular Specification and Verification of Object-Oriented Programs, Volume 2262 LNCS. Springer, 2002.Google ScholarGoogle ScholarCross RefCross Ref
  24. Parkinson, M. J. and Bierman, G. M. Separation logic and abstraction. In Proceedings of the Symposium of Principles of Programming Languages (Long Beach, CA, Jan. 12--14). ACM Press, New York, 2005, 247--258. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Specification and verification: the Spec# experience

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    • Published in

      cover image Communications of the ACM
      Communications of the ACM  Volume 54, Issue 6
      June 2011
      134 pages
      ISSN:0001-0782
      EISSN:1557-7317
      DOI:10.1145/1953122
      Issue’s Table of Contents

      Copyright © 2011 ACM

      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]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 1 June 2011

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article
      • Popular
      • Refereed

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    HTML Format

    View this article in HTML Format .

    View HTML Format