An approach to the dynamic evolution of software systems

In this PhD thesis we advocate that connections between different software entities hinders the ability to make applications evolve at runtime. Our goal is thus to free entities from connections. Therefore, we built a disconnected communication architecture based on three main concepts: associative naming, late binding and asynchrony of communications. Communication occurs following an all-service approach (e.g. a method is a service) where a service request and invocation occur through a semantic description. The choice of the service that best matches the description of the requested service is performed at the moment of the invocation. In the thesis, we describe several implementations of disconnected architectures and applications. An interesting result is that we were able to obtain 99.99% availability for a web server (4 restarts in 18 months) while having some parts of the code modified more than 160 times.

[1]  Holger Peine,et al.  The Architecture of the Ara Platform for Mobile Agents , 1999, Mobile Agents.

[2]  L. Gong,et al.  Experience with secure multi-processing in Java , 1998, Proceedings. 18th International Conference on Distributed Computing Systems (Cat. No.98CB36183).

[3]  Alan D. Sloane,et al.  The Object Binary Interface: C++ Objects for Evolvable Shared Class Libraries , 1994, C++ Conference.

[4]  Fabrizio Ferrandina,et al.  Schema and Database Evolution in the O2 Object Database System , 1995, VLDB.

[5]  Willy Zwaenepoel,et al.  Flash: An efficient and portable Web server , 1999, USENIX Annual Technical Conference, General Track.

[6]  Kim Mens,et al.  Vrije Universiteit Brussel Faculteit Wetenschappen Reuse Contracts: Managing the Evolution of Reusable Assets Reuse Contracts: Managing the Evolution of Reusable Assets , 2022 .

[7]  Sheng Liang,et al.  Dynamic class loading in the Java virtual machine , 1998, OOPSLA '98.

[8]  Craig Chambers,et al.  HydroJ: object-oriented pattern matching for evolvable distributed systems , 2003, OOPSLA 2003.

[9]  Using WSCL in a UDDI Registry 1 . 02 UDDI Working Draft Technical Note Document May 5 , 2001 , 2001 .

[10]  Eric Pouyoul,et al.  Project JXTA Virtual Network , 2002 .

[11]  Luca Cardelli,et al.  Greedy Regular Expression Matching , 2004, ICALP.

[12]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[13]  Rod M. Burstall,et al.  HOPE: An experimental applicative language , 1980, LISP Conference.

[14]  M. Dmitriev Towards Flexible and Safe Technology for Runtime Evolution of Java Language Applications , 2001 .

[15]  Andrew J. Palay C++ in a Changing Environment , 1992, C++ Conference.

[16]  Jay Banerjee,et al.  Semantics and implementation of schema evolution in object-oriented databases , 1987, SIGMOD '87.

[17]  Sophia Drossopoulou,et al.  Fickle : Dynamic Object Re-classification , 2001, ECOOP.

[18]  Project Jxta: an Open, Innovative Collaboration , .

[19]  Matthias Zenger,et al.  Evolving Software with Extensible Modules , 2002 .

[20]  Jan Vitek,et al.  The JavaSeal Mobile Agent Kernel , 1999, Proceedings. First and Third International Symposium on Agent Systems Applications, and Mobile Agents.

[21]  Jens Palsberg Class-Graph Inference for Adaptive Programs , 1997, Theory Pract. Object Syst..

[22]  Ivar Jacobson,et al.  Making the Reuse Business Work , 1997, Computer.

[23]  Robbert van Renesse,et al.  Light-weight process groups in the Isis system , 1993, Distributed Syst. Eng..

[24]  Ciarán Bryce,et al.  Lana: An Approach to Programming Autonomous Systems , 2002, ECOOP.

[25]  Matei Ripeanu,et al.  Peer-to-peer architecture case study: Gnutella network , 2001, Proceedings First International Conference on Peer-to-Peer Computing.

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

[27]  Hong Va Leong,et al.  Improving the scalability of the CORBA event service with a multi‐agent load balancing algorithm , 2002, Softw. Pract. Exp..

[28]  Tobin J. Lehman,et al.  T Spaces , 1998, IBM Syst. J..

[29]  Grzegorz Czajkowski,et al.  Application isolation in the Java Virtual Machine , 2000, OOPSLA '00.

[30]  Frank W. Calliss,et al.  The Maintainer's Assistant (software tool) , 1989, Proceedings. Conference on Software Maintenance - 1989.

