  One of the main factors driving object-oriented software development in the
Web- age is the need for systems to evolve as user requirements change. A
crucial factor in the creation of adaptable systems dealing with changing
requirements is the suitability of the underlying technology in allowing the
evolution of the system. A reflective system utilizes an open architecture
where implicit system aspects are reified to become explicit first-class
(meta-data) objects. These implicit system aspects are often fundamental
structures which are inaccessible and immutable, and their reification as
meta-data objects can serve as the basis for changes and extensions to the
system, making it self- describing. To address the evolvability issue, this
paper proposes a reflective architecture based on two orthogonal abstractions -
model abstraction and information abstraction. In this architecture the
modeling abstractions allow for the separation of the description meta-data
from the system aspects they represent so that they can be managed and
versioned independently, asynchronously and explicitly. A practical example of
this philosophy, the CRISTAL project, is used to demonstrate the use of
meta-data objects to handle system evolution.
