skip to main content
research-article
Free access

Specification and verification: the Spec# experience

Published: 01 June 2011 Publication History

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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[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.
[19]
Leino, K.R.M. This is Boogie 2. Microsoft Research Technical Report (June 2008).
[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.
[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.
[22]
Meyer, B. Object-oriented Software Construction. Prentice-Hall, 1988.
[23]
Müller, P. Modular Specification and Verification of Object-Oriented Programs, Volume 2262 LNCS. Springer, 2002.
[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.

Cited By

View all
  • (2024)Interactive Abstract Interpretation with Demanded SummarizationACM Transactions on Programming Languages and Systems10.1145/364844146:1(1-40)Online publication date: 15-Feb-2024
  • (2024)Co-Developing Programs and Their Proof of CorrectnessCommunications of the ACM10.1145/362472867:3(84-94)Online publication date: 22-Feb-2024
  • (2024)Well-Behaved (Co)algebraic Semantics of Regular Expressions in DafnyTheoretical Aspects of Computing – ICTAC 202410.1007/978-3-031-77019-7_3(43-61)Online publication date: 25-Nov-2024
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

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
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: 01 June 2011
Published in CACM Volume 54, Issue 6

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Research-article
  • Popular
  • Refereed

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)311
  • Downloads (Last 6 weeks)35
Reflects downloads up to 01 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Interactive Abstract Interpretation with Demanded SummarizationACM Transactions on Programming Languages and Systems10.1145/364844146:1(1-40)Online publication date: 15-Feb-2024
  • (2024)Co-Developing Programs and Their Proof of CorrectnessCommunications of the ACM10.1145/362472867:3(84-94)Online publication date: 22-Feb-2024
  • (2024)Well-Behaved (Co)algebraic Semantics of Regular Expressions in DafnyTheoretical Aspects of Computing – ICTAC 202410.1007/978-3-031-77019-7_3(43-61)Online publication date: 25-Nov-2024
  • (2024)Collective Contracts for Message-Passing Parallel ProgramsComputer Aided Verification10.1007/978-3-031-65630-9_3(44-68)Online publication date: 24-Jul-2024
  • (2024)Runtime Annotation Checking with Frama-C: The E-ACSL Plug-inGuide to Software Verification with Frama-C10.1007/978-3-031-55608-1_5(263-303)Online publication date: 10-Jul-2024
  • (2024)Formal Runtime Error Detection During Development in the Automotive IndustryVerification, Model Checking, and Abstract Interpretation10.1007/978-3-031-50524-9_1(3-26)Online publication date: 15-Jan-2024
  • (2023)Design by Contract for Deep Learning APIsProceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering10.1145/3611643.3616247(94-106)Online publication date: 30-Nov-2023
  • (2023)Sound Runtime Assertion Checking for Memory Properties via Program TransformationFormal Aspects of Computing10.1145/360595136:1(1-46)Online publication date: 31-Jul-2023
  • (2023)Identifying Overly Restrictive Matching Patterns in SMT-based Program Verifiers (Extended Version)Formal Aspects of Computing10.1145/357174835:2(1-27)Online publication date: 24-Jun-2023
  • (2023)Automated Verification of the Program Code in the Development Process According to Team Defined Rules2023 International Conference Automatics and Informatics (ICAI)10.1109/ICAI58806.2023.10339021(49-54)Online publication date: 5-Oct-2023
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Digital Edition

View this article in digital edition.

Digital Edition

Magazine Site

View this article on the magazine site (external)

Magazine Site

Login options

Full Access

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media