Robusta: An approach to building dynamic applications

Current areas of research, such as ubiquitous and cloud computing, consider execution environments to be in a constant state of change. Dynamic applications--where components can be added, removed and substituted during execution--allow software to adapt and adjust to changing environments, and to accommodate evolving features. Unfortunately, dynamic applications raise design and development issues that have yet to be fully addressed. In this dissertation we show that dynamism is a crosscutting concern that breaks many of the assumptions that developers are otherwise allowed to make in classic applications. Dynamism deeply impacts software design and development. If not handled correctly, dynamism can silently corrupt the application. Furthermore, writing dynamic applications is complex and error-prone, and given the level of complexity and the impact dynamism has on the development process, software cannot become dynamic without (extensive) modification and dynamism cannot be entirely transparent (although much of it may often be externalized or automated). This work focuses on giving the software architect control over the level, the nature and the granularity of dynamism that is required in dynamic applications. This allows architects and developers to choose where the efforts of programming dynamic components are best spent, avoiding the cost and complexity of making all components dynamic. The idea is to allow architects to determine the balance between the efforts spent and the level of dynamism required for the application's needs. At design-time we perform an impact analysis using the architect's requirements for dynamism. This serves to identify components that can be corrupted by dynamism and to--at the architect's disposition--render selected components resilient to dynamism. The application becomes a well-defined mix of dynamic areas, where components are expected to change at runtime, and static areas that are protected from dynamism and where programming is simpler and less restrictive. At runtime, our framework ensures the application remains consistent--even after unexpected dynamic events--by computing and removing potentially corrupt components. The framework attempts to recover quickly from dynamism and to minimize the impact of dynamism on the application. Our work builds on recent Software Engineering and Middleware technologies--namely, OSGi, iPOJO and APAM--that provide basic mechanisms to handle dynamism, such as dependency injection, late-binding, service availability notifications, deployment, lifecycle and dependency management. Our approach, implemented in the Robusta prototype, extends and complements these technologies by providing design and development-time support, and enforcing application execution consistency in the face of dynamism.

[1]  Richard S. Hall,et al.  iPOJO: an Extensible Service-Oriented Component Framework , 2007, IEEE International Conference on Services Computing (SCC 2007).

[2]  David Garlan,et al.  A formal basis for architectural connection , 1997, TSEM.

[3]  Flávio Oquendo,et al.  ArchWare: Architecting Evolvable Software , 2004, EWSA.

[4]  W. W. Royce,et al.  Managing the development of large software systems , 1970 .

[5]  Niklaus Wirth,et al.  Modula: A language for modular multiprogramming , 1977, Softw. Pract. Exp..

[6]  Hong Mei,et al.  Journal of Software Maintenance and Evolution: Research and Practice a Component-based Approach to Online Software Evolution , 2022 .

[7]  Marcos K. Aguilera,et al.  Performance debugging for distributed systems of black boxes , 2003, SOSP '03.

[8]  Thomas Ledoux,et al.  FPath and FScript: Language support for navigation and reliable reconfiguration of Fractal architectures , 2009, Ann. des Télécommunications.

[9]  M.M. Lehman,et al.  Programs, life cycles, and laws of software evolution , 1980, Proceedings of the IEEE.

[10]  Glenn D. Bergland,et al.  A Guided Tour of Program Design Methodologies , 1981, Computer.

[11]  Tom Mens,et al.  Introduction and Roadmap: History and Challenges of Software Evolution , 2008, Software Evolution.

[12]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[13]  David Garlan,et al.  Acme: architectural description of component-based systems , 2000 .

[14]  Pattie Maes,et al.  Concepts and experiments in computational reflection , 1987, OOPSLA '87.

[15]  Kiev Gama,et al.  Using the service coroner tool for diagnosing stale references in the OSGi platform , 2008, Companion '08.

[16]  Yolande Berbers,et al.  Fresco: Flexible and Reliable Evolution System for Components , 2005, SETra@ICGT.

