Designing Object Systems for Evolution
Modern software systems have to be prepared not just for anticipated but for unanticipated evolution as well. A perfectly prepared system exhibits a structure that reflects the anticipated subjects of change and flexibly bridges collaboration mismatch resulting from unanticipated changes. In this paper, we discuss how this can be accomplished.
First, we give an overview of several approaches to the evolution of object systems and discuss their potential to make a system better prepared for anticipated evolution. Then, we place our emphasis on unanticipated evolution where we find the flexibility of object coupling to be a crucial system property. We present the major concerns of object coupling and a set of flexible, design-oriented object coupling mechanisms. Each one of these mechanisms exhibits considerable flexibility regarding at least one of the concerns of object coupling. Flexible object coupling mechanisms raise the issue of run-time failures. Thus, these mechanisms should not be used extensively throughout the entire system, but only where they can be most effective. We introduce Design for Slippage, a small conceptual framework providing decision support for the application of flexible object coupling mechanisms
[Mat97a] Mätzel K.-U. and Bischofberger W.. Designing Object Systems for Evolution. In Theory and Practice of Object Systems, Vol.3, issue 4, Wiley, 1997.