[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/2328909.2328935acmotherconferencesArticle/Chapter ViewAbstractPublication PageseuroplopConference Proceedingsconference-collections
research-article

Inversion-of-control layer

Published: 07 July 2010 Publication History

Abstract

Inversion of control is a common design practise that has been used in various application areas. It gained popularity in the context of object-oriented application frameworks and designs based on abstract classes and interfaces. Recently, dependency injection techniques, especially in the context of lightweight containers such as Spring, have raised the attention for inversion of control again. However, inversion of control has not yet been described in its architectural dimension with a focus on layering architectures, and the pros and cons of the design decision for control inversion. In this paper, we present the inversion-of-control layer pattern which describes the design practise from an architectural point of view, rather than focusing on particular implementation techniques.

References

[1]
Abi-Antoun, M. 2007. Making Frameworks Work: A Project Retrospective. In Companion to the 22nd Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2007). 1004--1018.
[2]
Avgeriou, P. and Zdun, U. 2005. Architectural Patterns Revisited -- A Pattern Language. In Proceedings of 10th European Conference on Pattern Languages of Programs (EuroPlop 2005). Irsee, Germany, 1--39.
[3]
Birtwisthle, G. M., Dahl, O.-J., Myhrhaug, B., and Nygaard, K. 1975. Simula Begin. Studentlitteratur. Petrocelli/Charter, New York, NY, USA.
[4]
Bosch, J. 2000. Design and Use of Software Architectures: Adopting and evolving a product-line approach. ACM Press/Addison-Wesley Publishing Co., New York, NY, USA.
[5]
Buschmann, F. and Henney, K. 2003. Explicit Interface. In Proceedings of EuroPLoP 2003. Irsee, Germany.
[6]
Buschmann, F., Henney, K., and Schmidt, D. C. 2007. Pattern-Oriented Software Architecture -- On Patterns and Pattern Languages. Wiley Series on Software Design Patterns. John Wiley & Sons Ltd., Chichester, England.
[7]
Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., and Stal, M., Eds. 2000. Pattern-Oriented Software Architecture -- A System of Patterns. John Wiley & Sons Ltd., Chichester, England.
[8]
Coplien, J. O. and Schmidt, D. C., Eds. 1995. Pattern Languages of Program Design 1st Ed. Addison-Wesley, Reading, MA, USA.
[9]
Fowler, M. 2003. Refactoring -- Improving the Design of Existing Code. The Addison-Wesley object technology series. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA.
[10]
Fowler, M. 2004. Inversion of Control Containers and the Dependency Injection pattern. http://martinfowler.com/articles/injection.html; last updated: January 23, 2004; last accessed: February 15, 2010.
[11]
Fowler, M. 2005. Inversion of Control. In: Martin Fowler's Bliki. Updated June 26, 2005. Retrieved February 15, 2010, from http://martinfowler.com/bliki/InversionOfControl.html.
[12]
Gamma, E., Helm, R., Johnson, R. E., and Vlissides, J. 1994. Design Patterns -- Elements of Reusable Object-Oriented Software. Addison Wesley Professional Computing Series. Addison Wesley.
[13]
Henney, K. 1999. Coping with Copying in C++. Overload 33.
[14]
Henney, K. 2000. C++ Patterns Source Cohesion and Decoupling. Overload 39.
[15]
Henney, K. 2005. Context Encapsulation -- Three Stories, a Language, and Some Sequences. In Proceedings of EuroPLoP 2005. Irsee, Germany.
[16]
Henney, K. 2007a. The PfA Papers: Context Matters. Overload 82.
[17]
Henney, K. 2007b. The PfA Papers: From the Top. Overload 80.
[18]
Henney, K. 2007c. The PfA Papers: The Clean Dozen. Overload 81.
[19]
Johnson, R. 2002. Expert One-on-One J2EE Design and Development 1st Ed. John Wiley & Sons, Inc.
[20]
Johnson, R. E. and Foote, B. 1988. Designing Reusable Classes. Journal of Object-Oriented Programming 1, 2, 22--35.
[21]
Johnson, R. E. and Russo, V. F. 1991. Reusing Object-Oriented Design. Tech. Rep. UIUCDCS 91-1696, Department of Computer Science, University of Illinois, Urbana, IL, USA. May.
[22]
Madsen, O. L., Møller-Pedersen, B., and Nygaard, K. 1993. Object-Oriented Programming in the BETA Programming Language. Addison-Wesley.
[23]
Martin, R. C. 1996. The Dependency Inversion Principle. C++ Report 8, 6, 61--66.
[24]
Mattsson, M. 2000. Evolution and Composition of Object-Oriented Frameworks. Phd thesis, Department of Sotware Engineering and Computer Science, University of Karlskrona/Ronneby, Ronneby, Sweden.
[25]
Pree, W. 1996. Framework Patterns. SIGS Books & Multimedia.
[26]
Radford, R. 2004. C++ Interface Classes -- An Introduction. Overload 62.
[27]
Radford, R. 2005. C++ Interface Classes -- Noise Reduction. Overload 68.
[28]
Radford, R. 2006. C++ Interface Classes -- Strengthening Encapsulation. Overload 76.
[29]
Simons, A. J. H. 1995. A Language with Class: The Theory of Classification Exemplified in an Object-Oriented Programming Language. Phd thesis, Department of Computer Science, University of Sheffield.
[30]
Simons, A. J. H. 2004. The Theory of Classification Part 12: Building the Class Hierarchy. Journal of Object Technology 3, 5, 13--24.
[31]
Spring Community. 2010. Spring Framework 3.0.2. http://www.springsource.org/, last accessed: April 7.
[32]
Sweet, R. E. 1985. The Mesa Programming Environment. In Proceedings of the ACM SIGPLAN Symposium on Language Issues in Programming Environments, Seattle, Washington, United States. ACM, New York, NY USA, 216--229.
[33]
Vlissides, J. 1996. Protection, Part I: The Hollywood Principle. C++ Report 8.
[34]
Woolf, B. 1995. Abstract Class. See Coplien and Schmidt {1995}.