[17]  Francesco Tisato,et al.  Architectural Reflection: Realising Software Architectures via Reflective Activities , 2000, EDO.

[18]  Rachel Harrison,et al.  Evolution in software systems: foundations of the SPE classification scheme , 2006, J. Softw. Maintenance Res. Pract..

[19]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming, 2nd Edition , 2002, Addison-Wesley component software series.

[20]  Munindar P. Singh,et al.  Service-Oriented Computing: Key Concepts and Principles , 2005, IEEE Internet Comput..

[21]  P. Kidwell,et al.  The mythical man-month: Essays on software engineering , 1996, IEEE Annals of the History of Computing.

[22]  Roland T. Mittermeir,et al.  Software evolution: let's sharpen the terminology before sharpening (out-of-scope) tools , 2001, IWPSE '01.

[23]  Mark W. Maier,et al.  Software Architecture: Introducing IEEE Standard 1471 , 2001, Computer.

[24]  Toby Bloom,et al.  Reconfiguration and module replacement in Argus: theory and practice , 1993, Softw. Eng. J..

[25]  Robert S. Fabry,et al.  How to design a system in which modules can be changed on the fly , 1976, ICSE '76.

[26]  Naranker Dulay,et al.  Specifying Distributed Software Architectures , 1995, ESEC.

[27]  Joe Armstrong,et al.  Concurrent programming in ERLANG , 1993 .

[28]  Martin Odersky,et al.  Scalable component abstractions , 2005, OOPSLA '05.

[29]  Ronald Morrison,et al.  A framework for supporting dynamic systems co-evolution , 2007, Automated Software Engineering.

[30]  David Garlan Formal Methods for Software Architectures , 2003, Lecture Notes in Computer Science.

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

[32]  Jeff Offutt,et al.  Coupling-based analysis of object-oriented software , 2007 .

[33]  Niklaus Wirth,et al.  A Plea for Lean Software , 1995, Computer.

[34]  Wolfgang Emmerich,et al.  Revised Papers from the Second International Workshop on Engineering Distributed Objects , 2000 .

[35]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[36]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975, IEEE Transactions on Software Engineering.

[37]  John F. Wakerly,et al.  The programming language PASCAL , 1979, Microprocessors and microsystems.

[38]  Luciano Baresi,et al.  The disappearing boundary between development-time and run-time , 2010, FoSER '10.

[39]  Salvatore Mamone,et al.  The IEEE standard for software maintenance , 1994, SOEN.

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

[41]  Clemens A. Szyperski,et al.  Modules and Components - Rivals or Partners? , 2000, The School of Niklaus Wirth.

[42]  Clemens A. Szyperski,et al.  Import is Not Inheritance - Why We Need Both: Modules and Classes , 1992, ECOOP.

[43]  Ivica Crnkovic,et al.  Software Components beyond Programming: From Routines to Services , 2011, IEEE Software.

[44]  Geoff Coulson,et al.  Framework for quiescence management in support of reconfigurable multi-threaded component-based systems , 2008, IET Softw..

[45]  Peter Sommerlad,et al.  Pattern-Oriented Software Architecture Volume 1: A System of Patterns , 1996 .

