Software Is Not Soft

Challenges and Approaches to Dynamic Software Update
  • Xiaoxing MaEmail author
  • Tianxiao Gu
  • Wei Song
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 11174)


It is widely desired that running software systems can be updated on the fly in response to the changes in the environment they are situated in and in the requirements they must satisfy. Systematic support for dynamic software update must make it safe, efficient and easy to use. This chapter overviews related work and our efforts on dynamic software update at three different levels of granularity: code-level update of Java programs, component-level update of distributed systems, and process-level instance migration of workflow processes.



We are grateful to Luciano Baresi, Carlo Ghezzi, Hans-Arno Jacobsen, Jian Lü, Valerio Panzica La Manna and other co-authors for their collaboration in previous work on dynamic software update. In addition, Xiaoxing Ma would like to thank his colleagues Yu Huang and Chang Xu whose work on environment perception were also discussed at SETSS 2017. Our work on DSU was supported by the National 973 Program of China (Grant No. 2015CB352202), the National Natural Science Foundation of China (Grant Nos. 61690204, 61761136003, 61472177), and the Collaborative Innovation Center of Novel Software Technology and Industrialization.


  1. 1.
    Olsson, H.H., Alahyari, H., Bosch, J.: Climbing the “stairway to heaven” - a multiple-case study exploring barriers in the transition from agile development towards continuous deployment of software. In: Proceedings of the 38th Euromicro Conference on Software Engineering and Advanced Applications (SEAA 2012), pp. 392–399, September 2012Google Scholar
  2. 2.
    Fabry, R.S.: How to design a system in which modules can be changed on the fly. In: Proceedings of the 2nd International Conference on Software Engineering, pp. 470–476 (1976)Google Scholar
  3. 3.
    Kramer, J., Magee, J.: The evolving philosophers problem: dynamic change management. IEEE Trans. Softw. Eng. 16(11), 1293–1306 (1990)CrossRefGoogle Scholar
  4. 4.
    Hicks, M., Nettles, S.: Dynamic software updating. ACM Trans. Program. Lang. Syst. 27(6), 1049–1096 (2005)CrossRefGoogle Scholar
  5. 5.
    Bennett, K.H., Rajlich, V.T.: Software maintenance and evolution: a roadmap. In: Proceedings of the Conference on the Future of Software Engineering. ICSE 2000, pp. 73–87. ACM, New York (2000)Google Scholar
  6. 6.
    Rajlich, V.: Software evolution and maintenance. In: Proceedings of the on Future of Software Engineering. FOSE 2014, pp. 133–144. ACM, New York (2014)Google Scholar
  7. 7.
    Daley, R.C., Dennis, J.B.: Virtual memory, processes, and sharing in MULTICS. Commun. ACM 11(5), 306–312 (1968)CrossRefGoogle Scholar
  8. 8.
    Ajmani, S., Liskov, B., Shrira, L.: Modular software upgrades for distributed systems. In: Thomas, D. (ed.) ECOOP 2006, vol. 4067, pp. 452–476. Springer, Heidelberg (2006). Scholar
  9. 9.
    Vandewoude, Y., Ebraert, P., Berbers, Y., D’Hondt, T.: Tranquility: a low disruptive alternative to quiescence for ensuring safe dynamic updates. IEEE Trans. Softw. Eng. 33(12), 856–868 (2007)CrossRefGoogle Scholar
  10. 10.
    Ma, X., Baresi, L., Ghezzi, C., Panzica La Manna, V., Lu, J.: Version-consistent dynamic reconfiguration of component-based distributed systems. In: Proceedings of the 19th ACM SIGSOFT Symposium and the 13th European Conference on Foundations of Software Engineering. ESEC/FSE 2011, pp. 245–255. ACM, New York (2011)Google Scholar
  11. 11.
    Ghezzi, C., Greenyer, J., La Manna, V.P.: Synthesizing dynamically updating controllers from changes in scenario-based specifications. In: Proceedings of the 7th International Symposium on Software Engineering for Adaptive and Self-Managing Systems. SEAMS 2012, pp. 145–154. IEEE Press, Piscataway (2012)Google Scholar
  12. 12.
    Nahabedian, L., et al.: Assured and correct dynamic update of controllers. In: Proceedings of the 11th International Symposium on Software Engineering for Adaptive and Self-Managing Systems. SEAMS 2016, pp. 96–107. ACM, New York(2016)Google Scholar
  13. 13.
    Neamtiu, I., Hicks, M.: Safe and timely updates to multi-threaded programs. In: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 13–24 (2009)Google Scholar
  14. 14.
    Subramanian, S., Hicks, M., McKinley, K.S.: Dynamic software updates: a VM-centric approach. In: Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 1–12 (2009)Google Scholar
  15. 15.
    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 International Conference on Object Oriented Programming Systems Languages and Applications, pp. 249–264 (2012)Google Scholar
  16. 16.
    Würthinger, T., Wimmer, C., Stadler, L.: Unrestricted and safe dynamic code evolution for Java. Sci. Comput. Program. 78(5), 481–498 (2013)CrossRefGoogle Scholar
  17. 17.
    Pina, L., Veiga, L., Hicks, M.: Rubah: DSU for Java on a stock JVM. In: Proceedings of the 2014 International Conference on Object Oriented Programming Systems Languages Applications, pp. 103–119 (2014)Google Scholar
  18. 18.
    Gu, T., et al.: Low-disruptive dynamic updating of Java applications. Inf. Softw. Technol. 56(9), 1086–1098 (2014). Special Sections from “Asia-Pacific Software Engineering Conference (APSEC), 2012” and “Software Product Line conference (SPLC), 2012”CrossRefGoogle Scholar
  19. 19.
    Baumann, A., et al.: Providing dynamic update in an operating system. In: ATEC 2005: Proceedings of the Annual Conference on USENIX Annual Technical Conference, p. 32. USENIX Association, Berkeley (2005)Google Scholar
  20. 20.
    Arnold, J., Kaashoek, M.F.: Ksplice: automatic rebootless kernel updates. In: Proceedings of the 4th ACM European Conference on Computer Systems. EuroSys 2009, pp. 187–198. ACM, New York (2009)Google Scholar
  21. 21.
    Makris, K., Bazzi, R.A.: Immediate multi-threaded dynamic software updates using stack reconstruction. In: Proceedings of the 2009 Conference on USENIX Annual Technical Conference. USENIX 2009, p. 31. USENIX Association, Berkeley (2009)Google Scholar
  22. 22.
    Kashyap, S., Min, C., Lee, B., Kim, T., Emelyanov, P.: Instant OS updates via userspace checkpoint-and-restart. In: USENIX Annual Technical Conference (USENIX ATC 16), Denver, CO, pp. 605–619. USENIX Association (2016)Google Scholar
  23. 23.
    Fowler, M.: Blue-green deployment, March 2010. Accessed 1 Feb 2018
  24. 24.
    Gu, T., Sun, C., Ma, X., Lü, J., Su, Z.: Automatic runtime recovery via error handler synthesis. In: Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering. ASE 2016, pp. 684–695. ACM, New York (2016)Google Scholar
  25. 25.
    Gu, T., Zhao, Z., Ma, X., Xu, C., Cao, C., Lü, J.: Improving reliability of dynamic software updating using runtime recovery. In: 23rd Asia-Pacific Software Engineering Conference (APSEC 2016), pp. 257–264, December 2016Google Scholar
  26. 26.
    Gu, T., Ma, X., Xu, C., Jiang, Y., Cao, C., Lü, J.: Synthesizing object transformation for dynamic software updating. In: Proceedings of the 39th International Conference on Software Engineering Companion. ICSE-C 2017, pp. 336–338. IEEE Press, Piscataway (2017)Google Scholar
  27. 27.
    Su, P., Cao, C., Ma, X., Lü, J.: Automated management of dynamic component dependency for runtime system reconfiguration. In: Proceedings of the 20th Asia-Pacific Software Engineering Conference (APSEC 2013) (2013)Google Scholar
  28. 28.
    Baresi, L., Ghezzi, C., Ma, X., Panzica La Manna, V.: Efficient dynamic updates of distributed components through version consistency. IEEE Trans. Softw. Eng. 43(4), 340–358 (2017)CrossRefGoogle Scholar
  29. 29.
    Song, W., Ma, X., Hu, H., Zou, Y., Zhang, G.: Migration validity of WS-BPEL instances revisited. In: 2013 IEEE 16th International Conference on Computational Science and Engineering, pp. 1013–1020, December 2013Google Scholar
  30. 30.
    Song, W., Ma, X., Jacobsen, H.A.: Instance migration validity for dynamic evolution of data-aware processes. IEEE Trans. Softw. Eng. (2018, accepted, to appear)Google Scholar
  31. 31.
    Gupta, D., Jalote, P., Barua, G.: A formal framework for on-line software version change. IEEE Trans. Softw. Eng. 22(2), 120–131 (1996)CrossRefGoogle Scholar
  32. 32.
    Gu, T.: On dynamic updating of Java programs. Ph.D. thesis, Nanjing University, China (2017)Google Scholar
  33. 33.
    Magill, S., Hicks, M., Subramanian, S., McKinley, K.S.: Automating object transformations for dynamic software updating. In: Proceedings of the ACM International Conference on Object Oriented Programming Systems Languages and Applications, pp. 265–280 (2012)Google Scholar
  34. 34.
    Buban, G., et al.: Patching of in-use functions on a running computer system, US Patent App. 10/307,902, 3 June 2004Google Scholar
  35. 35.
    Open Source Software Project: kpatch: dynamic kernel patching. (2016). Accessed 07 July 2016
  36. 36.
    Dumas, M., van der Aalst, W.M., ter Hofstede, A.H.: Process-Aware Information Systems: Bridging People and Software Through Process Technology. Wiley, New York (2005)CrossRefGoogle Scholar
  37. 37.
    Rinderle, S., Reichert, M., Dadam, P.: Correctness criteria for dynamic changes in workflow systems: a survey. Data Knowl. Eng. 50(1), 9–34 (2004)CrossRefGoogle Scholar
  38. 38.
    van der Aalst, W., Basten, T.: Inheritance of workflows: an approach to tackling problems related to change. Theor. Comput. Sci. 270(1), 125–203 (2002)MathSciNetCrossRefGoogle Scholar
  39. 39.
    Ryu, S.H., Casati, F., Skogsrud, H., Benatallah, B., Saint-Paul, R.: Supporting the dynamic evolution of web service protocols in service-oriented architectures. ACM Trans. Web 2(2), 13:1–13:46 (2008)CrossRefGoogle Scholar
  40. 40.
    Casati, F., Ceri, S., Pernici, B., Pozzi, G.: Workflow evolution. Data Knowl. Eng. 24(3), 211–238 (1998)CrossRefGoogle Scholar
  41. 41.
    van der Aalst, W., ter Hofstede, A.: YAWL: yet another workflow language. Inf. Syst. 30(4), 245–275 (2005)CrossRefGoogle Scholar
  42. 42.
    Alves, A., et al.: Web services business process execution language version 2.0. OASIS Standard, April 2007Google Scholar
  43. 43.
    Rademakers, T.: Activiti in action: executable business processes in BPMN 2.0. Manning Publications Co., Greenwich (2012)Google Scholar
  44. 44.
    Song, W., Jacobsen, H.A.: Static and dynamic process change. IEEE Trans. Serv. Comput. 11(1), 215–231 (2018)CrossRefGoogle Scholar
  45. 45.
    Rinderle-Ma, S., Reichert, M., Weber, B.: Relaxed compliance notions in adaptive process management systems. In: Li, Q., Spaccapietra, S., Yu, E., Olivé, A. (eds.) ER 2008, vol. 5231, pp. 232–247. Springer, Heidelberg (2008). Scholar
  46. 46.
    Ferrante, J., Ottenstein, K.J., Warren, J.D.: The program dependence graph and its use in optimization. ACM Trans. Program. Lang. Syst. 9(3), 319–349 (1987)CrossRefGoogle Scholar
  47. 47.
    Hayden, C., Smith, E., Hardisty, E., Hicks, M., Foster, J.: Evaluating dynamic software update safety using systematic testing. IEEE Trans. Softw. Eng. 38(6), 1340–1354 (2012)CrossRefGoogle Scholar

Copyright information

© Springer Nature Switzerland AG 2018

Authors and Affiliations

  1. 1.State Key Laboratory for Novel Software Technology, Institute of Computer SoftwareNanjing UniversityNanjingChina
  2. 2.School of Computer Science and EngineeringNanjing University of Science and TechnologyNanjingChina

Personalised recommendations