Download presentation
Presentation is loading. Please wait.
Published byLindsay Greer Modified over 9 years ago
1
Patterns and AntiPatterns Ku-Yaw Chang canseco@mail.dyu.edu.tw Assistant Professor, Department of Computer Science and Information Engineering Da-Yeh University
2
22004/05/21Patterns and AntiPatterns Outline Background Structured v.s. Object-Oriented Paradigm Structured v.s. Object-Oriented ParadigmPatterns Command CommandAntiPatterns BLOB BLOBSummaryReferences
3
32004/05/21Patterns and AntiPatterns Background Paradigm A way of organizing system abstractions around properties of commonality and variation.
4
42004/05/21Patterns and AntiPatterns Background Paradigm Abstraction To focus on the general and put aside the specific. To focus on the general and put aside the specific. To emphasize what is common and deemphasize details To emphasize what is common and deemphasize details
5
52004/05/21Patterns and AntiPatterns Background Paradigm Commonality The Essence of Abstraction The Essence of Abstraction To search for common elements that helps us understand how family members are the same. To search for common elements that helps us understand how family members are the same.Variability The Spice of Abstraction The Spice of Abstraction Being monotonous without variability. Being monotonous without variability.
6
62004/05/21Patterns and AntiPatterns Background Paradigm A way of organizing system abstractions around properties of commonality and variation. Commonality Commonality The backbone and skeleton of design Variability Variability The flesh and blood
7
72004/05/21Patterns and AntiPatterns Background Paradigm Before 1975 No specific techniques No specific techniques 1975 – 1985 Structured Paradigm Structured Paradigm Functional Decomposition 1985 – 2004 Object-Oriented Paradigm Object-Oriented Paradigm
8
82004/05/21Patterns and AntiPatterns Structured v.s. Object-Oriented Paradigm account balance withdrawdeposit determine balance account balance deposit withdraw determine balance message
9
92004/05/21Patterns and AntiPatterns Background True Object Orientation Alan Shalloway The objects in my code were well-formed and tightly encapsulated. I could design excellent data abstractions for inheritance hierarchies. I thought I knew object-orientation. The objects in my code were well-formed and tightly encapsulated. I could design excellent data abstractions for inheritance hierarchies. I thought I knew object-orientation. Now, looking back, I see that I really did not understand the full capabilities of object- oriented design. Now, looking back, I see that I really did not understand the full capabilities of object- oriented design. I know there was a better design. I just couldn’t see it. I know there was a better design. I just couldn’t see it.
10
102004/05/21Patterns and AntiPatterns Patterns Having roots in the architecture field by Christopher Alexander
11
112004/05/21Patterns and AntiPatterns Patterns
12
122004/05/21Patterns and AntiPatterns Patterns
13
132004/05/21Patterns and AntiPatterns Patterns Expert behavior do not try to find the solution from first principles do not try to find the solution from first principles reuse the essence of a proven solution to solve the new problem reuse the essence of a proven solution to solve the new problem
14
142004/05/21Patterns and AntiPatterns Patterns Being applied to the software development successfully, especially in the object-oriented community Software reuse Code reuse Code reuse Design reuse Design reuse the value of design experience Layers : OSI 7-Layer Model
15
152004/05/21Patterns and AntiPatterns What is a Pattern? Christopher Alexander 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. 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. Be applied in developing software in 1987. Enter the mainstream of OO community in 1994(1st PLoP)
16
162004/05/21Patterns and AntiPatterns PLoP Conferences Pattern Languages of Program PLoP PLoP Chili PLoP Chili PLoP Euro PLoP Euro PLoP Koala PLoP Koala PLoP Mensore PLoP Mensore PLoP SugarLoaf PLoP SugarLoaf PLoP Viking PLoP Viking PLoP OOPSLA OOPSLA ECOOP ECOOP Allerton Park
17
172004/05/21Patterns and AntiPatterns Patterns What is a Pattern? Four Essential Elements pattern name pattern name easier to think and to communicate problem problem explain the problem and its context describe when to apply solution solution describe the elements their relationships, responsibilities, and collaborations consequence consequence results and trade-offs
18
182004/05/21Patterns and AntiPatterns Pattern Example Pattern Name Command Command Pattern Problem different request different request queue or log request queue or log request support undoable operations support undoable operations
19
192004/05/21Patterns and AntiPatterns Pattern Example Solution (UML)
20
202004/05/21Patterns and AntiPatterns Pattern Example Consequences Decouples the object that invokes the operation from the one that knows how to perform it. Decouples the object that invokes the operation from the one that knows how to perform it. Commands can be manipulated and extended like any other object. Commands can be manipulated and extended like any other object. Assemble commands into a composite command. Assemble commands into a composite command. Easy to add new Commands. You don’t have to change existing classes. Easy to add new Commands. You don’t have to change existing classes.
21
212004/05/21Patterns and AntiPatterns Non-software Pattern Example Solution
22
222004/05/21Patterns and AntiPatterns GoF - 94 Creational Patterns Abstract Factory Abstract Factory Singleton Singleton Structural Patterns Decorator Decorator Behavioral Patterns Command Command Pattern Categories
23
232004/05/21Patterns and AntiPatterns POSA (Vol. One) - 96 Architectural MVC / Doc-View MVC / Doc-View Broker BrokerDesign Proxy ProxyIdioms Pattern Categories
24
242004/05/21Patterns and AntiPatterns POSA (Vol. Two) - 2000 Service Access and Configuration Event Handling SynchronizationConcurrency Pattern Categories
25
252004/05/21Patterns and AntiPatterns Obsessive use of 1 pattern There are more than 160 fundamental patterns: 23 Gamma Patterns 23 Gamma Patterns 33 Buschmann Patterns (16+17) 33 Buschmann Patterns (16+17) 72 Analysis Patterns 72 Analysis Patterns 38 CORBA Design Patterns 38 CORBA Design Patterns …. ….
26
262004/05/21Patterns and AntiPatterns Bright and Dark Sides Bright side Reuse of proven good designs Reuse of proven good designs Can be applied in constructing new software Can be applied in constructing new software Dark side Fail to properly evaluate a pattern Fail to properly evaluate a pattern Difficult to be applied to existing systems Difficult to be applied to existing systems
27
272004/05/21Patterns and AntiPatterns The Truth about Software Technology 84% of software projects are unsuccessful. Vendors Our new technology changes the whole paradigm. We’ll have all the features you need in six months. We make no warranty express. If it does something bad, it’s not their fault. Proprietary technologies change every 4 to 18 months. Software gurus New method improves anything they said in the past. You need more tools! You need more training! You need more consultancy!
28
282004/05/21Patterns and AntiPatterns Many Paths to Disaster Structured Programming Artificial Intelligence Networking Technologies Open Systems Parallel Processing
29
292004/05/21Patterns and AntiPatterns AntiPatterns Negative solutions that present more problems than they address Natural extension to design patterns Bridge the gap between architectural concepts and real-world implementations Provide the knowledge to prevent or recover from them
30
302004/05/21Patterns and AntiPatterns AntiPattern Research “The presence of ‘good’ patterns in a successful system is not enough; you also must show that those patterns are absent in unsuccessful systems. Likewise, it is useful to show the presence of certain patterns(AntiPatterns) in unsuccessful systems, and their absence in successful systems. “The presence of ‘good’ patterns in a successful system is not enough; you also must show that those patterns are absent in unsuccessful systems. Likewise, it is useful to show the presence of certain patterns(AntiPatterns) in unsuccessful systems, and their absence in successful systems. - James O. Coplien
31
312004/05/21Patterns and AntiPatterns AntiPattern Research Principal viewpoints Development AntiPatterns Development AntiPatterns Technical problems and solutions encountered by programmers Architectural AntiPatterns Architectural AntiPatterns Identify and resolve common problems in how systems are structured. Managerial AntiPatterns Managerial AntiPatterns Address common problems in software processes and development organizations.
32
322004/05/21Patterns and AntiPatterns AntiPattern Research
33
332004/05/21Patterns and AntiPatterns Design Pattern and AntiPattern
34
342004/05/21Patterns and AntiPatterns Software Refactoring A form of code modification, used to improve the software structure in support of subsequent extension and long-term maintenance. AntiPatterns Define a migration (or refactoring) from negative solutions to positive solutions. Define a migration (or refactoring) from negative solutions to positive solutions. Not only do they point out trouble, but they also tell you how to get out it. Not only do they point out trouble, but they also tell you how to get out it.
35
352004/05/21Patterns and AntiPatterns The Blob General Form One class monopolizes the processing and other classes primarily encapsulate data. One class monopolizes the processing and other classes primarily encapsulate data. Key Problem The majority of the responsibility are allocated to a single class. The majority of the responsibility are allocated to a single class. Procedural-style rather than object-oriented architectures Procedural-style rather than object-oriented architectures
36
362004/05/21Patterns and AntiPatterns
37
372004/05/21Patterns and AntiPatterns
38
382004/05/21Patterns and AntiPatterns
39
392004/05/21Patterns and AntiPatterns
40
402004/05/21Patterns and AntiPatterns
41
412004/05/21Patterns and AntiPatterns
42
422004/05/21Patterns and AntiPatterns Summary Structured v.s. Object Oriented Paradigms Patterns help reuse design experiences reuse design experiences Especially in constructing new software understand the full capabilities of object- oriented design understand the full capabilities of object- oriented design communication communication
43
432004/05/21Patterns and AntiPatterns Summary AntiPatterns not against using patterns. not against using patterns. a more compelling form of patterns. a more compelling form of patterns. Each AnitPattern includes a solution + solution pair. AntiPattern Solution Generates mostly negative consequences. AntiPattern Solution Generates mostly negative consequences. Refactored Solution Generates mostly positive benefits. Refactored Solution Generates mostly positive benefits.
44
442004/05/21Patterns and AntiPatterns Summary AB Rules What to do What to do What not to do What not to do
45
452004/05/21Patterns and AntiPatterns References Patterns GoF: E. Gamma, E. Helm, R. Johnson and J. Vlissides, Design Patterns - Elements of Reusable Object-Oriented Software, Addison-Wesley Publishing Company Inc., 1995. GoF: E. Gamma, E. Helm, R. Johnson and J. Vlissides, Design Patterns - Elements of Reusable Object-Oriented Software, Addison-Wesley Publishing Company Inc., 1995. POSA (Vol. 1): F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad and M. Stal, Pattern-Oriented Software Architecture – A System of Patterns, John Wiley & Sons Inc., New York, 1996. POSA (Vol. 1): F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad and M. Stal, Pattern-Oriented Software Architecture – A System of Patterns, John Wiley & Sons Inc., New York, 1996. POSA (Vol. 2): D. Schmidt, M. Stal, H. Rohnert and F. Buschmann, Pattern- Oriented Software Architecture – Patterns for Concurrent and Networked Objects, John Wiley & Sons Inc., New York, 2000. POSA (Vol. 2): D. Schmidt, M. Stal, H. Rohnert and F. Buschmann, Pattern- Oriented Software Architecture – Patterns for Concurrent and Networked Objects, John Wiley & Sons Inc., New York, 2000.
46
462004/05/21Patterns and AntiPatterns References AntiPatterns W. J. Brown, R. C. Malveau, H. W. McCormick III, T. J. Mowbray, AntiPatterns - Refactoring Software, Architectures, and Projects in Crisis, John Wiley & Sons Inc., New York, 1998. W. J. Brown, R. C. Malveau, H. W. McCormick III, T. J. Mowbray, AntiPatterns - Refactoring Software, Architectures, and Projects in Crisis, John Wiley & Sons Inc., New York, 1998. Web Sites http://hillside.net/patterns/ http://hillside.net/patterns/ http://www.antipatterns.com/ http://www.antipatterns.com/
47
472004/05/21Patterns and AntiPatterns Q & A Thank you!
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.