Tracking Behavioral Constraints during Object-Oriented Software Evolution
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.
- 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.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.Dhara, K.K., Leavens, G.T.: Forcing behavioural subtyping through specification inheritance. In: 18th Conf. on Software Engineering. IEEE Press (1996)Google Scholar
- 6.Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley (August 1999)Google Scholar
- 9.Marković, S., Baar, T.: Refactoring ocl annotated uml class diagrams. Software and Systems Modeling 7, 25–47 (2008)Google Scholar
- 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.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
- 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