Architecting Dynamic Systems Using Containment Units. Leon J. Osterweil, Alexander Wise, Jamieson M. Cobleigh, Lori A. Clarke, Barbara Staudt Lerner. In Proceedings of the Working Conference on Complex and Dynamic Systems Architecture, Brisbane, Australia, December 2001.
Abstract:

Software modification can require as much time, human effort, and expense as the original development, so considerable software engineering research has been directed toward identifying ways in which software can be developed to facilitate subsequent change. One highly successful approach is to develop software using modules, or objects, each of which seals within itself decisions or secrets that are key to successfully addressing its requirements. When one of these requirements changes, it should be expected that the need to meet this changed requirement is to be satisfied by making appropriate changes to the module intended to satisfy that requirement. These changes are usually done manually and off-line. In our work we are exploring an approach where software systems make changes to themselves while executing. Our approach is based on Containment Units, which are modules able to self-diagnose the need for changes based on their operational characteristics and then to make a limited set of changes aimed at meeting these needs.

Read the paper: