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.
- P. Clements and L. Northrop, Software Product Lines: Practices and Patterns. Boston: Addison-Wesley, 2002. Google ScholarDigital Library
- 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 Scholar
- E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Reading, MA: Addison-Wesley, 1995. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- M. Fayad, R. Johnson, and D. C. Schmidt, eds., Implementing Application Frameworks: Object-Oriented Frameworks at Work. New York: Wiley & Sons, 1999. Google ScholarDigital Library
- M. Fayad, R. Johnson, and D. C. Schmidt, eds., Building Application Frameworks: Object-Oriented Foundations of Framework Design. New York: Wiley & Sons, 1999. Google ScholarDigital Library
- H. Hueni, R. Johnson, and R. Engel, "A Framework for Network Protocol Software" in Proceedings of OOPSLA '95, (Austin, TX), ACM, Oct. 1995. Google ScholarDigital Library
- D.C. Schmidt and S. D. Huston, C++ Network Programming, Volume 1: Mastering Complexity with ACE and Patterns. Boston: Addison-Wesley, 2002.Google Scholar
- D.C. Schmidt and S. D. Huston, C++ Network Programming, Volume 2: Systematic Reuse with ACE and Frameworks. Reading, Massachusetts: Addison-Wesley, 2002. Google ScholarDigital Library
- D. Alur, J. Crupi, and D. Malks, Core J2EE Patterns: Best Practices and Design Strategies. Prentice Hall, 2001. Google ScholarDigital Library
- M. Volter, A. Schmid, and E.Wolff, Server Component Patterns -- Component Infrastructures illustrated with EJB. New York: Wiley & Sons, 2002. Google ScholarDigital Library
- M. Fowler, D. Rice, M. Foemmel, E. Hieatt, R. Mee, and R. Stafford, Patterns of Enterprise Application Architecture. Reading, Massachusetts: Addison-Wesley, 2002. Google ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- 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 Scholar
- R. Johnson and B. Foote, "Designing Reusable Classes," Journal of Object-Oriented Programming, vol. 1, pp. 22--35, June/July 1988.Google Scholar
- R. Johnson,"Frameworks = Patterns + Components," Communications of the ACM, vol. 40, Oct. 1997.Google Scholar
- J. Coplien, D. Hoffman, and D. Weiss, "Commonality and Variability in Software Engineering," IEEE Software, vol. 15, November/December 1998. Google ScholarDigital Library
- M. Fayad and R. Johnson, eds., Domain-Specific Application Frameworks: Frameworks Experience by Industry. New York: Wiley & Sons, 1999. Google ScholarDigital Library
- 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 Scholar
- J.O. Coplien and D. C. Schmidt, eds., Pattern Languages of Program Design. Reading, Massachusetts: Addison-Wesley, 1995. Google ScholarDigital Library
- C. Alexander, The Timeless Way of Building. New York, NY: Oxford University Press, 1979.Google Scholar
- 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 ScholarDigital Library
- J. Borchers, "A Pattern Approach To Interaction Design". New York: Wiley & Sons, 2001. Google ScholarDigital Library
- K. Beck, Smalltalk Best Practice Patterns. Englewood Cliffs, NJ: Prentice-Hall, 1997. Google ScholarDigital Library
- K. Henney, "C++ Patterns - Reference Accounting," in Proceedings of the EuroPLoP 2002 conference, (Irsee, Germany), July 2002.Google Scholar
- A. Haase, "Java Idioms: Exception Handling," in Proceedings of the EuroPLoP 2003 conference, (Irsee, Germany), July 2003.Google Scholar
- 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 ScholarDigital Library
- M. Henning and S. Vinoski, Advanced CORBA Programming with C++. Reading, MA: Addison-Wesley, 1999. Google ScholarDigital Library
- Object Management Group, The Common Object Request Broker: Architecture and Specification, 3.0 ed., June 2002.Google Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- D.C. Schmidt and C. Cleeland, "Applying Patterns to Develop Extensible ORB Middleware" IEEE Communications Magazine, vol. 37, Apr. 1999. Google ScholarDigital Library
- D. Lea, Concurrent Programming in Java: Design Principles and Patterns, Second Edition. Boston: Addison-Wesley, 2000. Google ScholarDigital Library
- 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 Scholar
- J. Noble and C. Weir, Small Memory Software: Patterns for Systems with Limited Memory. Boston: Addison-Wesley, 2001. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 ScholarDigital Library
Index Terms
- Patterns, frameworks, and middleware: their synergistic relationships
Recommendations
Applying patterns to develop a pluggable protocols framework for ORB middleware
Design patterns in communications softwareTo be an effective platform for performance-sensitive applications, off-the-shelf CORBA middleware must preserve the communication-layer quality of service (QoS) properties of applications end-to-end. However, the standard CORBA GIOP/IIOP ...
Applying patterns to develop extensible ORB middleware
Distributed object computing forms the basis for next-generation application middleware. At the heart of distributed object computing are object request brokers (ORBs), which automate many tedious and error-prone distributed programming tasks. This ...
Middleware Challenges Ahead
New application requirements--including the need to support enterprise application integration, Internet applications, quality of service, nomadic mobility, and ubiquitous computing--challenge established middleware design principles. Meeting these ...
Comments