Dynamic Software Updates and Context Adaptation for Distributed Active Objects

  • Einar Broch JohnsenEmail author
  • Ingrid Chieh Yu


Dynamic software updates enable running programs to evolve without downtime. Drivers for such updates include software enhancements, bug fixes, and maintenance for software in domains, where it is costly, impractical, or even impossible to halt the system to reconfigure. In particular, application-level services in IoT ecosystems need to adapt seamlessly to changing, heterogeneous contexts. Services need to discover, adapt to, and interact with other services already deployed in the running ecosystem, supporting autonomicity within the service life-cycle. This paper explores a formalized, type safe asynchronous system of runtime software discovery and evolution, motivated by IoT ecosystems.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Gul A. Agha. ACTORS: A Model of Concurrent Computations in Distributed Systems Cambridge, Mass.: The MIT Press, 1986.Google Scholar
  2. 2.
    Sameer Ajmani, Barbara Liskov, and Liuba Shrira. “Modular Software Upgrades for Distributed Systems”. In: Proc. 20th European Conf on Object-Oriented Programming (ECOOP’06) Ed. by Dave Thomas. Vol. 4067. Lecture Notes in Computer Science. Springer, 2006, pp. 452–476.Google Scholar
  3. 3.
    Torben Amtoft, Flemming Nielson, and Hanne Riis Nielson. Type and Effect Systems: Behaviours for Concurrency Imperial College Press, 1999.Google Scholar
  4. 4.
    Joe Armstrong. Programming Erlang: Software for a Concurrent World Pragmatic Book-shelf, 2007.Google Scholar
  5. 5.
    Emmanuel Baccelli et al. “Scripting Over-The-Air: Towards Containers on Low-end Devices in the Internet of Things”. In: IEEE PerCom 2018 Mar 2018. URL:
  6. 6.
    Gavin Bierman, Matthew Parkinson, and James Noble. “UpgradeJ: Incremental Typecheck- ing for Class Upgrades”. In: Proc. 22nd European Conf on Object-Oriented Programming (ECOOP’08) Vol. 5142. Lecture Notes in Computer Science. Springer, 2008, pp. 235–259. ISBN: 978-3-540-70591-8.Google Scholar
  7. 7.
    Gavin Bierman et al. “Formalizing Dynamic Software Updating”. In: Proc. 2nd Intl. Work-shop on Unanticipated Software Evolution (USE) Apr 2003.Google Scholar
  8. 8.
    Frank De Boer et al. “A Survey of Active Object Languages”. In: ACM Comput. Surv 50.5 (Oct. 2017), 76:1–76:39.Google Scholar
  9. 9.
    Chandrasekhar Boyapati et al. “Lazy modular upgrades in persistent object stores”. In: Proc. Object-Oriented Programming Systems, Languages and Applications (OOPSLA’03) Ed. by Ron Crocker and Guy L. Steele Jr ACM Press, 2003, pp. 403–417.Google Scholar
  10. 10.
    Haibo Chen et al. “POLUS: A POwerful Live Updating System”. In: Proceedings of the 29th International Conference on Software Engineering ICSE ’07. IEEE Computer Society, 2007. ISBN: 0-76952828-7. DOI: 10.1109/ICSE.2007.65 URL: 1109/ICSE.2007.65
  11. 11.
    Dominic Duggan. “Type-Based Hot Swapping of Running Modules”. In: Proc. 6th Intl. Conf on Functional Programming (ICFP’01) Ed. by Cindy Norris and Jr. James B. Fenwick. Vol. 36, 10. ACM SIGPLAN notices. New York: ACM Press, Sept. 2001, pp. 62–73.Google Scholar
  12. 12.
    Matthias Felleisen and Robert Hieb. “The Revised Report on the Syntactic Theories of Sequential Control and State”. In: Theor Comp. Sci. 103.2 (1992), pp. 235–271.Google Scholar
  13. 13.
    Deepak Gupta, Pankaj Jalote, and Gautam Barua. “A Formal Framework for On-line Software Version Change.” In: IEEE Trans. Software Eng 22.2 (1996), pp. 120–131.Google Scholar
  14. 14.
    Christopher M. Hayden et al. “Kitsune: Efficient, General-Purpose Dynamic Software Updating for C”. In: ACM Trans. Program. Lang Syst. 36.4 (2014). ISSN: 0164-0925. DOI: 10.1145/2629460 URL:
  15. 15.
    Carl E. Hewitt. “Viewing Control Structures as Patterns of Passing Messages”. In: Journal of Artificial Intelligence 8.3 (1977), pp. 323–364.Google Scholar
  16. 16.
    Raphael Hiesgen, Dominik Charousset, and Thomas C. Schmidt. “Embedded Actors Towards distributed programming in the IoT”. In: IEEE Fourth International Conference on Consumer Electronics Berlin (ICCE-Berlin 2014) IEEE, 2014, pp. 371–375.Google Scholar
  17. 17.
    Gisli Hjálmtýsson and Robert S. Gray. “Dynamic C+ + Classes: A Lightweight Mechanism to Update Code in a Running Program”. In: Proc. USENIX Tech. Conf (USENIX ’98) May 1998.Google Scholar
  18. 18.
    Einar Broch Johnsen, Marcel Kyas, and Ingrid Chieh Yu. “Dynamic Classes: Modular Asynchronous Evolution of Distributed Concurrent Objects”. In: Proc. 16th International Symposium on Formal Methods (FM’09) Ed. by Ana Cavalcanti and Dennis Dams. Vol. 5850. Lecture Notes in Computer Science. Springer, Nov. 2009, pp. 596–611.CrossRefGoogle Scholar
  19. 19.
    Einar Broch Johnsen et al. “A formal model of service-oriented dynamic object groups”. In: Sci. Comput. Program. 115–116 (2016), pp. 3–22.Google Scholar
  20. 20.
    Einar Broch Johnsen et al. “ABS: A Core Language for Abstract Behavioral Specification”. In: Proc. 9th International Symposium on Formal Methods for Components and Objects (FMCO 2010) Ed. by Bernhard Aichernig, Frank S. de Boer, and Marcello M. Bonsangue. Vol. 6957. LNCS. Springer, 2011, pp. 142–164.Google Scholar
  21. 21.
    Elizabeth Latronico et al. “A Vision of Swarmlets”. In: IEEE Internet Computing 19.2 (2015), pp. 20–28.CrossRefGoogle Scholar
  22. 22.
    Edward A. Lee et al. “The Swarm at the Edge of the Cloud”. In: IEEE Design & Test 31.3 (2014), pp. 8–20.CrossRefGoogle Scholar
  23. 23.
    Marten Lohstroh and Edward A. Lee. “An Interface Theory for the Internet of Things”. In: Proc. 13th International Conference on Software Engineering and Formal Methods (SEFM 2015) Ed. by Radu Calinescu and Bernhard Rumpe. Vol. 9276. Lecture Notes in Computer Science. Springer, 2015, pp. 20–34.Google Scholar
  24. 24.
    Scott Malabarba et al. “Runtime Support for Type-Safe Dynamic Java Classes”. In: Proc. 14th European Conf on Object-Oriented Programming (ECOOP’00) Ed. by Elisa Bertino. Vol. 1850. Lecture Notes in Computer Science. Springer, June 2000, pp. 337–361.Google Scholar
  25. 25.
    Bertrand Meyer. “Applying “Design by Contract””. In: IEEE Computer 25.10 (1992), pp. 40–51.Google Scholar
  26. 26.
    Daniele Miorandi et al. “Internet of things: Vision, applications and research challenges”. In: Ad Hoc Networks 10.7 (2012), pp. 1497–1516.CrossRefGoogle Scholar
  27. 27.
    Alessandro Orso, Anup Rao, and Mary Jean Harrold. “A Technique for Dynamic Updating of Java Software”. In: Proc. Intl. Conf. on Software Maintenance (ICSM’02) IEEE Computer Society Press, Oct. 2002, pp. 649–658.Google Scholar
  28. 28.
    Valerio Panzica La Manna. “Local Dynamic Update for Component-based Distributed Systems”. In: Proceedings of the 15th ACM SIGSOFT Symposium on Component Based Software Engineering CBSE ’12. ACM, 2012. ISBN: 978-1-4503-1345-2. DOI: 10.1145/2304736.2304764. URL:
  29. 29.
    Valerio Panzica La Manna et al. “Formalizing Correctness Criteria of Dynamic Updates Derived from Specification Changes”. In: Proceedings of the 8th International Symposium on Software Engineering for Adaptive and Self-Managing Systems SEAMS ’13. IEEE Press, 2013. ISBN: 978-1-4673-4401-2. URL:
  30. 30.
    Luıis Pina, Luıis Veiga, and Michael Hicks. “Rubah: DSU for Java on a Stock JVM”. In: Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications OOPSLA ’14. ACM, 2014. ISBN: 978-1-4503-2585-1. DOI: 10 1145 / 2660193 2660220. URL:
  31. 31.
    Jan Schäfer and Arnd Poetzsch-Heffter. “JCoBox: Generalizing Active Objects to Concur rent Components”. In: Proceedings of the 24th European Conference on Object-Oriented Programming (ECOOP 2010). Ed. by Theo D’Hondt. Vol. 6183. Lecture Notes in Computer Science. Springer, 2010, pp. 275–299.Google Scholar
  32. 32.
    Alessandro Sivieri, Luca Mottola, and Gianpaolo Cugola. “Building Internet of Things software with ELIoT”. In: Computer Communications 89–90 (2016), pp. 141–153.CrossRefGoogle Scholar
  33. 33.
    Eystein Stenberg. “Key Considerations for Software Updates for Embedded Linux and IoT”. In: Linux J 2017.276 (Apr 2017). ISSN: 1075-3583.Google Scholar
  34. 34.
    Gareth Stoyle et al. “Mutatis Mutandis: Safe and predictable dynamic software updating”. In: ACM TOPLAS 29.4 (2007), p. 22. ISSN: 0164-0925.Google Scholar
  35. 35.
    Jean-Pierre Talpin and Pierre Jouvelot. “Polymorphic Type, Region and Effect Inference”. In: Journal of Functional Programming 2.3 (1992), pp. 245–271.MathSciNetCrossRefGoogle Scholar
  36. 36.
    Ingrid Chieh Yu, Einar Broch Johnsen, and Olaf Owe. “Type-Safe Runtime Class Upgrades in Creol”. In: Proc. 8th Intl. Conf on Formal Methods for Open Object-Based Distributed Systems (FMOODS’06) Ed. by Roberto Gorrieri and Heike Wehrheim. Vol. 4037. LNCS. Springer, June 2006, pp. 202–217.Google Scholar

Copyright information

© Springer Nature Switzerland AG 2018

Authors and Affiliations

  1. 1.Department of InformaticsUniversity of OsloOsloNorway

Personalised recommendations