Marcus Denker, Tudor Gîrba, Adrian Lienhard, Oscar Nierstrasz, Lukas Renggli, Pascal Zumkehr. Encapsulating and exploiting change with Changeboxes. In Serge Demeyer, Jean-François Perrot, editors, Proceedings of the 2007 International Conference on Dynamic Languages (ICDL 2007), organised in conjunction with the 15th International Smalltalk Joint Conference 2007, Lugano, Switzerland, 25-31 August 2007. Volume 286 of ACM International Conference Proceeding Series, pages 25-49, ACM, 2007.
Real world software systems change continuously to meet new demands. Most programming languages and development environments, however, are more concerned with limiting the effects of change rather than enabling and exploiting change. Various techniques and technologies to exploit change have been developed over the years, but there exists no common support for these approaches. We propose Changeboxes as a general-purpose mechanism for encapsulating change as a first-class entity in a running software system. Changeboxes support multiple, concurrent and possibly inconsistent views of software artifacts within the same running system. Since Changeboxes are first-class, they can be manipulated to control the scope of change in a running system.Furthermore, Changeboxes capture the semantics of change. Changeboxes can be used, for example, to encapsulate refactorings, or to replay or analyze the history of changes. In this paper we introduce Changeboxes by means of a prototype implementation. We illustrate the benefits that Changeboxes offer for evolving software systems, and we present the results of a preliminary performance evaluation that assesses the costs associated with Changeboxes while suggesting possible strategies for improvement.