Skip to main content

Software Is Not Soft

Challenges and Approaches to Dynamic Software Update

  • Conference paper
  • First Online:
Engineering Trustworthy Software Systems (SETSS 2017)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 11174))

Included in the following conference series:

  • 458 Accesses

Abstract

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    http://continuous-se.org.

  2. 2.

    Continuous deployment techniques such as Blue-Green Deployment [23] will not be discussed because they do not actually update running software but gradually redirect clients from the service provided by old version software to that of the new version, with the assumption that clients are independent with each other.

  3. 3.

    For ease of reading and to focus on the software engineering issues of DSU, in this chapter definitions and propositions are often presented informally or semi-formally, and intuitive concepts are used without definitions. Interested readers are referred to the original publications for complete and rigorous treatment of the subjects.

  4. 4.

    http://moon.nju.edu.cn/dse/javelus/.

  5. 5.

    http://openjdk.java.net/groups/hotspot/.

  6. 6.

    http://mina.apache.org/sshd-project/index.html.

  7. 7.

    A more complete description of the procedure can be found at http://moon.nju.edu.cn/dse/javelus/a-tutorial-of-javelus.

  8. 8.

    http://www.oracle.com/technetwork/java/javaee/.

  9. 9.

    http://www.osgi.org/.

  10. 10.

    Here the notion of transaction is weaker than the ACID transaction of database systems. It is only assumed that all local transactions are consistent and isolated.

  11. 11.

    In their paper [3], Kramer and Magee used the term transaction to mean “an exchange of information between two and only two nodes”, which was different from our use of the term. To avoid confusion, we rename it to interaction in Definition 2. This also applies for Definition 3 below.

  12. 12.

    http://tuscany.apache.org/.

  13. 13.

    http://www.oasis-opencsa.org/sca.

  14. 14.

    The meaning of process in the community of business process management and workflow management is different from its use in programming language and operating system communities. The former is a static concept just like a program or a schema, whose runtime instance is corresponding to the latter use of the term.

  15. 15.

    This is a simplified version of the running example used in [30], to which interested readers are referred for more comprehensive process definition and explanations.

  16. 16.

    It must be acyclic because multiple occurrences of a same activity in \(\sigma \) are modeled as different nodes in the graph.

References

  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 2012

    Google Scholar 

  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. Kramer, J., Magee, J.: The evolving philosophers problem: dynamic change management. IEEE Trans. Softw. Eng. 16(11), 1293–1306 (1990)

    Article  Google Scholar 

  4. Hicks, M., Nettles, S.: Dynamic software updating. ACM Trans. Program. Lang. Syst. 27(6), 1049–1096 (2005)

    Article  Google Scholar 

  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. 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. Daley, R.C., Dennis, J.B.: Virtual memory, processes, and sharing in MULTICS. Commun. ACM 11(5), 306–312 (1968)

    Article  Google Scholar 

  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). https://doi.org/10.1007/11785477_26

    Chapter  Google Scholar 

  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)

    Article  Google Scholar 

  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. 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. 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. 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. 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. 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. Würthinger, T., Wimmer, C., Stadler, L.: Unrestricted and safe dynamic code evolution for Java. Sci. Comput. Program. 78(5), 481–498 (2013)

    Article  Google Scholar 

  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. 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”

    Article  Google Scholar 

  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. 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. 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. 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. Fowler, M.: Blue-green deployment, March 2010. https://martinfowler.com/bliki/BlueGreenDeployment.html. Accessed 1 Feb 2018

  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. 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 2016

    Google Scholar 

  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. 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. 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)

    Article  Google Scholar 

  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 2013

    Google Scholar 

  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. Gupta, D., Jalote, P., Barua, G.: A formal framework for on-line software version change. IEEE Trans. Softw. Eng. 22(2), 120–131 (1996)

    Article  Google Scholar 

  32. Gu, T.: On dynamic updating of Java programs. Ph.D. thesis, Nanjing University, China (2017)

    Google Scholar 

  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. Buban, G., et al.: Patching of in-use functions on a running computer system, US Patent App. 10/307,902, 3 June 2004

    Google Scholar 

  35. Open Source Software Project: kpatch: dynamic kernel patching. https://github.com/dynup/kpatch (2016). Accessed 07 July 2016

  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)

    Book  Google Scholar 

  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)

    Article  Google Scholar 

  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)

    Article  MathSciNet  Google Scholar 

  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)

    Article  Google Scholar 

  40. Casati, F., Ceri, S., Pernici, B., Pozzi, G.: Workflow evolution. Data Knowl. Eng. 24(3), 211–238 (1998)

    Article  Google Scholar 

  41. van der Aalst, W., ter Hofstede, A.: YAWL: yet another workflow language. Inf. Syst. 30(4), 245–275 (2005)

    Article  Google Scholar 

  42. Alves, A., et al.: Web services business process execution language version 2.0. OASIS Standard, April 2007

    Google Scholar 

  43. Rademakers, T.: Activiti in action: executable business processes in BPMN 2.0. Manning Publications Co., Greenwich (2012)

    Google Scholar 

  44. Song, W., Jacobsen, H.A.: Static and dynamic process change. IEEE Trans. Serv. Comput. 11(1), 215–231 (2018)

    Article  Google Scholar 

  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). https://doi.org/10.1007/978-3-540-87877-3_18

    Chapter  Google Scholar 

  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)

    Article  Google Scholar 

  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)

    Article  Google Scholar 

Download references

Acknowledgement

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.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Xiaoxing Ma .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2018 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Ma, X., Gu, T., Song, W. (2018). Software Is Not Soft. In: Bowen, J., Liu, Z., Zhang, Z. (eds) Engineering Trustworthy Software Systems. SETSS 2017. Lecture Notes in Computer Science(), vol 11174. Springer, Cham. https://doi.org/10.1007/978-3-030-02928-9_5

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-02928-9_5

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-02927-2

  • Online ISBN: 978-3-030-02928-9

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics