Advanced topics in software engineering CSC532 Term Paper Design Patterns Harpreet Singh Submitted By:-
Introduction What are Design patterns ? A standard solution to problems in object oriented software development A well formed language to represent the software design Ready made and Proven solution for some recurring problems
How did the need for Design Patterns raised Look at Problem:- Look at Problem:- Hundred and thousands of Software Projects made each year Not all of the Software Development techniques are different Developers don’t invent a new design all the Time A procedure should be present to reuse the existing design work in order to save time and Money Solution :- DESIGN PATTERNS DESIGN PATTERNS
How are Design Patterns the solution How are Design Patterns the solution Provide ready to use and proven Design Represent the expertise of whole community so reduce the chances of problems Help novice developers to learn the process easily Better quality software is developed
History of Design Patterns History of Design Patterns Term coined by Christopher Alexander He was an Architect and a Builder Made the Design Patterns for Buildings Not of much use as only few used it.
How were Design patterns used in Software Ward Cunningham and Kent Back used some of the ideas of Alexender for User Interface Design Most significant work done by :- Erich Gamma, Richard Helm John Vlissides and Ralph Johnson Wrote the book :- Design Patterns: Elements of Reusable Object-Oriented Software popularly called “ Gang Of Four ” How were Design patterns used in Software Ward Cunningham and Kent Back used some of the ideas of Alexender for User Interface Design Most significant work done by :- Erich Gamma, Richard Helm John Vlissides and Ralph Johnson Wrote the book :- Design Patterns: Elements of Reusable Object-Oriented Software popularly called “ Gang Of Four ” Design Patterns: Elements of Reusable Object-Oriented Software Design Patterns: Elements of Reusable Object-Oriented Software
Classification of Design Patterns Design Pattern Classification Purpose Scope CreationalStructural Behavioral Class Object
Purpose Purpose What the pattern will do or has done in the past What the pattern will do or has done in the past Creational Structural Behavioral Scope Scope Where the pattern would be applied Where the pattern would be applied Class Objects Class Objects
Creational Deals with object creation mechanism Structural Identifies ways to realize relationships between the entities that are used in the software development Behavioral identify common communication patterns between the objects
Class Patterns mainly deal with relationships between classes and their subclasses. Static as they are established through inheritance. Object Patterns in this category deal with object relationships. Relationships are dynamic in nature and can be changed at runtime
Documenting the Design Patterns Documenting the Design Patterns One of the toughest task Should provide fact and complete information about the problem and its Domain Should help users to investigate existing system and customize it to fit users needs
Characteristics of Documentation Pattern name and classification Intent Motivation Applicability Structure Participants Implementation Known use Related patterns
Critique of Design Patterns Don’t always provide the relevant solution Experiments performed on OBSERVER, COMPOSITE, VISITOR are examples Need only arises due to insufficient Abstraction Complicate the problems even more in some situations
Conclusion Design patterns are very useful as they provide ready to use and proven solutions that speed up development and improve software quality They do have limitations and negative points but their benefits overpower the limitations Unless there is clear need to use simpler solutions the design patterns should be used as they provide more flexibility
References 1. Formal specification of design patterns: a comparison Taibi, T.; Ling, D.N.C.; 2. Evolutionary patterns of design and design patterns Aoyama, M.; 2. Evolutionary patterns of design and design patterns Aoyama, M.; 3. Precise modeling of design patterns in UML Mak, J.K.H.; Choy, C.S.T.; Lun, D.P.K.; 4. Instantiating and detecting design patterns: putting bits and pieces together Albin-Amiot, H.; Cointe, P.; Gueheneuc, Y.-G.; Jussien, N.; 5. Design patterns-essentials, experience, Java case study Pree, W.; Sikora, H.; 6. A controlled experiment in maintenance: comparing design patterns to simpler solutions Prechelt, L.; Unger, B.; Tichy, W.F.; Brossler, P.; Votta, L.G.; 7. Precise specification and automatic application of design patterns Eden, A.H.; Yehudai, A.; Gil, J.;
Thank you Any Questions ????