[46]  Richard N. Taylor,et al.  Software Design and Architecture The once and future focus of software engineering , 2007, Future of Software Engineering (FOSE '07).

[47]  Niklaus Wirth,et al.  The programming language oberon , 1988, Softw. Pract. Exp..

[48]  Theo D'Hondt,et al.  Tranquility: A Low Disruptive Alternative to Quiescence for Ensuring Safe Dynamic Updates , 2007, IEEE Transactions on Software Engineering.

[49]  Gordon S. Blair,et al.  The case for reflective middleware , 2002, CACM.

[50]  Meir M. Lehman,et al.  Rules and Tools for Software Evolution Planning and Management , 2001, Ann. Softw. Eng..

[51]  Richard N. Taylor,et al.  A Classification and Comparison Framework for Software Architecture Description Languages , 2000, IEEE Trans. Software Eng..

[52]  George Candea,et al.  Microreboot - A Technique for Cheap Recovery , 2004, OSDI.

[53]  Scott Nettles,et al.  Dynamic software updating , 2001, PLDI '01.

[54]  Jürgen Dingel,et al.  A survey of self-management in dynamic software architecture specifications , 2004, WOSS '04.

[55]  Olivier Barais,et al.  Safarchie Studio: ArgoUML Extensions to Build Safe Architectures , 2004, IFIP-WADL.

[56]  O. Frieder,et al.  Dynamic program updating in a distributed computer system , 1988, Proceedings. Conference on Software Maintenance, 1988..

[57]  Jan Bosch,et al.  Design erosion: problems and causes , 2002, J. Syst. Softw..

[58]  Valérie Issarny,et al.  A dynamic reconfiguration service for CORBA , 1998, Proceedings. Fourth International Conference on Configurable Distributed Systems (Cat. No.98EX159).

[59]  Roy Fielding,et al.  Architectural Styles and the Design of Network-based Software Architectures"; Doctoral dissertation , 2000 .

[60]  Peyman Oreizy,et al.  Architecture-based runtime software evolution , 1998, Proceedings of the 20th International Conference on Software Engineering.

[61]  Peyman Oreizy,et al.  Architectural styles for runtime software adaptation , 2009, 2009 Joint Working IEEE/IFIP Conference on Software Architecture & European Conference on Software Architecture.

[62]  Douglas C. Schmidt,et al.  Ultra-Large-Scale Systems: The Software Challenge of the Future , 2006 .

[63]  Ugo Montanari,et al.  Graph grammars and constraint solving for software architecture styles , 1998, ISAW '98.

[64]  Theo D'Hondt,et al.  An alternative to Quiescence: Tranquility , 2006, 2006 22nd IEEE International Conference on Software Maintenance.

[65]  Miguel Alexandre Wermelinger Specification of software architecture reconfiguration , 1999 .

[66]  Ciarán Bryce,et al.  A language model for dynamic code updating , 2008, HotSWUp '08.

[67]  Hassan Gomaa,et al.  Software reconfiguration patterns for dynamic evolution of software architectures , 2004, Proceedings. Fourth Working IEEE/IFIP Conference on Software Architecture (WICSA 2004).

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

[69]  Malcolm Munro,et al.  Software Maintenance and Evolution , 2003 .

[70]  Tom Mens,et al.  Towards a taxonomy of software change , 2005, J. Softw. Maintenance Res. Pract..

[71]  Richard N. Taylor,et al.  A framework for classifying and comparing architecture description languages , 1997, ESEC '97/FSE-5.

[72]  Michael Potter,et al.  Adoption of computer aided software engineering (CASE) technology: an innovation adoption perspective , 1995, DATB.

[73]  Alexander L. Wolf,et al.  Acm Sigsoft Software Engineering Notes Vol 17 No 4 Foundations for the Study of Software Architecture , 2022 .

[74]  Mary Shaw Procedure Calls Are the Assembly Language of Software Interconnection: Connectors Deserve First-Class Status , 1993, ICSE Workshop on Studies of Software Design.

[75]  Dewayne E. Perry Issues in Architecture Evolution: Using Design Intent in Maintenance and Controlling Dynamic Evolution , 2008, ECSA.

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

[77]  Pablo de la Fuente,et al.  Dynamic coordination architecture through the use of reflection , 2001, SAC.

[78]  Anthony Wasserman,et al.  Tutorial on Software Design Techniques , 1990 .

[79]  David Garlan,et al.  Documenting software architectures: views and beyond , 2002, 25th International Conference on Software Engineering, 2003. Proceedings..

[80]  Jeff Magee,et al.  Dynamic structure in software architectures , 1996, SIGSOFT '96.

[81]  Yolande Berbers,et al.  DeepCompare: static analysis for runtime software evolution , 2005 .

[82]  Daniel M. Roy,et al.  Enhancing Server Availability and Security Through Failure-Oblivious Computing , 2004, OSDI.