Achieving software reliability takes many complementary tech-niques, directed at the process or at the products. This survey summarizes some of the most fruitful ideas.


Model Check Test Suite Software Quality Software Reliability Buffer Overflow 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Avizienis, A., Laprie, J.-C., Randell, B.: Fundamental Concepts of Dependability. In: Proceedings of Third Information Survivability Report, pp. 7–12 (October 2000), available among other places at:
  2. 2.
    Back, R.: A Calculus of Refinements for Program Derivations. Acta Informatica 25, 593–624 (1988), available at MATHCrossRefMathSciNetGoogle Scholar
  3. 3.
    Ball, T., Rajamani, S.K.: Automatically Validating Temporal Safety Properties of Interfaces. In: Dwyer, M.B. (ed.) SPIN 2001. LNCS, vol. 2057, pp. 103–122. Springer, Heidelberg (2001), available at: CrossRefGoogle Scholar
  4. 4.
    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(6); Special issue: ECOOP 2003 workshop on Formal Techniques for Java-like Programs, June 2004, pp. 27–56 (2004), available at: Google Scholar
  5. 5.
    Barnett, M., Rustan, K., Leino, 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)CrossRefGoogle Scholar
  6. 6.
    Beck, K., Andres, C.: Extreme Programming Explained: Embrace Change, 2nd edn. Addison-Wesley, Reading (2004)Google Scholar
  7. 7.
    Bezault, É.: Gobo Eiffel Test, online documentation at,
  8. 8.
    Binder, R.: Testing Object-Oriented Systems: Models, Patterns, and Tools. Addison-Wesley, Reading (1999)Google Scholar
  9. 9.
    Blanchet, B., Cousot, P., Cousot, R., Feret, J., Mauborgne, L., Miné, A., Monniaux, D., Rival, X.: ASTRÉE: A Static Analyzer for Large Safety-Critical Software. In: Applied Deductive Verification, Dagstuhl Seminar 3451 (November 2003), available at: See also ASTRÉE page at:
  10. 10.
    Boehm, B.W.: Software Engineering Economics. Prentice Hall, Englewood Cliffs (1981)MATHGoogle Scholar
  11. 11.
    Boehm, B.W.: A Spiral Model of Software Development and Enhancement. Computer (IEEE) 21(5), 61–72 (1988)CrossRefGoogle Scholar
  12. 12.
    Boehm, B.W., et al.: Software Cost Estimation with COCOMO II. Prentice Hall, Englewood Cliffs (2000)Google Scholar
  13. 13.
    Boyapati, C., Khurshid, S., Marinov, D.: Korat: Automated Testing Based on Java Predicates. In: Proceedings of the 2002 International Symposium on Software Testing and Analysis (ISSTA), Rome, July 22–24 (2002), available at:
  14. 14.
    Chen, T.Y., Leung, H., Mak, I.K.: Adaptive random testing. In: Maher, M.J. (ed.) ASIAN 2004. LNCS, vol. 3321, pp. 320–329. Springer, Heidelberg (2004), CrossRefGoogle Scholar
  15. 15.
    Ciupa, I., Leitner, A.: Automated Testing Based on Design by Contract. In: Proceedings of Net.ObjectsDays 2005, 6th Annual Conference on Object-Oriented and Internet-Based Technologies, Concepts and Applications for a Networked World, pp. 545–557 (2005),, see also AutoTest page at:
  16. 16.
    Ciupa, I., Leitner, A., Oriol, M., Meyer, B.: Object Distance and its Application to Adaptive Random testing of Object-Oriented Programs (2006) (submitted for publication), available at:
  17. 17.
    Clarke Jr., E.M., Grumberg, O., Peled, D.A.: Model Checking. MIT Press, Cambridge (1999)Google Scholar
  18. 18.
    Cousot, P.: Verification by Abstract Interpretation. In: Dershowitz, N. (ed.) Verification: Theory and Practice. LNCS, vol. 2772, pp. 243–268. Springer, Heidelberg (2004)CrossRefGoogle Scholar
  19. 19.
    Cusumano, M., Selby, R.: Microsoft Secrets. The Free Press, New York (1995)Google Scholar
  20. 20.
    Dahl, O.-J., Dijkstra, E.W., Hoare, C.A.R.: Structured Programming. Academic Press, London (1971)Google Scholar
  21. 21.
    Detlefs, D.L., Rustan, K., Leino, M., Nelson, G., Saxe, J.B.: Extended Static Checking, Research Report 159, Compaq Systems Research Center (December 1998), available at:
  22. 22.
    Dijkstra, E.W.: Go To Statement Considered Harmful. Communications of the ACM 11(3), 147–148 (1968), CrossRefMathSciNetGoogle Scholar
  23. 23.
    Dijkstra, E.W.: Notes on Structured Programming. In: [20]; original typescript, available at:
  24. 24.
    Dijkstra, E.W.: A Discipline of Programming. Prentice Hall, Englewood Cliffs (1978)Google Scholar
  25. 25.
    Dreger, B.J.: Function Point Analysis. Prentice Hall, Englewood Cliffs (1989)Google Scholar
  26. 26.
    Dubois, P., Howard, M., Meyer, B., Schweitzer, M., Stapf, E.: From Calls to Agents. Journal of Object-Oriented Programming (JOOP) 12(6) (September 1999), available at:
  27. 27.
    Eclipse pages at,
  28. 28.
    ECMA/ISO: Eiffel: Analysis, Design and Programming Language, standard ECMA 367, as ISO standard (accepted, April 2006), available at:
  29. 29.
    Eiffel open-source development site at:
  30. 30.
    Eiffel Software: EiffelStudio documentation online at:
  31. 31.
    Ernst, M.D., Cockrell, J., Griswold, W.G., Notkin, D.: Dynamically Discovering Likely Program Invariants to Support Program Evolution. IEEE Transactions on Software Engineering 27(2), 1–25 (2001), CrossRefGoogle Scholar
  32. 32.
    Gamma, E., Helms, R., Johnson, R., Vlissides, J.: Design Patterns. Addison-Wesley, Reading (1994)Google Scholar
  33. 33.
    Ghezzi, C., Jazayeri, M., Mandrioli, D.: Software Engineering, 2nd edn. Prentice Hall, Englewood Cliffs (2003)Google Scholar
  34. 34.
    Hamlet, R.: Random Testing. In: Marciniak, J.J. (ed.) Encyclopedia of Software Engineering (1994), available at:
  35. 35.
    Henderson-Sellers, B.: Object-Oriented Metrics: Measures of Complexity. Prentice Hall, Englewood Cliffs (1995)Google Scholar
  36. 36.
    Henzinger, T.A., Nicollin, X., Sifakis, J., Yovine, S.: Symbolic Model Checking for Real-Time Systems. In: Logic in Computer Science, Proceedings of 7th Symposium in Logics for Computer Science, Santa Cruz, California, pp. 394–406 (1992), available at:
  37. 37.
    Hoare, C.A.R.: An axiomatic basis for computer programming. Communications of the ACM 12(10), 576–580 (1969), available at: MATHCrossRefGoogle Scholar
  38. 38.
    Hoare, C.A.R., Misra, J.: Verified Software: Theories, Tools, Experiments. In: Vision of a Grand Challenge Project, foundation paper for the VSTTE conference [77] (October 2005), available at:
  39. 39.
    IFIPWorking Group 10.4 on dependable computing and fault tolerance: home page at:
  40. 40.
    Jackson, M.: Problem Frames: Analysing and Structuring Software Development Problems. Addison-Wesley, Reading (2001)Google Scholar
  41. 41.
    Jézéquel, J.-M., Meyer, B.: Design by Contract: The Lessons of Ariane. Computer (IEEE) 30(1), 129–130 (1997), available at: CrossRefGoogle Scholar
  42. 42.
    JUnit pages at SourceForge: junit.sourceforge.netGoogle Scholar
  43. 43.
    Leavens, G.T., Cheon, Y.: Design by Contract with JML (Draft), at:, see also other JML papers at:
  44. 44.
    Leitner, A., Ciupa, I., Meyer, B., Howard, M.: Reconciling Manual and Automated Testing: The AutoTest Experience (submitted for publication, 2006)Google Scholar
  45. 45.
    Leveson, N.G.: System Safety in Computer-Controlled Automotive Systems, SAE Congress (March 2000), available at:
  46. 46.
    Lyu, M.R. (ed.): Handbook of Software Reliability Engineering. IEEE Computer Society Press and McGraw-Hill, Los Alamitos (1995), also available online at: Google Scholar
  47. 47.
    Manna, Z., Pnueli, A.: The temporal logic of reactive and concurrent systems. Springer, Heidelberg (1992)Google Scholar
  48. 48.
    McCabe, T.J.: A Complexity Measure. IEEE Transactions on Software Engineering 2(4), 308–320 (1976)CrossRefMathSciNetGoogle Scholar
  49. 49.
    McCabe, T.J., Butler, C.W.: Design Complexity Measurement and Testing. Communications of the ACM 32(12), 1415–1425 (1989)CrossRefGoogle Scholar
  50. 50.
    Meyer, B.: Introduction to the Theory of Programming Languages. Prentice Hall, Englewood Cliffs (1990)Google Scholar
  51. 51.
    Meyer, B.: The New Culture of Software Development: Reflections on the Practice of Object-Oriented Design. In: Mandrioli, D., Meyer, B. (eds.) Advances in Object-Oriented Software Engineering. Prentice Hall, Englewood Cliffs (1991)Google Scholar
  52. 52.
    Meyer, B.: Eiffel: The Language, 2nd printing. Prentice Hall, Englewood Cliffs (1992)MATHGoogle Scholar
  53. 53.
    Meyer, B.: Applying Design by Contract. Computer (IEEE) 25(10), 40–51 (1992)CrossRefGoogle Scholar
  54. 54.
    Meyer, B.: Object Success. Prentice Hall, Englewood Cliffs (1995)Google Scholar
  55. 55.
    Meyer, B.: Practice to Perfect: The Quality First Model. In: Computer (IEEE), May 1997, pp. 102–106 (1997), available at:
  56. 56.
    Meyer, B.: UML: The Positive Spin. American Programmer (1997), available at:
  57. 57.
    Meyer, B.: Object-Oriented Software Construction, 2nd edn. Prentice-Hall, Englewood Cliffs (1997)MATHGoogle Scholar
  58. 58.
    Meyer, B., Mingins, C., Schmidt, H.: Providing Trusted Components to the Industry. Computer (IEEE) 31(5), 104–105 (1998), available at: CrossRefGoogle Scholar
  59. 59.
    Meyer, B.: The Role of Object-Oriented Metrics. Computer (IEEE) 31(11), 123–125 (1998), available at: CrossRefGoogle Scholar
  60. 60.
    Meyer, B.: Every Little Bit Counts: Towards Reliable Software. Computer IEEE_, 32(11), 131–133 (1999), available at: Google Scholar
  61. 61.
    Meyer, B.: The Grand Challenge of Trusted Components. In: ICSE 25 International Conference on Software Engineering, Portland, Oregon, May 2003. IEEE Computer Press, Los Alamitos (2003)Google Scholar
  62. 62.
    Meyer, B.: The Power of Abstraction, Reuse, and Simplicity: An Object-Oriented Library for Event-Driven Design. In: Owe, O., Krogdahl, S., Lyche, T. (eds.) From Object-Orientation to Formal Methods. LNCS, vol. 2635, pp. 236–271. Springer, Heidelberg (2004), available at: CrossRefGoogle Scholar
  63. 63.
    Meyer, B.: Offshore Development: The Unspoken Revolution in Software Engineering. Computer (IEEE), 122–124 (January 2006), available at:
  64. 64.
    Meyer, B.: What will remain of Extreme Programming? EiffelWorld 5(2), (February 2006), available at:
  65. 65.
    Meyer, B., Arnout, K.: Componentization: the Visitor Example. Computer (IEEE) (to appear, 2006), draft available at:
  66. 66.
    Microsoft: Visual Studio pages at msdn:
  67. 67.
    Mitchell, R., McKim, J.: Design by Contract by Example. Addison-Wesley, Reading (2001)Google Scholar
  68. 68.
    Morgan, C.: Programming from Specifications, 2nd edn. Prentice Hall, Englewood Cliffs (1994), available at: MATHGoogle Scholar
  69. 69.
    Musa, J.: Software Reliability Engineering, 2nd edn. McGraw-Hill, New York (1998)Google Scholar
  70. 70.
    Myers, G.J., Sandler, C., Badgett, T., Thomas, T.M.: The Art of Software Testing, 2nd edn. Wiley, Chichester (2004)Google Scholar
  71. 71.
    Offutt, J.: Mutation testing papers at:
  72. 72.
    Pincus, J.: presentations (mostly PowerPoint slides) on PREfix and PREfast at:
  73. 73.
    Raymond, E.: The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary, O’ Reilly (1999), earlier version available at:
  74. 74.
    Software Engineering Institute, CMMI site, available at:
  75. 75.
    Stephens, M., Rosenberg, D.: Extreme Programming Refactored: The Case Against XP. aPress (2003)Google Scholar
  76. 76.
    van Lamsweerde, A.: Goal-Oriented Requirements Engineering: A Guided Tour. In: Proceedings of the 5th IEEE International Symposium on Requirements Engineering (August 2001), available at:
  77. 77.
    Verified Software: Theories, Tools, Experiments: International IFIP conference, ETH Zurich (October 2005), see VSTTE conference site at:
  78. 78.
    Viega, J.: The Myth of Open-Source Security (2000), available at:, follow-up article, Open-Source Security: Still at Myth (September 2004), available at:
  79. 79.
    Voas, J.M., McGraw, G.: Software Fault Injection: Inoculating Programs Against Errors. Wiley, Chichester (1998)Google Scholar
  80. 80.
    Warmer, J., Kleppe, A.: The Object Constraint Language: Getting Your Models Ready for MDA, 2nd edn. Addison-Wesley, Reading (2003)Google Scholar
  81. 81.
    Weyuker, E.J., Jeng, B.: Analyzing Partition Testing Strategies. IEEE Transactions on Software Engineering 17(9), 97–108 (1991)Google Scholar
  82. 82.
    Wikipedia: entry “ Mars Climate Orbiter”, available at:
  83. 83.
    Yourdon, E.: When Good Enough Software Is Best. Software (IEEE) 12(3), 79–81 (1995)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Bertrand Meyer
    • 1
  1. 1.ETH ZurichSwitzerland

Personalised recommendations