[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
article

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

Published: 01 April 2002 Publication History

Abstract

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.

References

[1]
AGESEN, O., FREUND, S. N., AND MITCHELL, J. C. 1997. Adding type parameterization to the java language. In Conference Proceedings of OOPSLA '97, Atlanta. ACM SIGPLAN Notices 32, 10. ACM, 49-65.
[2]
BATORY, D., CARDONE, R., AND SMARAGDAKIS, Y. 2000a. Object-oriented frameworks and product lines. In Proceedings of the First Software Product Line Conference, P. Donohoe, Ed. 227-247.
[3]
BATORY, D. AND GERACI, B. 1997. Composition validation and subjectivity in GenVoca generators. IEEE Trans. Softw. Eng. 23, 2 (Feb.), 67-82.
[4]
BATORY, D., JOHNSON, C., MACDONALD, B., AND VON HEEDER, D. 2000b. Achieving extensibility through product-lines and domain-specific languages: A case study. In Proceedings of the Sixth International Conference on Software Reuse, W. B. Frakes, Ed. 117-136.
[5]
BATORY, D., LOFASO, B., AND SMARAGDAKIS, Y. 1998. JTS: Tools for implementing domain-specific languages. In Proceedings: Fifth International Conference on Software Reuse, P. Devanbu and J. Poulin, Eds. IEEE Computer Society Press, 143-153.
[6]
BATORY, D. AND O'MALLEY, S. 1992. The design and implementation of hierarchical software systems with reusable components. ACM Trans. Softw. Eng. Methodol. 1, 4 (Oct.), 355-398.
[7]
BATORY, D., SINGHAL, V., SIRKIN, M., AND THOMAS, J. 1993. Scalable Software Libraries. In Proceedings of the ACM SIGSOFT '93 Symposium on the Foundations of Software Engineering. 191- 199.
[8]
BATORY, D. S. 1987. Concepts for a database system synthesizer. In Symposium on Principles of Database Systems (PODS '88). ACM Press, New York, 184-192.
[9]
BATORY, D. S., BARNETT, J. R., GARZA, J. F., SMITH, K. P., TSUKUDA, K., TWICHELL,B.C.,AND WISE,T.E. 1988. GENESIS: An extensible database management system. Software Engineering 14, 11, 1711-1730.
[10]
BIGGERSTAFF, T. J. 1994. The library scaling problem and the limits of concrete component reuse. In Proceedings: 3rd International Conference on Software Reuse, W. Frakes, Ed. IEEE Computer Society Press, 102-109.
[11]
BRACHA, G. AND COOK, W. 1990. Mixin-based inheritance. In OOPSLA/ECOOP '90 Proceedings, N. Meyrowitz, Ed. ACM SIGPLAN, 303-311.
[12]
BRACHA, G. AND GRISWOLD, D. 1996. Extending smalltalk with mixins. Workshop on Extending Smalltalk at OOPSLA 1996. See http://java.sun.com/people/gbracha/mwp.html.
[13]
BRACHA, G., ODERSKY, M., STOUTAMIRE, D., AND WADLER, P. 1998. Making the future safe for the past: Adding genericity to the Java programming language. In ACM Symposium on Object Oriented Programming: Systems, Languages, and Applications (OOPSLA), C. Chambers, Ed. ACM SIGPLAN Notices 33, 10. Vancouver, BC, 183-200.
[14]
CARDELLI, L. AND WEGNER, P. 1985. On understanding types, data abstraction, and polymorphism. ACM Comput. Surv. 17, 4 (Dec.), 471-522.
[15]
CHIBA, S. 1996. Open C++ programmer's guide for version 2. Tech. Rep. SPL-96-024, Xerox PARC.
[16]
COGLIANESE, L. AND SZYMANSKI, R. 1993. DSSA-ADAGE: An environment for architecture-based avionics development. Proceedings of the NATO AGARD Conference.
[17]
CUNNINGHAM, W. AND BECK, K. 1989. Constructing Abstractions for Object-Oriented Applications. J. Obj. Orient. Program., July 1989.
[18]
FINDLER, R. B. AND FLATT, M. 1998. Modular object-oriented programming with units and mixins. In International Conference on Functional Programming (ICFP '98). 94-104.
[19]
FLATT, M., KRISHNAMURTHI, S., AND FELLEISEN, M. 1998. Classes and mixins. In Conference Record of POPL 98: The 25TH ACMSIGPLAN-SIGACT Symposium on Principles of Programming Languages, San Diego, California. ACM, New York, NY, 171-183.
[20]
FORMAN, I. R., DANFORTH, S., AND MADDURI, H. 1994. Composition of before/after metaclasses in SOM. In Proceedings of OOPSLA '94. ACM Sigplan Notices, vol. 29. Portland, 427-439.
[21]
GAMMA, E., HELM, R., JOHNSON, R., AND VLISSIDES, J. 1995. Design Patterns. Addison Wesley, Reading, MA.
[22]
HABERMANN, A. N., FLON, L., AND COOPRIDER, L. W. 1976. Modularization and hierarchy in a family of operating systems. Commun. ACM 19, 5 (May), 266-272.
[23]
HARRISON, W. AND OSSHER, H. 1993. Subject-oriented programming (A critique of pure objects). In Proceedings of the OOPSLA '93 Conference on Object-oriented Programming Systems, Languages and Applications. ACM Press, Los Alamitos, CA, USA, 411-28.
[24]
HEIDEMANN, J. S. AND POPEK, G. J. 1994. File-system development with stackable layers. ACM Trans. Comput. Syst. 12, 1 (Feb.), 58-89.
[25]
HELM, R., HOLLAND, I. M., AND GANGOPADHYAY, D. 1990. Contracts: Specifying Behavioral Compositions in Object-Oriented Systems. In Proceedings of the OOPSLA/ECOOP '90 Conference on Object-oriented Programming Systems, Languages and Applications, 169-180. Published as ACM SIGPLAN Notices, volume 25, number 10.
[26]
HOLLAND, I. M. 1992. Specifying Reusable Components Using Contracts. In Proceedings of the ECOOP '92 European Conference on Object-oriented Programming, O. L. Madsen, Ed. LNCS 615. Springer-Verlag, Utrecht, The Netherlands, 287-308.
[27]
International Organization for Standardization 1995. Ada 95 Reference Manual. The Language. The Standard Libraries. International Organization for Standardization. ANSI/ISO/IEC- 8652:1995.
[28]
JOHNSON, R. E. AND FOOTE, B. 1988. Designing reusable classes. J. Obj. Orient. Program. 1,2, 22-35.
[29]
KELLER, R. AND HOLZLE, U. 1998. Binary component adaptation. In ECOOP '98-Object-Oriented Programming, E. Jul, Ed. Lecture Notes in Computer Science, vol. 1445. Springer, 307- 329.
[30]
KICZALES, G., DES RIVIERES, J., AND BOBROW, D. G. 1991. The Art of the Meta-Object Protocol. MIT Press, Cambridge, MA, USA.
[31]
KICZALES, G., LAMPING, J., MENDHEKAR, A., MAEDA, C., LOPES, C., LOINGTIER, J.-M., AND IRWIN, J. 1997. Aspect-oriented programming. In ECOOP '97-Object-Oriented Programming,M. Aksit and S. Matsuoka, Eds. Lecture Notes in Computer Science, vol. 1241. Springer, 220- 242.
[32]
LIEBERHERR, K. AND PATT-SHAMIR, B. 1997. Traversals of object structures: Specification and efficient implementation. Tech. Rep. NU-CCS-97-15, College of Computer Science, Northeastern University.
[33]
LIEBERHERR, K. J. 1996. Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns. PWS Publishing Company.
[34]
MADSEN, O. L. AND MoLLER-PEDERSEN, B. 1989. Virtual classes: A powerful mechanism in objectoriented programming. In OOPSLA '89 Conference Proceedings: Object-Oriented Programming: Systems, Languages, and Applications, N. Meyrowitz, Ed. ACM Press, 397-406.
[35]
MEZINI, M. 1997. Dynamic object evolution without name collisions. In ECOOP'97-Object- Oriented Programming, M. Aksit and S. Matsuoka, Eds. Lecture Notes in Computer Science, vol. 1241. Springer, 190-219.
[36]
MEZINI, M. AND LIEBERHERR, K. 1998. Adaptive plug-and-play components for evolutionary software development. In Proceedings of the 13th Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA-98). ACM SIGPLAN Notices, vol. 33, 10. ACM Press, New York, 97-116.
[37]
MILNER, R., TOFTE, M., AND HARPER, R. W. 1990. The Definition of Standard ML. MIT Press, Cambridge, Massachusetts.
[38]
MONTLICK, T. 1996. Implementing mixins in smalltalk. The Smalltalk Report (July).
[39]
MOON, D. A. 1986. Object-oriented programming with flavors. In OOPSLA '86 Conference Proceedings: Object-Oriented Programming: Systems, Languages, and Applications, N. Meyrowitz, Ed. ACM SIGPLAN, ACM Press, 1-8.
[40]
MYERS, A. C., BANK, J. A., AND LISKOV, B. 1997. Parameterized types for Java. In Conference Record of POPL '97: The 24TH ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM SIGACT and SIGPLAN, ACM Press, 132-145.
[41]
ODERSKY, M. AND WADLER, P. 1997. Pizza into Java: Translating theory into practice. In Conference Record of POPL'97: The 24th ACMSIGPLAN-SIGACTSymposium on Principles of Programming Languages. Paris, France, 146-159.
[42]
O'MALLEY, S. W. AND PETERSON, L. L. 1992. A dynamic network architecture. ACMTrans. Comput. Syst. 10, 2 (May), 110-143.
[43]
OSSHER, H. AND HARRISON, W. 1992. Combination of Inheritance Hierarchies. In Proceedings of the OOPSLA '92 Conference on Object-oriented Programming Systems, Languages and Applications. 25-40. Published as ACM SIGPLAN Notices, volume 27, number 10.
[44]
OSSHER, H., KAPLAN, M., HARRISON, W., KATZ, A., AND KRUSKAL, V. 1995. Subject-oriented composition rules. In OOPSLA '95 Conference Proceedings: Object-Oriented Programming Systems, Languages, and Applications. ACM Press, 235-250.
[45]
PARNAS, D. L. 1979. Designing software for ease of extension and contraction. IEEE Trans. Softw. Eng. SE-5, 2 (Mar.), 128-138.
[46]
Reasoning Systems 1990. Dialect User's Guide. Reasoning Systems.
[47]
REENSKAUG, T., ANDERSON, E., BERRE, A., HURLEN, A., LANDMARK, A., LEHNE, O., NORD-HAGEN, E., NESS-ULSETH, E., OFTEDAL, G., SKAAR, A., AND STENSLET, P. 1992. OORASS: Seamless support for the creation and maintenance of object-oriented systems. Journal of Object-Oriented Programming 5, 6 (Oct.), 27-41.
[48]
RUMBAUGH, J. 1994. Getting started: Using use cases to capture requirements. J. Obj. Orient. Program. 7, 5 (Sept.), 8-23.
[49]
SMARAGDAKIS, Y. 1999. Implementing large-scale object-oriented components. Ph.D. dissertation, University of Texas at Austin.
[50]
SMARAGDAKIS, Y. AND BATORY, D. 1998. Implementing layered designs with mixin layers. In Proceedings ECOOP'98, E. Jul, Ed. LNCS 1445. Brussels, Belgium, 550-570.
[51]
SMARAGDAKIS, Y. AND BATORY, D. 2000. Mixin-based programming in C CC .InGCSE'00. Generative and Component-Based Software Engineering Symposium. Lecture Notes in Computer Science, vol. 2177. Springer, 163-177.
[52]
STEYAERT, P., CODENIE, W., D'HONDT, T., HONDT, K. D., LUCAS,C.,AND LIMBERGHEN, M. V. 1993. Nested Mixin-Methods in Agora. In Proceedings of the ECOOP '93 European Conference on Objectoriented Programming, O. Nierstrasz, Ed. LNCS 707. Springer-Verlag, Kaiserslautern, Germany, 197-219.
[53]
STROUSTRUP, B. 1997. The C CC Programming Language, 3 ed. Addison-Wesley, Reading, Mass.
[54]
Sun Microsystems 1997. Java Inner Classes Specification. Sun Microsystems. In http://java. sun.com/products/jdk/1.1/docs/.
[55]
TARR, P., OSSHER, H., HARRISON, W., AND SUTTON, JR, S. M. 1999. N Degrees of Separation: Multidimensional Separation of Concerns. In Proceedings of ICSE'99. Los Angeles CA, USA, 107- 119.
[56]
THORUP, K. K. 1997. Genericity in Java with virtual types. In ECOOP'97-Object-Oriented Programming, M.Aksit and S. Matsuoka, Eds. Lecture Notes in Computer Science, vol. 1241. Springer, 444-471.
[57]
VANHILST, M. 1997. Role-oriented programming for software evolution. Ph.D. dissertation, University of Washington, Seattle, Washington.
[58]
VANHILST, M. AND NOTKIN, D. 1996a. Decoupling change from design. In SIGSOFT'96: Proceedings of the Fourth ACM SIGSOFT Symposium on the Foundations of Software Engineering, D. Garlan, Ed. ACM Press, 58-69.
[59]
VANHILST, M. AND NOTKIN, D. 1996b. Using C++ Templates to Implement Role-Based Designs. In JSSST International Symposium on Object Technologies for Advanced Software. Springer Verlag, 22-37.
[60]
VANHILST, M. AND NOTKIN, D. 1996c. Using role components to implement collaborationbased designs. In OOPSLA '96 Conference Proceedings: Object-Oriented Programming Systems, Languages, and Applications. ACM Press, 359-369.
[61]
VILLARREAL, E. 1994. Automated compiler generation for extensible data languages. Ph.D. dissertation, University of Texas at Austin.
[62]
WEIHE, K. 1997. A software engineering perspective on algorithmics. In http://www. informatik.uni-konstanz.de/Preprints/.
[63]
WEISE, D. AND CREW, R. 1993. Programmable syntax macros. In Proceedings of the SIGPLAN '93 Conference on Programming Language Design and Implementation. 156-165.
[64]
WEISS, D. M. 1990. Synthesis operational scenarios. Tech. Rep. 90038-N, Version 1.00.01, Software Productivity Consortium, Herndon, Virginia.
[65]
WILE, D. 1993. Popart: Producer of parsers and related tools. Tech. rep., USC/Information Sciences Institute.
[66]
WIRTH, N. 1977. What can we do about the unnecessary diversity of notation for syntactic definitions? Commun. ACM 20, 11 (Nov.), 822-823.

Cited By

View all
  • (2024)On the Expressive Power of Languages for Static VariabilityProceedings of the ACM on Programming Languages10.1145/36897478:OOPSLA2(1018-1050)Online publication date: 8-Oct-2024
  • (2023)Towards Virtual Machine Support for Contextual Role-Oriented Programming LanguagesProceedings of the 15th ACM International Workshop on Context-Oriented Programming and Advanced Modularity10.1145/3605154.3605851(1-8)Online publication date: 17-Jul-2023
  • (2022)Software Development for Educational Information Services Using Multilayering Semantics AdaptationInternational Journal of Service Science, Management, Engineering, and Technology10.4018/IJSSMET.30715313:1(1-27)Online publication date: 16-Sep-2022
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Transactions on Software Engineering and Methodology
ACM Transactions on Software Engineering and Methodology  Volume 11, Issue 2
April 2002
142 pages
ISSN:1049-331X
EISSN:1557-7392
DOI:10.1145/505145
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 April 2002
Published in TOSEM Volume 11, Issue 2

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Collaboration-based design
  2. component-based software
  3. product-line architectures

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)36
  • Downloads (Last 6 weeks)8
Reflects downloads up to 01 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)On the Expressive Power of Languages for Static VariabilityProceedings of the ACM on Programming Languages10.1145/36897478:OOPSLA2(1018-1050)Online publication date: 8-Oct-2024
  • (2023)Towards Virtual Machine Support for Contextual Role-Oriented Programming LanguagesProceedings of the 15th ACM International Workshop on Context-Oriented Programming and Advanced Modularity10.1145/3605154.3605851(1-8)Online publication date: 17-Jul-2023
  • (2022)Software Development for Educational Information Services Using Multilayering Semantics AdaptationInternational Journal of Service Science, Management, Engineering, and Technology10.4018/IJSSMET.30715313:1(1-27)Online publication date: 16-Sep-2022
  • (2022)Guard the Cache: Dispatch Optimization in a Contextual Role-oriented LanguageProceedings of the 14th ACM International Workshop on Context-Oriented Programming and Advanced Modularity10.1145/3570353.3570357(27-34)Online publication date: 7-Jun-2022
  • (2022)Verification Strategies for Feature-Oriented Software Product LinesProceedings of the 16th International Working Conference on Variability Modelling of Software-Intensive Systems10.1145/3510466.3511272(1-9)Online publication date: 23-Feb-2022
  • (2022)Programming language implementations for context-oriented self-adaptive systemsInformation and Software Technology10.1016/j.infsof.2021.106789143:COnline publication date: 1-Mar-2022
  • (2020)Variable Language ModelsVariable Domain-specific Software Languages with DjDSL10.1007/978-3-030-42152-6_3(73-136)Online publication date: 10-Jul-2020
  • (2019)Feature-oriented contract compositionJournal of Systems and Software10.1016/j.jss.2019.01.044152:C(83-107)Online publication date: 1-Jun-2019
  • (2018)Context-Oriented Algorithmic DesignProceedings of the 11th European Lisp Symposium on European Lisp Symposium10.5555/3323215.3323228(84-91)Online publication date: 18-Apr-2018
  • (2018)Efficient Reusable CollectionsIEICE Transactions on Information and Systems10.1587/transinf.2018EDP7105E101.D:11(2710-2719)Online publication date: 1-Nov-2018
  • Show More Cited By

View Options

Login options

Full Access

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media