
Adopting Software Design Patterns
Design patterns provide reusable solutions for recurring design problems.
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.
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.
References
- Buschmann, F., Henney, K., & Schmidt, D. C. (2007). Past, present, and future trends in software patterns. IEEE Software 24(4). Retrieved May 8, 2011 from Computer Source.
- Cline, M. P. (1996). The pros and cons of adopting and applying design patterns in the real world. Communications of the ACM, 39(10), 47-49. Retrieved Mar 30, 2011 from Business Source.
- Fowler, M. (2003). Patterns. IEEE software, 20(2). Retrieved May 8, 2011 from Software Engineering, College of Computing and Information Sciences, Rochester Institute of Technology.
- Johnson, R. E. (1997). Frameworks = (Components + patterns): How frameworks compare to other object-oriented reuse techniques. Communications of the ACM, October 1997, 40(10). Retrieved April 3, 2011 from Departamento de Informática e Estatística, Universidade Federal de Santa Catarina.
- Lauder, A., & Kent, S. (1998). Precise visual specification of design patterns. E. Jul (Ed.): ECOOP'98, LNCS 1445, 114-134. Retrieved April 3, 2011. CiteSeerX beta, Scientific Literature Digital Library and Search Engine.
- Schmidt, D., Fayad, M., & Johnson, R. (1996). Software patterns. Communications of the ACM, Oct, 39 (10), 36-39. Retrieved Mar 30, 2011 from UO library search.
- Tichy, W. (1998). A catalogue of general-purpose software design patterns. UIUC Pattern Group Version Feb 12. Retrieved April 11, 2011. http://goo.gl/5qfBn.
- Access the UO Scholars' Bank to download the complete Capstone paper.
Research Paper Author: John Knox, software developer, The Regence Group2011 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.