Concepts in Software Design PDF
Document Details
Uploaded by Deleted User
Tags
Summary
This document provides an overview of design patterns in software engineering, explaining what they are, and how they can be useful for solving common problems in object-oriented programming This document also discusses the benefits of patterns, such as providing inspiration and enabling easier communication amongst developers.
Full Transcript
**Concepts** If a problem occurs over and over again and a solution to that problem has been used effectively, then that solution is described as a *pattern*. The design patterns are language-independent strategies for solving common object-oriented design problems. In software engineering, a desi...
**Concepts** If a problem occurs over and over again and a solution to that problem has been used effectively, then that solution is described as a *pattern*. The design patterns are language-independent strategies for solving common object-oriented design problems. In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern is a description or template for how to solve a problem that can be used in many different situations. Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. **Advantages or Benefits of Using Design Pattern** **Benefits of Design Patterns** Inspiration - Patterns don\'t provide solutions, they inspire solutions. - Patterns explicitly capture expert knowledge and design tradeoffs and make this expertise widely available. - Ease the transition to object-oriented technology. Patterns improve developer communication - Pattern names form a vocabulary. Help document the architecture of a system - Enhance understanding. - Enable large-scale reuse of software architectures - Analyze the more abstract areas of a program by providing concrete, well-tested solutions. - Help you write code faster by providing a clearer picture of how you are implementing the design. - Encourage code reuse and accommodate change by supplying well-tested mechanisms for delegation and composition, and other non-inheritance based reuse techniques. - Encourage more legible and maintainable code by following well-understood paths. Increasingly provide a common language and jargon for a programmer.