A Formal Study of Backward Compatible Dynamic Software Updates

Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9276)

Abstract

We study the dynamic software update problem for programs interacting with an environment that is not necessarily updated. We argue that such updates should be backward compatible. We propose a general definition of backward compatibility and cases of backward compatible program update. Based on our detailed study of real world program evolution, we propose classes of backward compatible update for interactive programs, which are included at an average of 32 % of all studied program changes. The definitions of update classes are parameterized by our novel framework of program equivalence, which generalizes existing results on program equivalence to non-terminating executions. Our study of backward compatible updates is based on a typed extension of W language.

References

  1. 1.
    http://en.wikipedia.org/wiki/Vsftpd. Accessed 15 January 2015
  2. 2.
    http://www.openssh.com/users.html. Accessed 15 January 2015
  3. 3.
    Software life cycle processes - maintenance. Technical report. ISO/IEC 14764:2006(E)Google Scholar
  4. 4.
    Aho, A.V., Sethi, R., Ullman, J.D.: Compilers: principles, techniques, and toolsGoogle Scholar
  5. 5.
    Arnold, J., Kaashoek, M.F.: KSplice: automatic rebootless kernel updatesGoogle Scholar
  6. 6.
    Benton, N.: Simple relational correctness proofs for static analyses and program transformations (2004)Google Scholar
  7. 7.
    Binkley, D., Horwitz, S., Reps, T.: The multi-procedure equivalence theorem (1989)Google Scholar
  8. 8.
    Bloom, T., Day, M.: Reconfiguration and module replacement in argus: theory and practice (1993)Google Scholar
  9. 9.
    Cartwright, R., Felleisen, M.: The semantics of program dependence (1989)Google Scholar
  10. 10.
    Godlin, B., Strichman, O.: Inference rules for proving the equivalence of recursive procedures (2008)Google Scholar
  11. 11.
    Gordon, A.D.: Functional programming and input/output (1994)Google Scholar
  12. 12.
    Hayden, C.M., Magill, S., Hicks, M., Foster, N., Foster, J.S.: Specifying and verifying the correctness of dynamic software updates. In: Joshi, R., Müller, P., Podelski, A. (eds.) VSTTE 2012. LNCS, vol. 7152, pp. 278–293. Springer, Heidelberg (2012) CrossRefGoogle Scholar
  13. 13.
    Hayden, C.M., Smith, E.K., Denchev, M., Hicks, M., Foster, J.S.: Kitsune: efficient, general-purpose dynamic software updating for C. In: Proceedings of the ACM Conference on Object-Oriented Programming Languages, Systems, and Applications (OOPSLA), October 2012Google Scholar
  14. 14.
    Hicks, M.: Dynamic software updating. Ph.D. thesis, August 2001Google Scholar
  15. 15.
    Horwitz, S., Prins, J., Reps, T.: On the adequacy of program dependence graphs for representing programs. In: POPL 1988, pp. 146–157. ACM (1988)Google Scholar
  16. 16.
    Karfa, C., Banerjee, K., Sarkar, D., Mandal, C.: Verification of loop and arithmetic transformations of array-intensive behaviors (2013)Google Scholar
  17. 17.
    Kramer, J., Magee, J.: The evolving philosophers problem: dynamic change management (1990)Google Scholar
  18. 18.
    Kundu, S., Tatlock, Z., Lerner, S.: Proving optimizations correct using parameterized program equivalence. SIGPLAN Not. 44(6), 327–337 (2009)CrossRefGoogle Scholar
  19. 19.
    Lacey, D., Jones, N.D., Van Wyk, E., Frederiksen, C.C.: Proving correctness of compiler optimizations by temporal logic. SIGPLAN Not. 37(1), 283–294 (2002)CrossRefGoogle Scholar
  20. 20.
    Lee, Y.F., Chang, R.C.: Hotswapping linux kernel modules. J. Syst. Softw. 79(2), 163–175 (2006)CrossRefGoogle Scholar
  21. 21.
    Lucanu, D., Rusu, V.: Program equivalence by circular reasoning. In: Johnsen, E.B., Petre, L. (eds.) IFM 2013. LNCS, vol. 7940, pp. 362–377. Springer, Heidelberg (2013) CrossRefGoogle Scholar
  22. 22.
    Magill, S., Hicks, M., Subramanian, S., McKinley, K.S.: Automating object transformations for dynamic software updating. SIGPLAN Not. 47(10), 265–280 (2012)CrossRefGoogle Scholar
  23. 23.
    Makris, K.: Whole-program dynamic software updating. Ph.D. thesisGoogle Scholar
  24. 24.
    Makris, K., Bazzi, R.A.: Immediate multi-threaded dynamic software updates using stack reconstructionGoogle Scholar
  25. 25.
    Miller, B.P., Fredriksen, L., So, B.: An empirical study of the reliability of unix utilities. ACMGoogle Scholar
  26. 26.
    Neamtiu, I.: Practical dynamic software updating. Ph.D. thesis, August 2008Google Scholar
  27. 27.
    Panzica La Manna, V., Greenyer, J., Ghezi, C., Brener, C.: Formalizing correctness criteria of dynamic updates derived from specification changes. In: EAMS 2013Google Scholar
  28. 28.
    Parnas, D.L.: Software aging. In: ICSE 1994. IEEE Computer Society PressGoogle Scholar
  29. 29.
    Pierce, B.C.: Types and Programming Languages. MIT Press, Cambridge (2002) Google Scholar
  30. 30.
    Rohl, J.S.: Eliminating recursion from combinatoric procedures (1981)Google Scholar
  31. 31.
    Shen, J., Bazzi, R.A.: A formal study of backward compatible dynamic software updates. CoRR http://arxiv.org/abs/1503.07235
  32. 32.
    Verdoolaege, S., Janssens, G., Bruynooghe, M.: Equivalence checking of static affine programs using widening to handle recurrences. ACM Trans. Program. Lang. SystGoogle Scholar
  33. 33.
    Winskel, G.: The Formal Semantics of Programming Languages: An Introduction. MIT Press, Cambridge (1993)MATHGoogle Scholar
  34. 34.
    Zhang, M., Ogata, K., Futatsugi, K.: Formalization and verification of behavioral correctness of dynamic software updates. Electron. Notes Theor. Comput. Sci. 294, 12–23 (2013)CrossRefGoogle Scholar

Copyright information

© Springer International Publishing Switzerland 2015

Authors and Affiliations

  1. 1.Arizona State UniversityTempeUSA

Personalised recommendations