[31]  Rocco De Nicola,et al.  KLAIM: A Kernel Language for Agents Interaction and Mobility , 1998, IEEE Trans. Software Eng..

[32]  D. B. Davis,et al.  Sun Microsystems Inc. , 1993 .

[33]  E. B. Swanson,et al.  Software maintenance management , 1980 .

[34]  Paolo Ciancarini,et al.  Jada - Coordination and Communication for Java Agents , 1996, Mobile Object Systems.

[35]  Wolfgang Hoschek,et al.  Peer-to-Peer Grid Databases for Web Service Discovery , 2003 .

[36]  Donnie O'Quinn,et al.  Photoshop in a nutshell - a desktop quick reference , 1997 .

[37]  Jan Vitek,et al.  Designing JAVASEAL or How to Make JAVA Safe for Agents , 1998 .

[38]  Giuseppe Castagna,et al.  CDuce: an XML-centric general-purpose language , 2003, ACM SIGPLAN Notices.

[39]  Grzegorz Czajkowski,et al.  A resource management interface for the Java™ platform , 2005, Softw. Pract. Exp..

[40]  Ken Arnold,et al.  JavaSpaces¿ Principles, Patterns, and Practice , 1999 .

[41]  Andrew Adamatzky,et al.  Laziness + Sensitivity + Mobility = Structure. Emergence of Patterns in Lattice Swarms , 1999, ECAL.

[42]  Michael A. Cusumano,et al.  How Microsoft builds software , 1997, CACM.

[43]  Tom Mens,et al.  Incremental Design of Layered State Diagrams , 1999 .

[44]  G. L. Steele Common Lisp , 1990 .

[45]  Bjarne Stroustrup,et al.  The Design and Evolution of C , 1994 .

[46]  C. M. Sperberg-McQueen,et al.  eXtensible Markup Language (XML) 1.0 (Second Edition) , 2000 .

[47]  Sacha Krakowiak,et al.  Architecture and Implementation of Guide, an Object-Oriented Distributed System , 1991, Comput. Syst..

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

[49]  You Jinyuan,et al.  A Design Framework for Internet-scale Event Observation and Notification , 2001 .

[50]  Bjarne Stroustrup,et al.  Multiple Inheritance for C++ , 1989, Comput. Syst..

[51]  Tom Mens,et al.  Unanticipated Software Evolution , 2002, ECOOP Workshops.

[52]  Wolfgang De Meuter Monads as a theoretical foundation for AOP , 2000 .

[53]  Tom Mens,et al.  A formal foundation for object-oriented software evolution , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[54]  Luc Moreau,et al.  Distributed directory service and message routing for mobile agents , 2001, Sci. Comput. Program..

[55]  Mikhail Dmitriev,et al.  Safe class and data evolution in large and long-lived Java applications , 2001 .

[56]  Gísli Hjálmtýsson,et al.  Dynamic C++ classes , 1999 .

[57]  J. Chris Miller,et al.  Implications of automated restructuring of COBOL , 1987, SIGP.

[58]  Erik Odberg,et al.  Category Classes: Flexible Classification and Evolution in Object-Oriented Databases , 1994, CAiSE.

[59]  Lois M. L. Delcambre,et al.  Change cases: use cases that identify future requirements , 1996, OOPSLA '96.

[60]  Nicholas Carriero,et al.  Applications experience with Linda , 1988, PPEALS '88.

[61]  Alin Deutsch,et al.  A Query Language for XML , 1999, Comput. Networks.

[62]  Rocco De Nicola,et al.  Coordinating Mobile Agents via Blackboards and Access Rights , 1997, COORDINATION.

[63]  Sophia Drossopoulou,et al.  Flexible Models for Dynamic Linking , 2003, ESOP.

[64]  C. M. Sperberg-McQueen,et al.  Extensible Markup Language (XML) , 1997, World Wide Web J..

[65]  Kim Mens,et al.  Supporting software development through declaratively codified programming patterns , 2002, Expert Syst. Appl..

[66]  Luís Lopes 分散環境における耐故障ソフトウェアのためのフレームワーク : Java RMIによる実装 , 1999 .

[67]  Jan Vitek,et al.  A Coordination Model for Agents Based on Secure Spaces , 1999 .

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

