Patterns, frameworks, and middleware: their synergistic relationships

Douglas C. Schmidt, Frank Buschmann · 2003

The knowledge required to develop complex software has his-torically existed in programming folklore, the heads of experi-enced evelopers, or buried deep in the code. These locations are not ideal since the effort required to capture and evolve this knowledge isexpensive, time-consuming, and error-prone. Many popular software modeling methods and tools address certain aspects of these problems by documenting how a sys-tem is designed. However, they only support limitedportions 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 chal-lenges outlined above. Patterns codify reusable design ex-pertise that provides time-proven solutions to commonly oc-curring 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 hat implement concrete realizations of the ar-chitecture. Middleware is reusable software that leverages patterns and frameworks to bridge the gap between the func-tional requirements of applications and the underlying oper-ating systems, network protocol stacks, and databases. This paper presents an overview of patterns, frameworks, and mid-dleware, 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. 1

Read the paper · More papers on PaperTik