This thesis presents work which is concerned with the run-time
evolution of component-based software systems. In particular, the
main result of the research presented here is a framework which is
used to model and control the architecture of a software system. This
framework allows the run-time manipulation of the components which
make up a software system. The framework makes the architecture of
software systems visible, and allows interaction with it, using a
reflective meta-object protocol.
The motivating objectives of this work are providing a framework to
support architectural flexibility, higher-level intervention, safe
changes, and architectural visibility in software systems.
The framework's behaviour and structure was motivated by a set of
case-studies which have been used to guide its development and
enhancement. The framework was developed iteratively, using each
case-study in turn to evaluate its capabilities and to prompt the
direction of development.
A detailed set of evaluation criteria are developed, and the framework
is evaluated with respect to these. The framework was found to meet
each of the four objectives fully, with the exception of the aim to
allow only safe changes which is only partly satisfied. Ways in which
the framework can be improved in order to more fully satisfy its
objectives are suggested, as are other extensions to its behaviour