Dynamic Software Updates and Context Adaptation for Distributed Active Objects

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.

[1]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[2]  Haibo Chen,et al.  POLUS: A POwerful Live Updating System , 2007, 29th International Conference on Software Engineering (ICSE'07).

[3]  Reiner Hähnle,et al.  ABS: A Core Language for Abstract Behavioral Specification , 2010, FMCO.

[4]  Bertrand Meyer,et al.  Applying 'design by contract' , 1992, Computer.

[5]  Eystein Stenberg Key considerations for software updates for embedded Linux and IoT , 2017 .

[6]  Luís Veiga,et al.  Rubah: DSU for Java on a stock JVM , 2014, OOPSLA.

[7]  Anthony Rowe,et al.  The Swarm at the Edge of the Cloud , 2015, IEEE Design & Test.

[8]  Emmanuel Baccelli,et al.  Scripting Over-The-Air: Towards Containers on Low-end Devices in the Internet of Things , 2018, 2018 IEEE International Conference on Pervasive Computing and Communications Workshops (PerCom Workshops).

[9]  Alessandro Orso,et al.  A technique for dynamic updating of Java software , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[10]  Dominic Duggan,et al.  Type-based hot swapping of running modules , 2005, Acta Informatica.

[11]  Gavin M. Bierman,et al.  UpgradeJ: Incremental Typechecking for Class Upgrades , 2008, ECOOP.

[12]  Robert Hieb,et al.  The Revised Report on the Syntactic Theories of Sequential Control and State , 1992, Theor. Comput. Sci..

[13]  Peter Sewell,et al.  Formalizing Dynamic Software Updating , 2003 .

[14]  Gavin M. Bierman,et al.  Mutatis Mutandis: Safe and predictable dynamic software updating , 2007, TOPL.

[15]  Edward A. Lee,et al.  A Vision of Swarmlets , 2015, IEEE Internet Computing.

[16]  Valerio Panzica La Manna Local dynamic update for component-based distributed systems , 2012, CBSE '12.

[17]  Liuba Shrira,et al.  Lazy modular upgrades in persistent object stores , 2003, OOPSLA.

[18]  Luca Mottola,et al.  Building Internet of Things software with ELIoT , 2016, Comput. Commun..

[19]  Earl T. Barr,et al.  Runtime Support for Type-Safe Dynamic Java Classes , 2000, ECOOP.

[20]  Thomas C. Schmidt,et al.  Embedded Actors - Towards distributed programming in the IoT , 2014, 2014 IEEE Fourth International Conference on Consumer Electronics Berlin (ICCE-Berlin).

[21]  Einar Broch Johnsen,et al.  Dynamic Classes: Modular Asynchronous Evolution of Distributed Concurrent Objects , 2009, FM.

[22]  Edward A. Lee,et al.  An Interface Theory for the Internet of Things , 2015, SEFM.

[23]  Flemming Nielson,et al.  Type and effect systems - behaviours for concurrency , 1999 .

[24]  Robert Gray,et al.  Dynamic C++ Classes - A Lightweight Mechanism to Update Code in a Running Program , 1998, USENIX Annual Technical Conference.

[25]  Frank S. de Boer,et al.  A Survey of Active Object Languages , 2017, ACM Comput. Surv..

[26]  Carl Hewitt,et al.  Viewing Control Structures as Patterns of Passing Messages , 1977, Artif. Intell..

[27]  Michael Hicks,et al.  Kitsune: Efficient, General-Purpose Dynamic Software Updating for C , 2014 .

[28]  Imrich Chlamtac,et al.  Internet of things: Vision, applications and research challenges , 2012, Ad Hoc Networks.

[29]  DugganDominic Type-based hot swapping of running modules (extended abstract) , 2001 .

[30]  Pierre Jouvelot,et al.  Polymorphic type, region and effect inference , 1992, Journal of Functional Programming.

[31]  Einar Broch Johnsen,et al.  A formal model of service-oriented dynamic object groups , 2016, Sci. Comput. Program..

[32]  Joe Armstrong,et al.  Programming Erlang: Software for a Concurrent World , 1993 .

[33]  Deepak Gupta,et al.  A Formal Framework for On-line Software Version Change , 1996, IEEE Trans. Software Eng..

[34]  Arnd Poetzsch-Heffter,et al.  JCoBox: Generalizing Active Objects to Concurrent Components , 2010, ECOOP.

[35]  Einar Broch Johnsen,et al.  Type-Safe Runtime Class Upgrades in Creol , 2006, FMOODS.

[36]  Carlo Ghezzi,et al.  Formalizing correctness criteria of dynamic updates derived from specification changes , 2013, 2013 8th International Symposium on Software Engineering for Adaptive and Self-Managing Systems (SEAMS).

[37]  Liuba Shrira,et al.  Modular Software Upgrades for Distributed Systems , 2006, ECOOP.