Tools and Behavioral Abstraction: A Direction for Software Engineering

  • K. Rustan M. LeinoEmail author

Capsule Summary

As in other engineering professions, software engineers rely on tools. Such tools can analyze program texts and design specifications more automatically and in more detail than ever before. While many tools today are applied to find new defects in old code, I predict that more software-engineering tools of the future will be available to software authors at the time of authoring. If such analysis tools can be made to be fast enough and easy enough to use, they can help software engineers better produce and evolve programs.

A programming language shapes how software engineers approach problems. Yet the abstraction level of many popular languages today is not much higher than that of C programs several decades ago. Moreover, the abstraction level is the same throughout the program text, leaving no room for behavioral abstraction where the design of a program is divided up into stages that gradually introduce more details. A stronger arsenal of analysis tools can enable languages and development environments to give good support for behavioral abstraction.


Software Engineering Software Engineer Development Environment Program Element Abstraction Level 
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. 0.
    Abrial, J.-R.: The B-Book: Assigning Programs to Meanings. Cambridge University Press (1996)Google Scholar
  2. 1.
    Abrial, J.-R.: Modeling in Event-B: System and Software Engineering. Cambridge University Press (2010)Google Scholar
  3. 2.
    Abrial, J.-R., Butler, M., Hallerstede, S., Hoang, T.S., Mehta, F., Voisin, L.: Rodin: An open toolset for modelling and reasoning in Event-B. International Journal on Software Tools for Technology Transfer (April 2010)Google Scholar
  4. 3.
    Back, R.-J.: On the Correctness of Refinement Steps in Program Development. PhD thesis, University of Helsinki (1978) Report A-1978-4.Google Scholar
  5. 4.
    Back, R.-J., von Wright, J.: Refinement Calculus: A Systematic Introduction. Graduate Texts in Computer Science. Springer-Verlag (1998)Google Scholar
  6. 5.
    Barnett, M., F¨ahndrich, M., Logozzo, F.: Embedded contract languages. In ACM SAC - OOPS. ACM (March 2010)Google Scholar
  7. 6.
    Barnett, M., Leino, K.R.M., Schulte, W.: The Spec# programming system: An overview. In Gilles Barthe, Lilian Burdy, Marieke Huisman, Jean-Louis Lanet, and Traian Muntean, editors, CASSIS 2004, Construction and Analysis of Safe, Secure and Interoperable Smart devices, volume 3362 of Lecture Notes in Computer Science, pages 49–69. Springer (2005)Google Scholar
  8. 7.
    Baudin, P., Filliatre, J.-C., March´, C., Monate, B., Moy, Y., Prevosto, V.: ACSL: ANSI/ISO C Specification Language, version 1.4 (2009)
  9. 8.
    Dijkstra, E.W.: A constructive approach to the problem of program correctness. BIT, 8:174–186 (1968)CrossRefzbMATHGoogle Scholar
  10. 9.
    Gries, D., Volpano, D.: The transform — a new language construct. Structured Programming, 11(1):1–10 (1990)Google Scholar
  11. 10.
    Harel, D., Kugler, H., Marelly, R., Pnueli, A.: Smart Play-out of behavioral requirements. In Mark Aagaard and John W. O’Leary, editors, Formal Methods in Computer-Aided Design, 4th International Conference, FMCAD 2002, volume 2517 of Lecture Notes in Computer Science, pages 378–398. Springer (November 2002)Google Scholar
  12. 11.
    Hatcliff, J., Leavens, G.T., Leino, K.R.M., M¨uller, P., Parkinson, M.: Behavioral interface specification languages. Technical Report CS-TR-09-011, University of Central Florida, School of EECS (2009)Google Scholar
  13. 12.
    Hoare, C.A.R.: Proof of correctness of data representations. Acta Informatica, 1(4):271–281 (1972)CrossRefzbMATHGoogle Scholar
  14. 13.
    Jackson, D.: Software Abstractions: Logic, Language, and Analysis. MIT Press (2006)Google Scholar
  15. 14.
    Jackson, E.K., Seifert, D., Dahlweid, M., Santen, T., Bjørner, D., Schulte, W.: Specifying and composing non-functional requirements in model-based development. In Alexandre Bergel and Johan Fabry, editors, Proceedings of the 8th International Conference on Software Composition, volume 5634 of Lecture Notes in Computer Science, pages 72–89. Springer (July 2009)Google Scholar
  16. 15.
    Jones, C.B.: Systematic Software Development Using VDM. International Series in Computer Science. Prentice Hall, Englewood Cliffs, N.J., second edition (1990)Google Scholar
  17. 16.
    Leavens, G.T., Baker, A.L., Ruby, C.: Preliminary design of JML: A behavioral interface specification language for Java. ACM SIGSOFT Software Engineering Notes, 31(3):1–38, (March 2006)CrossRefGoogle Scholar
  18. 17.
    Meyer, B.: Object-oriented Software Construction. Series in Computer Science. Prentice- Hall International (1988)Google Scholar
  19. 18.
    Microsoft: Silverlight.
  20. 19.
  21. 20.
    Misra, J., Cook, W.R.: Computation orchestration: A basis for wide-area computing. Software and Systems Modeling, 6(1):83–110, (March 2007)CrossRefGoogle Scholar
  22. 21.
    Morgan, C.: Programming from Specifications. Series in Computer Science. Prentice-Hall International (1990)Google Scholar
  23. 22.
    Morris, J.M.: A theoretical basis for stepwise refinement and the programming calculus. Science of Computer Programming, 9(3):287–306, (December 1987)CrossRefMathSciNetzbMATHGoogle Scholar
  24. 23.
    Schwartz, J.T., Dewar, R.B.K., Dubinsky, E., Schonberg, E.: Programming with Sets: An Introduction to SETL. Texts and Monographs in Computer Science. Springer (1986)Google Scholar
  25. 24.
    Smith, D.R.: KIDS: A semi-automatic program development system. IEEE Transactions on Software Engineering, 16(9):1024–1043, (September 1990)CrossRefGoogle Scholar
  26. 25.
    Smith, D.R., Kotik, G.B., Westfold, S.J.: Research on knowledge-based software environments at Kestrel Institute. IEEE Transactions on Software Engineering, 11(11):1278–1295, (November 1985)CrossRefGoogle Scholar
  27. 26.
    Wirth, N.: Program Development by Stepwise Refinement. Communications of the ACM, 14:221–227 (1971)CrossRefzbMATHGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2011

Authors and Affiliations

  1. 1.Microsoft ResearchRedmondUSA

Personalised recommendations