skip to main content
10.5555/776816.776917acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
Article

Patterns, frameworks, and middleware: their synergistic relationships

Published:03 May 2003Publication History

ABSTRACT

The knowledge required to develop complex software has historically existed in programming folklore, the heads of experienced developers, or buried deep in the code. These locations are not ideal since the effort required to capture and evolve this knowledge is expensive, time-consuming, and error-prone. Many popular software modeling methods and tools address certain aspects of these problems by documenting how a system is designed. However, they only support limited portions of software development and do not articulate why a system is designed in a particular way, which complicates subsequent software reuse and evolution.Patterns, frameworks, and middleware are increasingly popular techniques for addressing key aspects of the challenges outlined above. Patterns codify reusable design expertise that provides time-proven solutions to commonly occurring software problems that arise in particular contexts and domains. Frameworks provide both a reusable product-line architecture [1] guided by patterns -- for a family of related applications and an integrated set of collaborating components that implement concrete realizations of the architecture. Middleware is reusable software that leverages patterns and frameworks to bridge the gap between the functional requirements of applications and the underlying operating systems, network protocol stacks, and databases. This paper presents an overview of patterns, frameworks, and middleware, describes how these technologies complement each other to enhance reuse and productivity, and then illustrates how they have been applied successfully in practice to improve the reusability and quality of complex software systems.

