Abstract
An intrinsic property of real world software is that it needs to evolve. The software is continuously changed during the initial development phase, and existing software may need modifications to meet new requirements. To facilitate the development and maintenance of programs, it is an advantage to have programming environments which allow the developer to alternate between programming and verification tasks in a flexible manner and which ensures correctness of the final program with respect to specified behavioral properties.
This paper proposes a formal framework for the flexible development of object-oriented programs, which supports an interleaving of programming and verification steps. The motivation for this framework is to avoid imposing restrictions on the programming steps to facilitate the verification steps, but rather to track unresolved proof obligations and specified properties of a program which evolves. A proof environment connects unresolved proof obligations and specified properties by means of a soundness invariant which is maintained by both programming and verification steps. Once the set of unresolved obligations is empty, the invariant ensures the soundness of the overall program verification.
Partly funded by the EU project FP7-231620 HATS: Highly Adaptable and Trustworthy Software using Formal Models ( http://www.hats-project.eu ).
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
Clarke, D., Diakov, N., Hähnle, R., Johnsen, E.B., Schaefer, I., Schäfer, J., Schlatte, R., Wong, P.Y.H.: Modeling Spatial and Temporal Variability with the HATS Abstract Behavioral Modeling Language. In: Bernardo, M., Issarny, V. (eds.) SFM 2011. LNCS, vol. 6659, pp. 417–457. Springer, Heidelberg (2011)
Damiani, F., Dovland, J., Johnsen, E.B., Schaefer, I.: Verifying traits: A proof system for fine-grained reuse. In: Proc. 13th Workshop on Formal Techniques for Java-like Programs (FTfJP 2011), 8:1–8:6. ACM (2011)
Dhara, K.K., Leavens, G.T.: Forcing behavioural subtyping through specification inheritance. In: 18th Conf. on Software Engineering. IEEE Press (1996)
Dovland, J., Johnsen, E.B., Owe, O., Steffen, M.: Lazy behavioral subtyping. Journal of Logic and Algebraic Programming 79(7), 578–607 (2010)
Dovland, J., Johnsen, E.B., Owe, O., Steffen, M.: Incremental reasoning with lazy behavioral subtyping for multiple inheritance. Science of Computer Programming 76(10), 915–941 (2011)
Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley (August 1999)
Igarashi, A., Pierce, B.C., Wadler, P.: Featherweight Java: a minimal core calculus for Java and GJ. ACM TOPLAS 23(3), 396–450 (2001)
Liskov, B.H., Wing, J.M.: A behavioral notion of subtyping. ACM TOPLAS 16(6), 1811–1841 (1994)
Marković, S., Baar, T.: Refactoring ocl annotated uml class diagrams. Software and Systems Modeling 7, 25–47 (2008)
Massoni, T., Gheyi, R., Borba, P.: Synchronizing Model and Program Refactoring. In: Davies, J. (ed.) SBMF 2010. LNCS, vol. 6527, pp. 96–111. Springer, Heidelberg (2011)
Mens, T., Tourwé, T.: A survey of software refactoring. IEEE Transactions on Software Engineering 30(2), 126–139 (2004)
Owicki, S., Gries, D.: An axiomatic proof technique for parallel programs I. Acta Informatica 6(4), 319–340 (1976)
Pierik, C., de Boer, F.S.: A proof outline logic for object-oriented programming. Theoretical Computer Science 343(3), 413–442 (2005)
Schaefer, I., Bettini, L., Bono, V., Damiani, F., Tanzarella, N.: Delta-Oriented Programming of Software Product Lines. In: Bosch, J., Lee, J. (eds.) SPLC 2010. LNCS, vol. 6287, pp. 77–91. Springer, Heidelberg (2010)
Soundarajan, N., Fridella, S.: Inheritance: From code reuse to reasoning reuse. In: 5th Intl. Conf. on Software Reuse (ICSR5), pp. 206–215. IEEE Press (1998)
Ubayashi, N., Piao, J., Shinotsuka, S., Tamai, T.: Contract-based verification for aspect-oriented refactoring. In: Proc. Intl. Conf. on Software Testing, Verification, and Validation, pp. 180–189. IEEE Press (2008)
Van Der Straeten, R., Jonckers, V., Mens, T.: A formal approach to model refactoring and model refinement. Software and Sys. Modeling 6, 139–162 (2007)
Wehrheim, H.: Slicing techniques for verification re-use. Theoretical Computer Science 343(3), 509–528 (2005)
Yin, X., Knight, J., Weimer, W.: Exploiting refactoring in formal verification. In: Proc. Dependable Systems and Networks (DSN 2009). IEEE Press (2009)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2012 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Dovland, J., Johnsen, E.B., Yu, I.C. (2012). Tracking Behavioral Constraints during Object-Oriented Software Evolution. In: Margaria, T., Steffen, B. (eds) Leveraging Applications of Formal Methods, Verification and Validation. Technologies for Mastering Change. ISoLA 2012. Lecture Notes in Computer Science, vol 7609. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-34026-0_19
Download citation
DOI: https://doi.org/10.1007/978-3-642-34026-0_19
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-34025-3
Online ISBN: 978-3-642-34026-0
eBook Packages: Computer ScienceComputer Science (R0)