Mixin layers: an object-oriented implementation technique for refinements and collaboration-based designs

Y Smaragdakis, D Batory - ACM Transactions on Software Engineering …, 2002 - dl.acm.org
ACM Transactions on Software Engineering and Methodology (TOSEM), 2002dl.acm.org
A" refinement" is a functionality addition to a software project that can affect multiple
dispersed implementation entities (functions, classes, etc.). In this paper, we examine large-
scale refinements in terms of a fundamental object-oriented technique called collaboration-
based design. We explain how collaborations can be expressed in existing programming
languages or can be supported with new language constructs (which we have implemented
as extensions to the Java language). We present a specific expression of large-scale …
A "refinement" is a functionality addition to a software project that can affect multiple dispersed implementation entities (functions, classes, etc.). In this paper, we examine large-scale refinements in terms of a fundamental object-oriented technique called collaboration-based design. We explain how collaborations can be expressed in existing programming languages or can be supported with new language constructs (which we have implemented as extensions to the Java language). We present a specific expression of large-scale refinements called mixin layers, and demonstrate how it overcomes the scalability difficulties that plagued prior work. We also show how we used mixin layers as the primary implementation technique for building an extensible Java compiler, JTS.
ACM Digital Library