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.
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
Abrial, J.-R.: The B-Book: Assigning Programs to Meanings. Cambridge University Press (1996)
Abrial, J.-R.: Modeling in Event-B: System and Software Engineering. Cambridge University Press (2010)
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)
Back, R.-J.: On the Correctness of Refinement Steps in Program Development. PhD thesis, University of Helsinki (1978) Report A-1978-4.
Back, R.-J., von Wright, J.: Refinement Calculus: A Systematic Introduction. Graduate Texts in Computer Science. Springer-Verlag (1998)
Barnett, M., F¨ahndrich, M., Logozzo, F.: Embedded contract languages. In ACM SAC - OOPS. ACM (March 2010)
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)
Baudin, P., Filliatre, J.-C., March´, C., Monate, B., Moy, Y., Prevosto, V.: ACSL: ANSI/ISO C Specification Language, version 1.4 (2009) http://frama-c.com/.
Dijkstra, E.W.: A constructive approach to the problem of program correctness. BIT, 8:174–186 (1968)
Gries, D., Volpano, D.: The transform — a new language construct. Structured Programming, 11(1):1–10 (1990)
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)
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)
Hoare, C.A.R.: Proof of correctness of data representations. Acta Informatica, 1(4):271–281 (1972)
Jackson, D.: Software Abstractions: Logic, Language, and Analysis. MIT Press (2006)
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)
Jones, C.B.: Systematic Software Development Using VDM. International Series in Computer Science. Prentice Hall, Englewood Cliffs, N.J., second edition (1990)
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)
Meyer, B.: Object-oriented Software Construction. Series in Computer Science. Prentice- Hall International (1988)
Microsoft: Silverlight. http://www.microsoft.com/silverlight/.
Microsoft: Axum. http://msdn.microsoft.com/en-us/devlabs/dd795202.aspx (2010)
Misra, J., Cook, W.R.: Computation orchestration: A basis for wide-area computing. Software and Systems Modeling, 6(1):83–110, (March 2007)
Morgan, C.: Programming from Specifications. Series in Computer Science. Prentice-Hall International (1990)
Morris, J.M.: A theoretical basis for stepwise refinement and the programming calculus. Science of Computer Programming, 9(3):287–306, (December 1987)
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)
Smith, D.R.: KIDS: A semi-automatic program development system. IEEE Transactions on Software Engineering, 16(9):1024–1043, (September 1990)
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)
Wirth, N.: Program Development by Stepwise Refinement. Communications of the ACM, 14:221–227 (1971)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2011 Springer-Verlag Berlin Heidelberg
About this chapter
Cite this chapter
Leino, K.R.M. (2011). Tools and Behavioral Abstraction: A Direction for Software Engineering. In: Nanz, S. (eds) The Future of Software Engineering. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-15187-3_7
Download citation
DOI: https://doi.org/10.1007/978-3-642-15187-3_7
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-15186-6
Online ISBN: 978-3-642-15187-3
eBook Packages: Computer ScienceComputer Science (R0)