In order to make hot plugging possible, we
should make CMs know at runtime the host tier pools
that keep or must keep references to the tier instance
that is about to be added, replaced, or deleted. A
possible solution is to make existing tier instances
know all the referencing host tier pools. For new tier
instances this information should be derived by CGs
from the ASSL specification while generating code
for the same. The following is the hot plugging
algorithm for replacing an old tier instance with a
new one. Algorithms for hot plugging in adding or
deleting tier instances can be deducted from this one.
1) A CG generates the code for a new tier
class with all necessary supplementary classes that
must replace an old tier instance.
2) That CG compiles the generated code by
using a javac Java compiler.
3) The same CG notifies its paired CM that a
specific tier instance is going to be replaced.
4) A CM (paired with the CG) loads the
generated tier classes into the currently running Java
VM running the AS and creates all the needed objects
to create the replacement tier instance.
5) That CM puts the AS on hold; i.e., makes
the latter transit to a ―pause‖ state.
6) The same CM asks the tier instance to be
replaced for the referee host tier pools keeping a
reference to it.
7) The same CM asks each referee host tier
pool to replace the old reference with the one of the
new tier instance.
8) The same CM deletes the old tier instance
through the Java VM garbage collector.
9) The same CM restarts the AS; i.e., makes
the latter transits to a ―running‖ state.
Both runtime code generation and hot plugging of
tier instances will introduce certain overhead to the
overall performance of an AS. Here, the problem is
the tradeoff between the AC objectives (SLO and
self-managing policies) that an AS must constantly
follow and the need of restructuring to better follow
these objectives. We are planning benchmark
analysis to better understand the overall impact.
5 CONCLUSIONS
This paper presents our approach to the realization
of a self-modifiable architecture, for ASs specified
and generated with ASSL. The latter supports
specification of special ASSL actions allowing for
AS evolution at runtime. Via a finite set of special
ASSL statements - CHANGE, REMOVE, ADD and
CREATE, such ASSL actions can prompt changes in
the tiers and sub-tiers of an ASSL-specified AS.
However, ASSL currently does not support these
statements at the level of code generation, and thus,
the ASs are generated without the ability to modify
their structure at runtime. Moreover, ASSL-specified
AEs can exchange ASSL messages in the form of
ASSL tiers, which can be used to modify the
runtime structure of an AS.
To allow for runtime modifications in the
structure of an AS, we propose to add a special
runtime code generation mechanism and a special
code management mechanism to the architecture of
the ASSL-generated ASs. These mechanisms allow
for runtime code generation of ASSL specifications
and hot plugging of the generated code. The
structure granularity of the ASs and key features of
the generated code help to ensure that the difficult
task of hot plugging is straightforwardly achieved.
Future work is primarily concerned with further
development of the proposed mechanisms and
evaluation of the degree of complexity and
computational overhead these mechanisms bring to
the entire system.
It is our belief that allowing ASSL-generated
ASs to evolve in structure at runtime will enable
broad scale development of autonomic systems.
REFERENCES
Brogi, A., Canal, C., and Pimentel, E., 2006. On the
semantics of software adaptation. In Science of
Computer Programming, vol. 61(2). Elsevier.
Garlan, D., Cheng, S., Huang, A., Schmerl, B., Steenkiste,
P., 2004. Rainbow: Architecture-Based Self-
Adaptation with Reusable Infrastructure. In IEEE
Computer. IEEE Computer Society Press.
Kitano, H., 1990. Designing Neural Networks Using
Genetic Algorithms with Graph Generation System. In
Complex Systems, vol. 4(4).
McKinley, P. K., Sadjadi, S. M., Kasten E. P., Cheng, B.
H. C., 2004. Composing Adaptive Software. In IEEE
Computer, vol. 37 (7). IEEE Computer Society Press.
Murch, R., 2004. Autonomic Computing: On Demand
Series. IBM Press, Prentice Hall.
Oreizy P., Gorlick, M. M., Taylor, R. N., Heimbigner, D.,
Johnson, G., Medvidovic, N., Quilici, A., Rosenblum,
D. S., Wolf, A. L., 1999. An Architecture-Based
Approach to Self-Adaptive Software. In IEEE
Intelligent Systems. IEEE Computer Society Press.
Truszkowski, W., Hinchey, M., Rash, J., Rouff, C., 2004.
NASA's Swarm Missions: The Challenge of Building
Autonomous Software. In IT Professional, vol. 6(5).
IEEE Computer Society Press.
Vassev, E., 2008. Towards a Framework for Specification
and Code Generation of Autonomic Systems, PhD
Thesis. Department of Computer Science and Software
Engineering, Concordia University, Montreal, Canada.
ICSOFT 2009 - 4th International Conference on Software and Data Technologies
168