Lehrstuhl für Angewandte Softwaretechnik
Chair for Applied Software Engineering


Chapter 8: Object Design: Reusing Pattern Solutions


  • Lecture on Reuse and Patterns I (ppt), including overview of object design, specification vs. implementation inheritance.
  • Lecture on Reuse and Patterns II (ppt), including Adapter, Bridge, and Facade.
  • Lecture on Reuse and Patterns III (ppt), including Abstract Factory, Builder, Proxy, Command, Observer, and Strategy.
  • Artwork (ppt)




During analysis, we describe the purpose of the system. This results in the identification of application objects. During system design, we describe the system in terms of its architecture, such as its subsystem decomposition, global control flow, and persistency management. During system design, we also define the hardware/software platform on which we build the system. This allows the selection of off-the-shelf components that provide a higher level of abstraction than the hardware. During object design, we close the gap between the application objects and the off-the-shelf components by identifying additional solution objects and refining existing objects. Object design includes


  • reuse, during which we identify off-the-shelf components and design patterns to make use of existing solutions
  • service specification, during which we precisely describe each class interface
  • object model restructuring, during which we transform the object design model to improve its understandability and extensibility
  • object model optimization, during which we transform the object design model to address performance criteria such as response time or memory utilization.

Object design, like system design, is not algorithmic. The identification of existing patterns and components is central to the problem-solving process. We discuss these building blocks and the activities related to them. In this chapter, we provide an overview of object design and focus on reuse, that is the selection of components and the application of design patterns. In the next chapter, we focus on service specification. In Chapter 10, Mapping Models to Code, we focus on the object model restructuring and optimization activities.