[69]  Robert J. Walker,et al.  An initial assessment of aspect-oriented programming , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[70]  Eric Foster-Johnson,et al.  Linux Programming , 1996 .

[71]  John A. McDermid,et al.  Software Engineer's Reference Book , 1993 .

[72]  Michael J. Oudshoorn,et al.  Implementing Asynchronous Remote Method Invocation in Java , 1999 .

[73]  Fred Rivard Evolution du comportement des objets dans les langages a classes reflexifs , 1997 .

[74]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[75]  Daniel G. Bobrow,et al.  CLOS: integrating object-oriented and functional programming , 1991, CACM.

[76]  Manuel Oriol,et al.  Disconnected service architecture for unanticipated run-time evolution of code , 2004, IEE Proc. Softw..

[77]  Patrick Th. Eugster,et al.  On objects and events , 2001, OOPSLA '01.

[78]  Grzegorz Czajkowski,et al.  A resource management interface for the Java™ platform , 2005 .

[79]  Ravi Sethi,et al.  Adding New Code to a Running C++ Program , 1990, C++ Conference.

[80]  Oscar Nierstrasz,et al.  Finding refactorings via change metrics , 2000, OOPSLA '00.

[81]  K Thompson,et al.  UNIX implementation , 1986 .

[82]  Deepak Gupta,et al.  On‐line software version change using state transfer between processes , 1993, Softw. Pract. Exp..

[83]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[84]  Manuel Serrano,et al.  Wide Classes , 1999, ECOOP.

[85]  Tom Mens,et al.  Automating Support for Software Evolution in UML , 2000, Automated Software Engineering.

[86]  Manuel Oriol,et al.  Peer Services: From Description to Invocation , 2002, AP2PC.

[87]  Rosanna Lee,et al.  JNDI API Tutorial and Reference: Building Directory-Enabled Java¿ Applications , 2000 .

[88]  Karl Aberer,et al.  P-Grid: A Self-Organizing Access Structure for P2P Information Systems , 2001, CoopIS.

[89]  Bertrand Meyer,et al.  Eiffel: A language and environment for software engineering , 1988, J. Syst. Softw..

[90]  Jason Hunter Java servlet programming , 1998, Java series.

[91]  Michael Franz Dynamic Linking of Software Components , 1997, Computer.

[92]  Pavel Curtis,et al.  A module system for scheme , 1990, LISP and Functional Programming.

[93]  Xue Li Schema evolution in object-oriented databases , 1997 .

[94]  Roger Sessions COM and DCOM - Microsoft's vision for distributed objects , 1997 .

[95]  Patrick Th. Eugster,et al.  Distributed Asynchronous Collections: Abstractions for Publish/Subscribe Interaction , 2000, ECOOP.

[96]  Awais Rashid Aspect-Oriented Schema Evolution in Object Databases: A Comparative Case Study , 2002 .

[97]  Vinny Cahill,et al.  Supporting Unanticipated Dynamic Adaptation of Application Behaviour , 2002, ECOOP.

[98]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[99]  Jan Vitek,et al.  Incommunicado: efficient communication for isolates , 2002, OOPSLA '02.

[100]  Mikael Lindvall,et al.  The visibility of maintenance in object models: an empirical study , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

[101]  Sanjay R. Radia,et al.  Using interface inheritance to address problems in system software evolution , 1994 .

[102]  Richard Monson-Haefel,et al.  Java message service , 2000 .

[103]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .

[104]  Ole-Johan Dahl,et al.  SIMULA 67 common base language, (Norwegian Computing Center. Publication) , 1968 .

[105]  Benjamin C. Pierce,et al.  XDuce: A Typed XML Processing Language (Preliminary Report) , 2000, WebDB.

[106]  David R. Karger,et al.  Chord: A scalable peer-to-peer lookup service for internet applications , 2001, SIGCOMM '01.

[107]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[108]  Li Gong,et al.  Implementing Protection Domains in the JavaTM Development Kit 1.2 , 1998, NDSS.

[109]  Pascal Fradet,et al.  AOP: towards a generic framework using program transformation and analysis , 2000 .

[110]  Guruduth Banavar,et al.  Gryphon: An Information Flow Based Approach to Message Brokering , 1998, ArXiv.

[111]  Harald Ganzinger,et al.  Smalltalk-80 , 1987, it Inf. Technol..

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

