Dynamic system reconfiguration techniques are presented that can enable the systematic evolution of software systems due to unanticipated changes in specification or requirements. The methodological approach is based upon a domain analysis, which identifies a set of concepts that reflect the types of reconfigurations possible and the system integrity characteristics that must be maintained during such reconfigurations, a domain design, which is expressed using the Unified Modeling Language (UML) as a constraint-driven representation of the domain analysis, and a domain implementation, which uses a programming environment that supports explicit metaclass programming to realize an executable model of the analysis and design. It was learned that explicit metaclass programming can effectively be used to encode the constrained model, as a static representation, at the metalevel. With respect to dynamic reconfiguration, it was learned that a base-level object could be an instance of a proper...