ACM Transactions on Software Engineering and Methodology · 2002 · 318 citations · 43 references
ComputingComputer ScienceCompilersProgramming LanguagesSoftware EngineeringCompiler ConstructionObject-oriented DesignObject-oriented ProgrammingSoftware ArchitectureSoftware DesignSoftware ReuseCollaborative Software DesignCompiler SupportDesign By RefinementMixinsObject-oriented ArchitectureObject-oriented Language DesignProgram RefinementScalability
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.
43
<i>N</i> degrees of separation
Peri Tarr, Harold Ossher, William Harrison et al. · 1999 · 1.2K citations · Full text
Ralph E. Johnson, Brian Foote · Journal of Object-oriented Programming · 1988 · 1.1K citations
Computing, Computer Science, Design +15
The art of the metaobject protocol
Choice Reviews Online · 1992 · 1K citations
Gilad Bracha, William R. Cook · 1990 · 811 citations
Engineering, Systems Engineering, Knowledge Representation +13