[113]  Giovanni Vigna,et al.  Designing Distributed Applications with Mobile Code Paradigms , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[114]  Steve Vinoski,et al.  CORBA: integrating diverse applications within distributed heterogeneous environments , 1997, IEEE Commun. Mag..

[115]  Malcolm P. Atkinson,et al.  The pervasiveness of evolution in GRUMPS software , 2003, Softw. Pract. Exp..

[116]  Konstantinos Psounis,et al.  Active networks: Applications, security, safety, and architectures , 1999, IEEE Communications Surveys & Tutorials.

[117]  Ivar Jacobson,et al.  Object-oriented development in an industrial environment , 1987, OOPSLA '87.

[118]  Tommy Thorn,et al.  Programming languages for mobile code , 1997 .

[119]  David E. Goldberg,et al.  Genetic Algorithms in Search Optimization and Machine Learning , 1988 .

[120]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[121]  Rocco De Nicola,et al.  Interactive mobile agents in X-KLAIM , 1998, Proceedings Seventh IEEE International Workshop on Enabling Technologies: Infrastucture for Collaborative Enterprises (WET ICE '98) (Cat. No.98TB100253).

[122]  Deepak Gupta,et al.  On Line Software Version Change , 1994 .

[123]  Jacky Akoka,et al.  A framework for database evolution management , 2003 .

[124]  G.J. Minden,et al.  A survey of active network research , 1997, IEEE Communications Magazine.

[125]  Robert H. Halstead,et al.  MULTILISP: a language for concurrent symbolic computation , 1985, TOPL.

[126]  Anne-Marie Kermarrec,et al.  The many faces of publish/subscribe , 2003, CSUR.

[127]  Tom Mens,et al.  Towards a Taxonomy of Software Evolution , 2003 .

[128]  H. M. Sneed,et al.  Inverse transformation of software from code to specification , 1988, Proceedings. Conference on Software Maintenance, 1988..

[129]  Michel Léonard,et al.  From hyperclasses to IS components , 2003, ISPE CE.

[130]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[131]  Henk-Evert Sonder,et al.  Common Language Runtime , 2001 .

[132]  Meir M. Lehman,et al.  Program evolution: processes of software change , 1985 .

[133]  Martin P. Ward Derivation of Data Intensive Algorithms by Formal Transformation: The Schnorr-Waite Graph Marking Algorithm , 1996, IEEE Trans. Software Eng..

[134]  Mark Handley,et al.  A scalable content-addressable network , 2001, SIGCOMM '01.

[135]  Steven R. Waterhouse Jxta search:distributed search for distributed networks , 2001 .

[136]  Chris Hanson,et al.  MIT Scheme Reference Manual , 1991 .

[137]  James W. Cooper,et al.  Java design patterns , 2000 .

[138]  Luca Cardelli,et al.  Modern concurrency abstractions for C# , 2002, TOPL.

[139]  John K. Ousterhout,et al.  The Safe-Tcl Security Model , 1998, USENIX Annual Technical Conference.

[140]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[141]  Karl J. Lieberherr,et al.  Aspect-oriented programming with adaptive methods , 2001, CACM.

[142]  Francisco Curbera,et al.  Using WSDL in a UDDI Registry 1 . 05 UDDI Working Draft Best Practices Document June 25 , 2001 , 2001 .

[143]  Pierre Verbaeten,et al.  A Component Composition Model to Support Unanticipated Customization of Systems , 2002 .

[144]  Manuel Oriol,et al.  Hot-swapping communication models in P2P networks , 2004, 37th Annual Hawaii International Conference on System Sciences, 2004. Proceedings of the.

[145]  Keith L. Clark,et al.  April - Agent PRocess Interaction Language , 1995, ECAI Workshop on Agent Theories, Architectures, and Languages.

[146]  Alan Snyder,et al.  Encapsulation and inheritance in object-oriented programming languages , 1986, OOPLSA '86.

[147]  Gregor Kiczales AspectJ(tm): Aspect-Oriented Programming in Java , 2002, NetObjectDays.

[148]  湯浅 太一,et al.  Common Lisp(パネル討論会) , 1986 .

[149]  Pascal Costanza Dynamic Object Replacement and Implementation-Only Classes , 2001 .

[150]  Luca Cardelli,et al.  Abstractions for Mobile Computation , 1999, Secure Internet Programming.