Cited By

View all
  • (2024)DIKWP-TRIZ: A Revolution on Traditional TRIZ Towards Invention for Artificial ConsciousnessApplied Sciences10.3390/app14231086514:23(10865)Online publication date: 23-Nov-2024
  • (2023)Examining the Influence of Dependency Injection on Software Maintainability2023 IEEE/ACIS 8th International Conference on Big Data, Cloud Computing, and Data Science (BCD)10.1109/BCD57833.2023.10466290(250-255)Online publication date: 14-Dec-2023
  • (2022)Selenium-Jupiter: A JUnit 5 extension for Selenium WebDriverJournal of Systems and Software10.1016/j.jss.2022.111298189(111298)Online publication date: Jul-2022
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Other conferences
EuroPLoP '10: Proceedings of the 15th European Conference on Pattern Languages of Programs
July 2010
329 pages
ISBN:9781450302593
DOI:10.1145/2328909
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 07 July 2010

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. application framework
  2. architectural patterns
  3. inversion of control
  4. layers

Qualifiers

  • Research-article

Funding Sources

Conference

EuroPLoP '10

Acceptance Rates

EuroPLoP '10 Paper Acceptance Rate 25 of 39 submissions, 64%;
Overall Acceptance Rate 216 of 354 submissions, 61%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)29
  • Downloads (Last 6 weeks)4
Reflects downloads up to 09 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)DIKWP-TRIZ: A Revolution on Traditional TRIZ Towards Invention for Artificial ConsciousnessApplied Sciences10.3390/app14231086514:23(10865)Online publication date: 23-Nov-2024
  • (2023)Examining the Influence of Dependency Injection on Software Maintainability2023 IEEE/ACIS 8th International Conference on Big Data, Cloud Computing, and Data Science (BCD)10.1109/BCD57833.2023.10466290(250-255)Online publication date: 14-Dec-2023
  • (2022)Selenium-Jupiter: A JUnit 5 extension for Selenium WebDriverJournal of Systems and Software10.1016/j.jss.2022.111298189(111298)Online publication date: Jul-2022
  • (2022)Object Parsing Expressions for Unplanned, Unmodified, and Incremental Grammar ReuseSoftware Technologies10.1007/978-3-031-11513-4_2(24-40)Online publication date: 18-Jul-2022
  • (2021)Applying Model-Driven Engineering to Stimulate the Adoption of DevOps Processes in Small and Medium-Sized Development OrganizationsSN Computer Science10.1007/s42979-021-00825-z2:6Online publication date: 16-Sep-2021
  • (2020)Design of an Enterprise Level Architecture Based on MicroservicesKurumsal Ölçekte Mikroservis Tabanlı Bir Mimarinin TasarlanmasıBilişim Teknolojileri Dergisi10.17671/gazibtd.55839213:4(357-371)Online publication date: 30-Oct-2020
  • (2020)Flexible and Lightweight Framework for Active Industrial Asset Administration Shells2020 IEEE Conference on Industrial Cyberphysical Systems (ICPS)10.1109/ICPS48405.2020.9274761(549-554)Online publication date: 10-Jun-2020
  • (2020)Variable Textual SyntaxesVariable Domain-specific Software Languages with DjDSL10.1007/978-3-030-42152-6_5(167-260)Online publication date: 10-Jul-2020
  • (2020)Variable Context ConditionsVariable Domain-specific Software Languages with DjDSL10.1007/978-3-030-42152-6_4(137-166)Online publication date: 10-Jul-2020
  • (2016)Contract-Based Mocking for Services-Oriented DevelopmentProceedings of the Annual Conference of the South African Institute of Computer Scientists and Information Technologists10.1145/2987491.2987534(1-8)Online publication date: 26-Sep-2016
  • Show More Cited By

View Options

Login options

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