Runtime Programming through Model-Preserving, Scalable Runtime Patches

We consider a methodology for flexible software design, runtime programming, defined by recurrent, incremental software modifications to a program at runtime, called runtime patches. The principles we consider for runtime programming are model preservation and scalability. Model preservation means that a runtime patch preserves the programming model in place for programs -- in terms of syntax, semantics, and correctness properties -- as opposed to an ``ad-hoc'', disruptive operation, or one that requires an extra level of abstraction. Scalability means that, for practicality and performance, the effort in program compilation required by a runtime patch should ideally scale in proportion to the change induced by it. We formulate runtime programming over an abstract model for component-based concurrent programs, defined by a modular relation between the syntax and semantics of programs, plus built-in notions of initialization and quiescence. The notion of a runtime patch is defined over these assumptions, as a model-preserving transition between two programs and respective states. Additionally, we propose an incremental compilation framework for scalability in patch compilation. The formulation is put in perspective through a case-study instantiation over a language for distributed hard real-time systems, the Hierarchical Timing Language (HTL).

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

[2]  Michael Hicks,et al.  Contextual effects for version-consistent dynamic software updating and safe concurrent programming , 2008, POPL '08.

[3]  Alberto L. Sangiovanni-Vincentelli,et al.  A hierarchical coordination language for interacting real-time tasks , 2006, EMSOFT '06.

[4]  Kleanthis Thramboulidis,et al.  Real-time Java in control and automation: a model driven development approach , 2005, 2005 IEEE Conference on Emerging Technologies and Factory Automation.

[5]  Marco Zennaro,et al.  CSL: A Language to Specify and Re-specify Mobile Sensor Network Behaviors , 2009, 2009 15th IEEE Real-Time and Embedded Technology and Applications Symposium.

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

[7]  M. Frans Kaashoek,et al.  Ksplice: automatic rebootless kernel updates , 2009, EuroSys '09.

[8]  Carlo Rossi,et al.  Giotto a time-triggered language for embedded programming , 2011 .

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

[10]  Ana Sokolova,et al.  Runtime Programming through Model-Preserving, Scalable Runtime Patches , 2011, ACSD.

[11]  Tudor Dumitras,et al.  Why Do Upgrades Fail and What Can We Do about It? , 2009, Middleware.

[12]  Jeff Magee,et al.  The Evolving Philosophers Problem: Dynamic Change Management , 1990, IEEE Trans. Software Eng..

[13]  Magnus O. Myreen Verified just-in-time compiler on x86 , 2010, POPL '10.

[14]  Zhong Shao,et al.  Certified self-modifying code , 2007, PLDI '07.

[15]  Shengbing Jiang,et al.  2080 SHENGBING JIANG AND RATNESH KUMAR , 2006 .

[16]  Ana Sokolova,et al.  Distributed, Modular HTL , 2009, 2009 30th IEEE Real-Time Systems Symposium.

[17]  Andreas Polze,et al.  Dynamic reconfiguration of component-based real-time software , 2005, 10th IEEE International Workshop on Object-Oriented Real-Time Dependable Systems.

[18]  Jeff Magee,et al.  Self-Managed Systems: an Architectural Challenge , 2007, Future of Software Engineering (FOSE '07).

[19]  Andy J. Wellings,et al.  Providing temporal isolation in the OSGi framework , 2009, JTRES '09.

[20]  Edward A. Lee,et al.  On relational interfaces , 2009, EMSOFT '09.

[21]  João Barros,et al.  Towards the Safe Programming of Wireless Sensor Networks , 2010, PLACES.

[22]  Michel Wermelinger Towards a chemical model for software architecture reconfiguration , 1998, Proceedings. Fourth International Conference on Configurable Distributed Systems (Cat. No.98EX159).

[23]  Theo Ungerer,et al.  Dynamic real-time reconfiguration on a multithreaded Java-microcontroller , 2004, Seventh IEEE International Symposium onObject-Oriented Real-Time Distributed Computing, 2004. Proceedings..

[24]  Marisol García-Valls,et al.  Solutions for Supporting Composition of Service-Based Real-Time Applications , 2008, 2008 11th IEEE International Symposium on Object and Component-Oriented Real-Time Distributed Computing (ISORC).

[25]  Ana Sokolova,et al.  Programmable temporal isolation through variable-bandwidth servers , 2009, 2009 IEEE International Symposium on Industrial Embedded Systems.

[26]  Alberto L. Sangiovanni-Vincentelli,et al.  Separate compilation of hierarchical real-time programs into linear-bounded Embedded Machine code , 2012, Sci. Comput. Program..

[27]  Carlo Curino,et al.  The PRISM Workwench: Database Schema Evolution without Tears , 2009, 2009 IEEE 25th International Conference on Data Engineering.

[28]  Lui Sha Dependable system upgrade , 1998, Proceedings 19th IEEE Real-Time Systems Symposium (Cat. No.98CB36279).

[29]  Eric A. Brewer,et al.  Lessons from Giant-Scale Services , 2001, IEEE Internet Comput..

[30]  Iulian Neamtiu,et al.  Safe and timely updates to multi-threaded programs , 2009, PLDI '09.

[31]  Thomas A. Henzinger,et al.  Schedule-Carrying Code , 2003, EMSOFT.

[32]  Ted Briscoe,et al.  Parser evaluation: a survey and a new proposal , 1998, LREC.

[33]  Tudor Dumitras Dependable, online upgrades in enterprise systems , 2009, OOPSLA Companion.

[34]  Uwe Brinkschulte,et al.  Dynamic real-time reconfiguration in distributed systems: timing issues and solutions , 2005, Eighth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing (ISORC'05).

[35]  Stavros Tripakis,et al.  Modular code generation from synchronous block diagrams: modularity vs. code size , 2009, POPL '09.

[36]  Alfons Crespo,et al.  Mode Change Protocols for Real-Time Systems: A Survey and a New Proposal , 2004, Real-Time Systems.

[37]  Joseph Sifakis,et al.  Modeling synchronous systems in BIP , 2009, EMSOFT '09.

[38]  Christoph M. Kirsch,et al.  Semantics-Preserving and Incremental Runtime Patching of Real-Time Programs , 2008 .

[39]  Pradeep K. Khosla,et al.  Design of Dynamically Reconfigurable Real-Time Software Using Port-Based Objects , 1997, IEEE Trans. Software Eng..

[40]  P. Ramadge,et al.  Supervisory control of a class of discrete event processes , 1987 .

[41]  Jonathan E. Cook,et al.  Highly reliable upgrading of components , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[42]  Insup Lee,et al.  Incremental schedulability analysis of hierarchical real-time components , 2006, EMSOFT '06.