References

  1. P. Clements and L. Northrop, Software Product Lines: Practices and Patterns. Boston: Addison-Wesley, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. R.E. Schantz and D. C. Schmidt, "Middleware for Distributed Systems: Evolving the Common Structure for Network-centric Applications," in Encyclopedia of Software Engineering (J. Marciniak and G. Telecki, eds.), New York: Wiley & Sons, 2002.Google ScholarGoogle Scholar
  3. E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Reading, MA: Addison-Wesley, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, and M. Stal, Pattern-Oriented Software Architecture---A System of Patterns. New York: Wiley & Sons, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. D.C. Schmidt, M. Stal, H. Rohnert, and F. Buschmann, Pattern-Oriented Software Architecture: Patterns for Concurrent and Networked Objects, Volume 2. New York: Wiley & Sons, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. M. Fayad, R. Johnson, and D. C. Schmidt, eds., Implementing Application Frameworks: Object-Oriented Frameworks at Work. New York: Wiley & Sons, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. M. Fayad, R. Johnson, and D. C. Schmidt, eds., Building Application Frameworks: Object-Oriented Foundations of Framework Design. New York: Wiley & Sons, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. H. Hueni, R. Johnson, and R. Engel, "A Framework for Network Protocol Software" in Proceedings of OOPSLA '95, (Austin, TX), ACM, Oct. 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. D.C. Schmidt and S. D. Huston, C++ Network Programming, Volume 1: Mastering Complexity with ACE and Patterns. Boston: Addison-Wesley, 2002.Google ScholarGoogle Scholar
  10. D.C. Schmidt and S. D. Huston, C++ Network Programming, Volume 2: Systematic Reuse with ACE and Frameworks. Reading, Massachusetts: Addison-Wesley, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. D. Alur, J. Crupi, and D. Malks, Core J2EE Patterns: Best Practices and Design Strategies. Prentice Hall, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. M. Volter, A. Schmid, and E.Wolff, Server Component Patterns -- Component Infrastructures illustrated with EJB. New York: Wiley & Sons, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. M. Fowler, D. Rice, M. Foemmel, E. Hieatt, R. Mee, and R. Stafford, Patterns of Enterprise Application Architecture. Reading, Massachusetts: Addison-Wesley, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. F. Buschmann, A. Geisler, T. Heimke, and C. Schuderer, "Framework-Based Software Architectures for Process Automation Systems," in Proceedings of the 9th IFAC Symposium on Automation in Mining, Mineral, and Metal Processing, (Cologne, Germany), 1998.Google ScholarGoogle Scholar
  15. D.C. Sharp, "Reducing Avionics Software Cost Through Component Based Product Line Development," in Proceedings of the 10th Annual Software Technology Conference, Apr. 1998.Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. B. S. Doerr and D. C. Sharp, "Freeing Product Line Architectures from Execution Dependencies," in Proceedings of the 11th Annual Software Technology Conference, Apr. 1999.Google ScholarGoogle Scholar
  17. R. Johnson and B. Foote, "Designing Reusable Classes," Journal of Object-Oriented Programming, vol. 1, pp. 22--35, June/July 1988.Google ScholarGoogle Scholar
  18. R. Johnson,"Frameworks = Patterns + Components," Communications of the ACM, vol. 40, Oct. 1997.Google ScholarGoogle Scholar
  19. J. Coplien, D. Hoffman, and D. Weiss, "Commonality and Variability in Software Engineering," IEEE Software, vol. 15, November/December 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. M. Fayad and R. Johnson, eds., Domain-Specific Application Frameworks: Frameworks Experience by Industry. New York: Wiley & Sons, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. C. Alexander, S. Ishikawa, M. Silverstein, M. Jacobson, I. Fiksdahl-King, and S. Angel, A Pattern Language. New York, NY: Oxford University Press, 1977.Google ScholarGoogle Scholar
  22. J.O. Coplien and D. C. Schmidt, eds., Pattern Languages of Program Design. Reading, Massachusetts: Addison-Wesley, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. C. Alexander, The Timeless Way of Building. New York, NY: Oxford University Press, 1979.Google ScholarGoogle Scholar
  24. W. Cunningham, "The CHECKS Pattern Language of Information Integrity," in Pattern Languages of Program Design (J. O. Coplien and D. C. Schmidt, eds.), Reading, Massachusetts: Addison-Wesley, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. J. Borchers, "A Pattern Approach To Interaction Design". New York: Wiley & Sons, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. K. Beck, Smalltalk Best Practice Patterns. Englewood Cliffs, NJ: Prentice-Hall, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. K. Henney, "C++ Patterns - Reference Accounting," in Proceedings of the EuroPLoP 2002 conference, (Irsee, Germany), July 2002.Google ScholarGoogle Scholar
  28. A. Haase, "Java Idioms: Exception Handling," in Proceedings of the EuroPLoP 2003 conference, (Irsee, Germany), July 2003.Google ScholarGoogle Scholar
  29. D.C. Schmidt, D. L. Levine, and S. Mungee, "The Design and Performance of Real-Time Object Request Brokers," Computer Communications, vol. 21, pp. 294--324, Apr. 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. M. Henning and S. Vinoski, Advanced CORBA Programming with C++. Reading, MA: Addison-Wesley, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Object Management Group, The Common Object Request Broker: Architecture and Specification, 3.0 ed., June 2002.Google ScholarGoogle Scholar
  32. G. Meszaros, "A Pattern Language for Improving the Capacity of Reactive Systems" in Pattern Languages of Program Design (J. O. Coplien, J. Vlissides, and N. Kerth, eds.), Reading, Massachusetts: Addison-Wesley, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. D.C. Schmidt, V. Kachroo, Y. Krishnamurthy, and F. Kuhns, "Applying QoS-enabled Distributed Object Computing Middleware to Next-generation Distributed Applications," IEEE Communications Magazine, vol. 38, pp. 112--123, Oct. 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. R. Noseworthy, "IKE 2 -- Implementing the Stateful Distributed Object Paradigm" in 5th IEEE International Symposium on Object-Oriented Real-Time Distributed Computing (ISORC 2002), (Washington, DC), IEEE, Apr. 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. D.C. Schmidt and C. Cleeland, "Applying Patterns to Develop Extensible ORB Middleware" IEEE Communications Magazine, vol. 37, Apr. 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. D. Lea, Concurrent Programming in Java: Design Principles and Patterns, Second Edition. Boston: Addison-Wesley, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. D. Lea and J. Marlowe, "PSL: Protocols and Pragmatics for Open Systems" in Proceedings of the 9th European Conference on Object-Oriented Programming, (Aarhus, Denmark), ACM, Aug. 1995.Google ScholarGoogle Scholar
  38. J. Noble and C. Weir, Small Memory Software: Patterns for Systems with Limited Memory. Boston: Addison-Wesley, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. D.C. Schmidt, "R&D Advances in Middleware for Distributed, Real-time, and Embedded Systems," Communications of the ACM special issue on Middleware, vol. 45, pp. 43--48, June 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. J.A. Zinky, D. E. Bakken, and R. Schantz, "Architectural Support for Quality of Service for CORBA Objects," Theory and Practice of Object Systems, vol. 3, no. 1, pp. 1--20, 1997.Google ScholarGoogle ScholarCross RefCross Ref
  41. F. Kon, F. Costa, G. Blair, and R. H. Campbell, "The Case for Reflective Middleware" Communications ACM, vol. 45, pp. 33--38, June 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Patterns, frameworks, and middleware: their synergistic relationships

              Recommendations

              Comments

              Login options

              Check if you have access through your login credentials or your institution to get full access on this article.

              Sign in
              • Published in

                cover image ACM Conferences
                ICSE '03: Proceedings of the 25th International Conference on Software Engineering
                May 2003
                841 pages
                ISBN:076951877X

                Copyright © Copyright (c) 2003 Institute of Electrical and Electronics Engineers, Inc. All rights reserved.

                Publisher

                IEEE Computer Society

                United States

                Publication History

                • Published: 3 May 2003

                Check for updates

                Qualifiers

                • Article

                Acceptance Rates

                ICSE '03 Paper Acceptance Rate42of324submissions,13%Overall Acceptance Rate276of1,856submissions,15%

                Upcoming Conference

                ICSE 2025

              PDF Format

              View or Download as a PDF file.

              PDF

              eReader

              View online with eReader.

              eReader