Home > Articles > Software Development & Management > UML

  • Print
  • + Share This
This chapter is from the book

1.5 Reusable Design Patterns

A different approach for providing design reuse is through design patterns. A design pattern describes a recurring design problem to be solved, a solution to the problem, and the context in which that solution works (Buschmann et al. 1996; Gamma et al. 1995). The description specifies objects and classes that are customized to solve a general design problem in a particular context. A design pattern is a larger-grained form of reuse than a class because it involves more than one class and the interconnection among objects from different classes. A design pattern is sometimes referred to as a microarchitecture.

After the original success of the design pattern concept, other kinds of patterns were developed. The main kinds of reusable patterns are

  • Design patterns. In a widely cited book (Gamma et al. 1995), design patterns were described by four software designers—Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides—who were named in some quarters as the "gang of four." A design pattern is a small group of collaborating objects.

  • Architectural patterns. This work was described by Buschmann et al. (1996) at Siemens. Architectural patterns are larger-grained than design patterns, addressing the structure of major subsystems of a system.

  • Analysis patterns. Analysis patterns were described by Fowler (2002), who found similarities during analysis of different application domains. He described recurring patterns found in object-oriented analysis and described them with static models, expressed in class diagrams.

  • Product line–specific patterns. These are patterns used in specific application areas, such as factory automation (Gomaa 1998) or electronic commerce.

  • Idioms. Idioms are low-level patterns specific to a programming language—for example, Java or C++. These patterns are closest to code, but they can be used only by applications that are coded in the same programming language.

From the perspective of software product lines, the biggest benefit can usually be obtained through the reuse of software architectural patterns, which is described in more detail in Chapter 10.

  • + Share This
  • 🔖 Save To Your Account