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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
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)
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)
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)
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)
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)
Bartetzko, D., Fischer, C., Möller, M., Wehrheim, H.: Jass - Java with assertions. Electronic Notes in Theoretical Computer Science 55 (2001)
Bruce, K.B.: Foundations of object-oriented languages: types and semantics. MIT Press, Cambridge (2002)
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)
Cardelli, L.: A semantics of multiple inheritance. Information and Computation 76(2-3), 138–164 (1988)
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)
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)
Findler, R., Felleisen, M.: Behavioral interface contracts for Java. Technical Report TR00-366, Rice University (2000)
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)
Hoare, C.A.R.: An axiomatic basis for computer programming. Communications of the ACM 12, 576–580 (1969)
Hoare, C.A.R.: Proof of correctness of data representations. Acta Informatica 1, 271–281 (1972)
Karaorman, M., Abercrombie, P.: jContractor: Introducing design-by-contract to Java using reflective bytecode instrumentation. Formal Methods in System Design 27, 275–312 (2005)
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)
Kramer, R.: iContract - the Java(tm) design by contract(tm) tool. In: TOOLS 1998, p. 295. IEEE Computer Society, Washington, DC (1998)
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)
Leavens, G., Cheon, Y.: Design by contract with JML (2006)
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)
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
Man Machine Systems: Design by contract for Java using JMSAssert (2009), http://www.mmsindia.com/DBCForJava.html
Martin, R.: The Liskov Substitution Principle. C++ Report 8, 16–17, 20–23 (1996)
Meyer, B.: Writing correct software. Dr. Dobb’s Journal 14, 48–60 (1989)
Meyer, B.: Applying “design by contract”. Computer 25, 40–51 (1992)
Meyer, B.: Object-oriented software construction, 2nd edn. Prentice-Hall (1997)
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)
Microsoft Corporation: Code contracts user manual (2010), http://research.microsoft.com/en-us/projects/contracts/userdoc.pdf
Object Management Group: Object constraint language version 2.2 (2010), http://www.omg.org/spec/OCL/2.2
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)
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)
Turing, A.: Checking a large routine. In: Report of a Conference on High Speed Automatic Calculating Machines, pp. 67–69 (1949)
Voigt, J.: Improving object oriented software contracts. Master’s thesis, University of Canterbury, Christchurch, New Zealand (2011)
Warmer, J., Kleppe, A.: The Object Constraint Language: Getting Your Models Ready for MDA. Addison-Wesley Longman Publishing Co., Inc., Boston (2003)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)