Applied Information Management

Adopting Software Design Patterns

Design patterns constitute an important tool for improving software quality by providing reusable solutions for recurring design problems. As noted by Lauder and Kent (1998), software design patterns capture the distilled experience of expert designers. The longer a pattern has been used successfully, the more valuable it is.

Design patterns provide reusable solutions for recurring design problems.

This bibliography examines commonly used software design patterns to provide IT leaders with information to justify and promote the use of these patterns throughout an IT organization. Specifically this study examines how the implementation of software design patterns throughout an IT organization can: (a) increase operational efficiency or (b) deliver strategic benefits.

The assumption is that through the use of software design patterns, IT organizations will be able to deliver software more quickly and with fewer defects. As noted by Johnson (1997), developers who share a set of patterns and a common vocabulary for describing their designs can reuse solutions and accomplish these goals. Additionally, software development is rarely an individual effort and generally involves teams and diverse collaboration to generate good reliable code. Design patterns capture the essential properties of the software architecture by expressing the structure and collaboration of participants at a higher level of abstraction than source code. According to Schmidt et al. (1996), this higher level of abstraction bridges the communication gap that exists between software developers and other members of a cross-functional development team.

Strategic benefits. Because design patterns capture distilled experience, they can provide a communication tool throughout the software development lifecycle and across diverse communities of designers and programmers (Cline, 1996). This improved communication among software developers is a benefit that can empower less experienced developers to produce high-quality designs. Two related benefits are flexibility and extensibility. The educational benefits to be gained from learning to classify and organize design patterns include discovery, collaboration, and mentoring.

Operational efficiencies. Software design patterns are used to collect, store, and distribute design information about successful and verified solutions. However, to gain efficiency, these software patterns must be utilized by a software business that is formed by networks of participants who operate cooperatively to produce the products, applications, and services on time. Fowler (2003) states that developers must finish and adapt design patterns to their own environment and that implementing a pattern for a particular purpose is one of the best ways to learn about it.


AIM alumnus John Knox

Research Paper Author: John Knox, software developer, The Regence Group—2011 University of Oregon, AIM Program Graduate.

Abstract: Software design patterns are recognized as a valuable part of good engineering practices (Buschmann, 2005). Literature published between 1995 and 2011 is examined in order to provide IT professionals with definitions, classifications, and benefits of software design patterns. Design patterns capture experience and provide multiple perspectives on design problems. They support improved communication, flexibility and extensibility, and collaborative and mentoring opportunities. Adoption and implementation are required enterprise-wide to realize benefits and efficiencies.

Download the entire Capstone research project