next - xowiki - NX Code Evolution (original) (raw)

1. Dynamic Software Evolution

Dynamic software evolution provides a means to change the behavior of a running program on the fly. The research of evolvable systems has already a long history (see e.g. [1]) but they are gaining over the last years more attention. Dynamic code evolution can be used e.g. to "learn" new behavior (adapt to new situation), or to stop erroneous behavior. Dynamic code evolution is particular useful when combined with introspection, i.e. the ability of a programming system to query all its properties (classes, objects, variables, methods) with their current relations. This kind of reading introspection is can be used in reflective systems for a program to obtain information about itself (self-awareness) or to implement persistence and runtime tracing/monitoring. The ability to alter the introspected properties at runtime is sometimes called "write introspection", providing the option for implementing evolution for running software systems. Dynamic Software Evolution leads to evolvable architectures [2].

2. Benefits of Dynamic Software Evolution

3. Dynamic Software Evolution Features supported by NX

3.1. Dynamic State Changes

3.2. Dynamic Behavior Changes

3.3. Dynamic Changes of the Class Structure

3.4. Dynamic Software Composition

3.5. Dynamic Code Injection (reversible)

4. References

[1] Robert S. Fabry. How to Design a System in Which Modules Can Be Changed on the Fly. In Proceedings of the International Conference on Software Engineering, pages 470–476. IEEE Computer Society, 1976.

[2] Rank, Stephen (2002) A reflective architecture to support dynamic software evolution. PhD thesis, University of Durham.

[3] Tim O’Reilly: What is Web 2.0: Design Patterns and Business Models for the Next Generation of Software.

[4] Georg Gottlob, Michael Schrefl, Brigitte Röck: Extending Object-Oriented Systems with Roles. ACM Transactions on Information Systems 14(3): 268-296 (1996).

[5] Ducasse S., Nierstrasz O., Schärli S., Wuyts R. , Black A. P. (2006): Traits: A mechanism for fine-grained reuse. ACM Trans. Program. Lang. Syst. 28(2): 331-388 (2006).

[6] William Harrison and Harold Ossher, Subject-Oriented Programming - A Critique of Pure Objects, Proceedings of 1993 Conference on Object-Oriented Programming Systems, Languages, and Applications, September 1993.