Tracking Behavioral Constraints during Object-Oriented Software Evolution

  • Johan Dovland
  • Einar Broch Johnsen
  • Ingrid Chieh Yu
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7609)


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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    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)CrossRefGoogle Scholar
  2. 2.
    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)Google Scholar
  3. 3.
    Dhara, K.K., Leavens, G.T.: Forcing behavioural subtyping through specification inheritance. In: 18th Conf. on Software Engineering. IEEE Press (1996)Google Scholar
  4. 4.
    Dovland, J., Johnsen, E.B., Owe, O., Steffen, M.: Lazy behavioral subtyping. Journal of Logic and Algebraic Programming 79(7), 578–607 (2010)MathSciNetMATHCrossRefGoogle Scholar
  5. 5.
    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)MATHCrossRefGoogle Scholar
  6. 6.
    Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley (August 1999)Google Scholar
  7. 7.
    Igarashi, A., Pierce, B.C., Wadler, P.: Featherweight Java: a minimal core calculus for Java and GJ. ACM TOPLAS 23(3), 396–450 (2001)CrossRefGoogle Scholar
  8. 8.
    Liskov, B.H., Wing, J.M.: A behavioral notion of subtyping. ACM TOPLAS 16(6), 1811–1841 (1994)CrossRefGoogle Scholar
  9. 9.
    Marković, S., Baar, T.: Refactoring ocl annotated uml class diagrams. Software and Systems Modeling 7, 25–47 (2008)Google Scholar
  10. 10.
    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)CrossRefGoogle Scholar
  11. 11.
    Mens, T., Tourwé, T.: A survey of software refactoring. IEEE Transactions on Software Engineering 30(2), 126–139 (2004)CrossRefGoogle Scholar
  12. 12.
    Owicki, S., Gries, D.: An axiomatic proof technique for parallel programs I. Acta Informatica 6(4), 319–340 (1976)MathSciNetMATHCrossRefGoogle Scholar
  13. 13.
    Pierik, C., de Boer, F.S.: A proof outline logic for object-oriented programming. Theoretical Computer Science 343(3), 413–442 (2005)MathSciNetMATHCrossRefGoogle Scholar
  14. 14.
    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)CrossRefGoogle Scholar
  15. 15.
    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)Google Scholar
  16. 16.
    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)Google Scholar
  17. 17.
    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)CrossRefGoogle Scholar
  18. 18.
    Wehrheim, H.: Slicing techniques for verification re-use. Theoretical Computer Science 343(3), 509–528 (2005)MathSciNetMATHCrossRefGoogle Scholar
  19. 19.
    Yin, X., Knight, J., Weimer, W.: Exploiting refactoring in formal verification. In: Proc. Dependable Systems and Networks (DSN 2009). IEEE Press (2009)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2012

Authors and Affiliations

  • Johan Dovland
    • 1
  • Einar Broch Johnsen
    • 1
  • Ingrid Chieh Yu
    • 1
  1. 1.Department of InformaticsUniversity of OsloNorway

Personalised recommendations