Skip to main content

Comparing and Evaluating Existing Software Contract Tools

  • Conference paper
Book cover Evaluation of Novel Approaches to Software Engineering (ENASE 2011)

Abstract

The idea of using contracts to specify interfaces and interactions between software components was proposed several decades ago. Since then, a number of tools providing support for software contracts have been developed. In this paper, we explore eleven such technologies to investigate their approach to various aspects of software contracts. We present the similarities as well as the areas of significant disagreement and highlight the shortcomings of existing technologies. We briefly introduce PACT, a software contract tool under development, explaining its approach to various aspects of software contracts.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Barnett, M., Chang, B.-Y.E., DeLine, R., Jacobs, B., Leino, K.R.M.: Boogie: A Modular Reusable Verifier for Object-Oriented Programs. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2005. LNCS, vol. 4111, pp. 364–387. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  2. Barnett, M., Deline, R., Fähndrich, M., Leino, K.R.M., Schulte, W.: Verification of object-oriented programs with invariants. Journal of Object Technology 3, 27–56 (2004)

    Article  Google Scholar 

  3. Barnett, M., Fähndrich, M., Halleux, P.D., Logozzo, F., Tillmann, N.: Exploiting the synergy between automated-test-generation and programming-by-contract. In: Proceedings of ICSE 2009, 31th International Conference on Software Engineering, Companion, pp. 401–402 (2009)

    Google Scholar 

  4. Barnett, M., Leino, K.R.M., Schulte, W.: The Spec# Programming System: An Overview. In: Barthe, G., Burdy, L., Huisman, M., Lanet, J.-L., Muntean, T. (eds.) CASSIS 2004. LNCS, vol. 3362, pp. 49–69. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  5. Barnett, M., Naumann, D., Schulte, W., Sun, Q.: 99.44% pure: useful abstractions in specifications. In: ECOOP Workshop on Formal Techniques for Java-Like Programs, FTfJP (2004)

    Google Scholar 

  6. Bartetzko, D., Fischer, C., Möller, M., Wehrheim, H.: Jass - Java with assertions. Electronic Notes in Theoretical Computer Science 55 (2001)

    Google Scholar 

  7. Bruce, K.B.: Foundations of object-oriented languages: types and semantics. MIT Press, Cambridge (2002)

    Google Scholar 

  8. Canning, P.S., Cook, W.R., Hill, W.L., Olthoff, W.G.: Interfaces for strongly-typed object-oriented programming. In: OOPSLA 1989: Conference Proceedings on Object-Oriented Programming Systems, Languages and Applications, pp. 457–467. ACM, New York (1989)

    Chapter  Google Scholar 

  9. Cardelli, L.: A semantics of multiple inheritance. Information and Computation 76(2-3), 138–164 (1988)

    Article  MathSciNet  MATH  Google Scholar 

  10. Duncan, A., Hoelzle, U.: Adding contracts to Java with Handshake. Technical Report TRCS98-32, University of California at Santa Barbara, Santa Barbara, CA, USA (1998)

    Google Scholar 

  11. Fähndrich, M., Barnett, M., Logozzo, F.: Embedded contract languages. In: SAC 2010: Proceedings of the 2010 ACM Symposium on Applied Computing, pp. 2103–2110. ACM, New York (2010)

    Chapter  Google Scholar 

  12. Findler, R., Felleisen, M.: Behavioral interface contracts for Java. Technical Report TR00-366, Rice University (2000)

    Google Scholar 

  13. Flanagan, C., Leino, K.R.M., Lillibridge, M., Nelson, G., Saxe, J.B., Stata, R.: Extended static checking for Java. In: PLDI 2002: Proceedings of the ACM SIGPLAN 2002 Conference on Programming Language Design and Implementation, pp. 234–245. ACM, New York (2002)

    Chapter  Google Scholar 

  14. Hoare, C.A.R.: An axiomatic basis for computer programming. Communications of the ACM 12, 576–580 (1969)

    Article  MATH  Google Scholar 

  15. Hoare, C.A.R.: Proof of correctness of data representations. Acta Informatica 1, 271–281 (1972)

    Article  MATH  Google Scholar 

  16. Karaorman, M., Abercrombie, P.: jContractor: Introducing design-by-contract to Java using reflective bytecode instrumentation. Formal Methods in System Design 27, 275–312 (2005)

    Article  MATH  Google Scholar 

  17. Karaorman, M., Hölzle, U., Bruno, J.: jContractor: A Reflective Java Library to Support Design by Contract. In: Cointe, P. (ed.) Reflection 1999. LNCS, vol. 1616, pp. 175–196. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  18. Kramer, R.: iContract - the Java(tm) design by contract(tm) tool. In: TOOLS 1998, p. 295. IEEE Computer Society, Washington, DC (1998)

    Google Scholar 

  19. Leavens, G., Baker, A., Ruby, C.: Preliminary design of JML: a behavioral interface specification language for Java. SIGSOFT Software Engineering Notes 31, 1–38 (2006)

    Article  Google Scholar 

  20. Leavens, G., Cheon, Y.: Design by contract with JML (2006)

    Google Scholar 

  21. Leavens, G., Cheon, Y., Clifton, C., Ruby, C., Cok, D.: How the design of JML accommodates both runtime assertion checking and formal verification. Science of Computer Programming 55, 185–208 (2005)

    Article  MathSciNet  MATH  Google Scholar 

  22. Leino, K.R.M., Monahan, R.: Program verification using the Spec # programming system (2008), http://research.microsoft.com/en-us/projects/specsharp/etaps-specsharp-tutorial.ppt

  23. Man Machine Systems: Design by contract for Java using JMSAssert (2009), http://www.mmsindia.com/DBCForJava.html

  24. Martin, R.: The Liskov Substitution Principle. C++ Report 8, 16–17, 20–23 (1996)

    Google Scholar 

  25. Meyer, B.: Writing correct software. Dr. Dobb’s Journal 14, 48–60 (1989)

    Google Scholar 

  26. Meyer, B.: Applying “design by contract”. Computer 25, 40–51 (1992)

    Article  Google Scholar 

  27. Meyer, B.: Object-oriented software construction, 2nd edn. Prentice-Hall (1997)

    Google Scholar 

  28. Meyer, B., Ciupa, I., Leitner, A., Liu, L.L.: Automatic Testing of Object-Oriented Software. In: van Leeuwen, J., Italiano, G.F., van der Hoek, W., Meinel, C., Sack, H., Plášil, F. (eds.) SOFSEM 2007. LNCS, vol. 4362, pp. 114–129. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  29. Microsoft Corporation: Code contracts user manual (2010), http://research.microsoft.com/en-us/projects/contracts/userdoc.pdf

  30. Object Management Group: Object constraint language version 2.2 (2010), http://www.omg.org/spec/OCL/2.2

  31. Offutt, A.J., Xiong, Y., Liu, S.: Criteria for generating specification-based tests. In: ICECCS 1999: Proceedings of the 5th International Conference on Engineering of Complex Computer Systems, p. 119. IEEE Computer Society, Washington, DC (1999)

    Google Scholar 

  32. Tillmann, N., de Halleux, J.: Pex–White Box Test Generation for .NET. In: Beckert, B., Hähnle, R. (eds.) TAP 2008. LNCS, vol. 4966, pp. 134–153. Springer, Heidelberg (2008)

    Chapter  Google Scholar 

  33. Turing, A.: Checking a large routine. In: Report of a Conference on High Speed Automatic Calculating Machines, pp. 67–69 (1949)

    Google Scholar 

  34. Voigt, J.: Improving object oriented software contracts. Master’s thesis, University of Canterbury, Christchurch, New Zealand (2011)

    Google Scholar 

  35. Warmer, J., Kleppe, A.: The Object Constraint Language: Getting Your Models Ready for MDA. Addison-Wesley Longman Publishing Co., Inc., Boston (2003)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2013 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Voigt, J., Irwin, W., Churcher, N. (2013). Comparing and Evaluating Existing Software Contract Tools. In: Maciaszek, L.A., Zhang, K. (eds) Evaluation of Novel Approaches to Software Engineering. ENASE 2011. Communications in Computer and Information Science, vol 275. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-32341-6_4

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-32341-6_4

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-32340-9

  • Online ISBN: 978-3-642-32341-6

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics