Nowadays open-ended distributed systems and mobile computing
systems have come into wide use. When we design software for such
systems, we cannot obtain accurate information of dynamically
changing runtime environments beforehand; e.g., logical/physical
location, hardware configurations (esp. including PC card
devices), software configurations, etc. The changes of runtime
environments have given a strong influence on the execution of the
programs, which we cannot ignore. We give two typical situations
as examples. 1) Although we can use the large & luxurious
application such as Netscape Communicator on desk-top computers
comfortably, we cannot use it small personal digital assistants
(PDAs) well. 2) Applications such as tele-conference systems which
always need to connect with the network do not work well, when the
network connectivity is changed from wired to wireless.
To handle these situations, it is an effective way to change those
applications' behaviors depending on the states of runtime
environments. However it is nearly impossible to develop such
specific applications individually. Moreover we cannot predict the
states beforehand. Thus the software must have the ability which
can adapt itself to the states in runtime. We call the ability
dynamic adaptability. Dynamically
adaptable software can change its own functionalities flexibly to
make full use of the runtime environments' properties such as the
computing power, hardware & software resources, etc.
Since we cannot obtain accurate information of runtime
environments and their states beforehand, there is limitation on
dynamic adaptability that we can give to the software
beforehand. Thus, dynamically adaptable software also must have
the mechanism which can extend itself easily and safely. By using
the mechanism, the users can improve the dynamic adaptability of
the software afterward. We aim the dynamic adaptability which
includes such extensible mechanism.
To realize the dynamically adaptable software, we propose a
software model and its description language. The model of
dynamically adaptable software is based on procedures and
meta-level architecture. It can change procedure invocations
dynamically depending on the states of runtime environments.
The base-level consists of the codes of primary subject domain
(domain codes) and the dynamically changeable procedures
(adaptable procedures). The meta-level also consists of the codes
of dynamic adaptability (adaptation codes) which control adaptable
procedures in the base-level.
We had designed & implemented the language LEAD to construct our model. Then, we are
currently working on the language LEAD++ which is a successor of LEAD with
object oriented concepts similar to CLOS. LEAD and LEAD++ support
adaptable procedures. By using them, we can describe the
dynamically adaptable software easily and systematically.
|