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.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsNotes
- 1.
- 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.
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.
- 5.
- 6.
- 7.
A more complete description of the procedure can be found at http://moon.nju.edu.cn/dse/javelus/a-tutorial-of-javelus.
- 8.
- 9.
- 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.
- 12.
- 13.
- 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.
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.
It must be acyclic because multiple occurrences of a same activity in \(\sigma \) are modeled as different nodes in the graph.
References
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
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)
Kramer, J., Magee, J.: The evolving philosophers problem: dynamic change management. IEEE Trans. Softw. Eng. 16(11), 1293–1306 (1990)
Hicks, M., Nettles, S.: Dynamic software updating. ACM Trans. Program. Lang. Syst. 27(6), 1049–1096 (2005)
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)
Rajlich, V.: Software evolution and maintenance. In: Proceedings of the on Future of Software Engineering. FOSE 2014, pp. 133–144. ACM, New York (2014)
Daley, R.C., Dennis, J.B.: Virtual memory, processes, and sharing in MULTICS. Commun. ACM 11(5), 306–312 (1968)
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
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)
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)
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)
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)
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)
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)
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)
Würthinger, T., Wimmer, C., Stadler, L.: Unrestricted and safe dynamic code evolution for Java. Sci. Comput. Program. 78(5), 481–498 (2013)
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)
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”
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)
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)
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)
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)
Fowler, M.: Blue-green deployment, March 2010. https://martinfowler.com/bliki/BlueGreenDeployment.html. Accessed 1 Feb 2018
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)
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
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)
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)
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)
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
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)
Gupta, D., Jalote, P., Barua, G.: A formal framework for on-line software version change. IEEE Trans. Softw. Eng. 22(2), 120–131 (1996)
Gu, T.: On dynamic updating of Java programs. Ph.D. thesis, Nanjing University, China (2017)
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)
Buban, G., et al.: Patching of in-use functions on a running computer system, US Patent App. 10/307,902, 3 June 2004
Open Source Software Project: kpatch: dynamic kernel patching. https://github.com/dynup/kpatch (2016). Accessed 07 July 2016
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)
Rinderle, S., Reichert, M., Dadam, P.: Correctness criteria for dynamic changes in workflow systems: a survey. Data Knowl. Eng. 50(1), 9–34 (2004)
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)
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)
Casati, F., Ceri, S., Pernici, B., Pozzi, G.: Workflow evolution. Data Knowl. Eng. 24(3), 211–238 (1998)
van der Aalst, W., ter Hofstede, A.: YAWL: yet another workflow language. Inf. Syst. 30(4), 245–275 (2005)
Alves, A., et al.: Web services business process execution language version 2.0. OASIS Standard, April 2007
Rademakers, T.: Activiti in action: executable business processes in BPMN 2.0. Manning Publications Co., Greenwich (2012)
Song, W., Jacobsen, H.A.: Static and dynamic process change. IEEE Trans. Serv. Comput. 11(1), 215–231 (2018)
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
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)
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)
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
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2018 Springer Nature Switzerland AG
About this paper
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)