Epi-aspects: aspect-oriented conscientious software

Conscientious software is a recently proposed paradigm for developing reliable, self-sustaining software systems. Conscientious software systems consist of an allopoietic part, which encapsulates application functionality, and an autopoietic part that is responsible for keeping the system alive by monitoring the application and adapting it to environmental changes. Practical application of the conscientious software paradigm requires solutions to two open problems: The design of suitable autopoietic programming languages and the proposal of concrete architectures for combining the autopoietic and allopoietic parts. In this paper, we tackle the second challenge, and propose a concrete, aspect-oriented architecture for realizing conscientious software. Here, we introduce epi-aspects, a construct for upgrading new and existing applications into conscientious software. This paper provides the architectural design of epi-aspects, an autopoietic simulator, and a concrete framework for developing epi-aspects in Java. The framework and the simulator are used to conduct a case study in which we develop and test a conscientious Java application.

[1]  Jeffrey O. Kephart,et al.  The Vision of Autonomic Computing , 2003, Computer.

[2]  David Garlan,et al.  Rainbow: architecture-based self-adaptation with reusable infrastructure , 2004 .

[3]  H. Maturana,et al.  Autopoiesis: the organization of living systems, its characterization and a model. , 1974, Currents in modern biology.

[4]  Fabio Kon,et al.  A middleware for experimentation on dynamic adaptation , 2005, ARM '05.

[5]  Barry McMullin Computational Autopoiesis: The Original Algorithm , 1997 .

[6]  Sebastian Fleissner,et al.  A commensalistic software system , 2006, OOPSLA '06.

[7]  Richard P. Gabriel,et al.  Conscientious software , 2006, OOPSLA '06.

[8]  Gordon S. Blair,et al.  Research directions in reflective middleware: the Lancaster experience , 2004, Adaptive and Reflective Middleware.

[9]  Richard Murch,et al.  Autonomic Computing , 2004 .

[10]  Andreas Polze,et al.  Self-adaptive multithreaded applications: a case for dynamic aspect weaving , 2005, ARM '05.

[11]  Grigore Rosu,et al.  MOP: Reliable Software Development using Abstract Aspects , 2006 .

[12]  Noah Treuhaft,et al.  Recovery Oriented Computing (ROC): Motivation, Definition, Techniques, , 2002 .

[13]  Milan Zeleny,et al.  SELF-ORGANIZATION OF LIVING SYSTEMS: A FORMAL MODEL OF AUTOPOIESIS , 1977 .

[14]  Frank Eliassen,et al.  Evolving self-adaptive services using planning-based reflective middleware , 2006, ARM '06.

[15]  Gordon S. Blair,et al.  A distributed architecture meta-model for self-managed middleware , 2006, ARM '06.

[16]  Grigore Rosu,et al.  Java-MOP: A Monitoring Oriented Programming Environment for Java , 2005, TACAS.

[17]  Bernd Freisleben,et al.  Supporting autonomic computing functionality via dynamic operating system kernel aspects , 2005, AOSD '05.

[18]  Grigore Rosu,et al.  Towards Monitoring-Oriented Programming: A Paradigm Combining Specification and Implementation , 2003, RV@CAV.

[19]  Francisco José da Silva e Silva,et al.  Adapta: a framework for dynamic reconfiguration of distributed applications , 2006, ARM '06.

[20]  Barry McMullin,et al.  Rediscovering Computational Autopoiesis , 1997 .

[21]  Ondrej Lhoták,et al.  abc: an extensible AspectJ compiler , 2005, AOSD '05.