
quentially, one by one. To reduce the gap between
the currently processed meta-data and the base-level
state, the meta-data are updated between two cycles at
a time. The updates, named meta-feedback, are reified
continuously from the base-level. If no more runtime
events occur, the meta-data are propagated back to the
base-level. Having done so, the behavioral changes
are applied to the base application at runtime.
The remaining paper is organized as follows: Sec-
tion 2 provides a brief overview of the methods and
tools we have adopted in our work; Section 3 de-
scribes the evolutionary life cycle; To exemplify, Sec-
tion 4 applies the proposed life cycle to a robot control
software. Finally, Section 5 concludes.
2 BACKGROUND
2.1 Computational Reflection
Computational reflection (Maes, 1987) is a technique
for inspecting the current structure and behavior of
a software system. When using reflection, the sys-
tem is able to reason about its own behavior and per-
form selected changes at runtime. A reflective system
is divided into two levels, a base-level and a meta-
level. The base-level is the part of the system that
performs processing for the application, for instance
controlling transaction executions. The objects at the
base-level provide meta-interfaces that at the meta-
level gives access to the internal representation of the
system. The services provided by the meta-interfaces,
often referred to as the meta-object protocol (MOP),
allow inspection and modification of system behavior
and structure (Kiczales et al., 1991).
Reflection is a technique that allows a software
system to maintain information about itself (meta-
information) and using this information to change
(adapt) its behavior. This is implemented by a causal
connection between base- (monitored system) and
meta-level (monitoring system).
2.1.1 Architectural Reflection
In (Cazzola et al., 2002; Cazzola et al., 2004) we have
proposed an infrastructure that dynamically adapts
software systems using architectural reflection. The
key idea of architectural reflection is to reuse the
knowledge of the design phase to evolve and vali-
date the structure and behavior of a software system
at runtime. The base-level consists of the running ap-
plication as well as of design information in form of
UML/XMI documents. The meta-level is composed of
an interpreter engine for managing the evolution and
validating consistency processes for runtime changes.
The evolution and validation is based on graph trans-
formation (Cazzola et al., 2004) which takes place
on the reified design information (UML/XMI docu-
ments).
2.2 Software Engineering Models
Software engineering models define how to develop
a software system. There are two schools of thought
in software engineering: first, linear thinking fostered
by the waterfall life cycle (Royce, 1970). The water-
fall life cycle is divided into sequential phases analy-
sis, design, implementation and testing phase, which
evolve the software system sequentially. Second, iter-
ative or evolutionary thinking, fostered by the spiral
life cycle model (Boehm, 1988; Cotton, 1996; Gilb,
1988). It divides the software engineering space into
four quadrants: management planning, formal risk
analysis, engineering, and customer assessment. The
development cycle is divided into n-cycles. Each cy-
cle consists of waterfall phases. The result of each cy-
cle is a prototype, until the final version of the product
is reached. Furthermore, user feedback is considered
at the output of each cycle. Therewith, new additional
features are included into the next cycle.
3 EVOLUTIONARY LIFE CYCLE
FOR DYNAMIC ADAPTATION
The structure of the evolutionary life cycle is based
on the spiral life cycle model. The life cycle is com-
posed of two cycles: the base-cycle and one or more
meta-cycles, as shown in Figure 1. The processes of
the base-cycle execute in sequential flow. At the base-
cycle, the base-engine extracts the design information
in form of UML/XMI documents from the base appli-
cation to constitute the base-data. Adopting the ideas
of the spiral life cycle model, we instantiate multi-
ple meta-cycles, each for one runtime event. These
meta-cycles evolve and validate the behavior (using
the reified design information) in order to react to the
runtime events. The processes of the meta-cycles exe-
cute in an incremental flow. The meta-processes start
by the reification of the base-data to constitute the
meta-data at meta-level. Runtime events trigger the
instantiation of meta-cycles. Each meta-cycle evolves
the meta-data representation of the design informa-
tion using the evolutionary engine. The evolutionary
phase inside a meta-cycle is responsible for building
new meta-data including the runtime changes. Af-
terwards, the validation phase checks the consistency
(consistency checker) of the evolved meta-data ac-
cording to the effects of the runtime events. If a run-
time event occurs during a running meta-cycle, the
event is cached and a new cycle is instantiated after
ICEIS 2005 - INFORMATION SYSTEMS ANALYSIS AND SPECIFICATION
212