480 likes | 524 Views
Patterns and AntiPatterns. Ku-Yaw Chang canseco@mail.dyu.edu.tw Assistant Professor, Department of Computer Science and Information Engineering Da-Yeh University. Outline. Background Structured v.s. Object-Oriented Paradigm Patterns Command AntiPatterns BLOB Summary References.
E N D
Patterns and AntiPatterns Ku-Yaw Chang canseco@mail.dyu.edu.tw Assistant Professor, Department of Computer Science and Information Engineering Da-Yeh University
Outline • Background • Structured v.s. Object-Oriented Paradigm • Patterns • Command • AntiPatterns • BLOB • Summary • References Patterns and AntiPatterns
BackgroundParadigm • A way of organizing system abstractions around properties of commonality and variation. Patterns and AntiPatterns
BackgroundParadigm • Abstraction • To focus on the general and put aside the specific. • To emphasize what is common and deemphasize details Patterns and AntiPatterns
BackgroundParadigm • Commonality • The Essence of Abstraction • To search for common elements that helps us understand how family members are the same. • Variability • The Spice of Abstraction • Being monotonous without variability. Patterns and AntiPatterns
BackgroundParadigm • A way of organizing system abstractions around properties of commonality and variation. • Commonality • The backbone and skeleton of design • Variability • The flesh and blood Patterns and AntiPatterns
BackgroundParadigm • Before 1975 • No specific techniques • 1975 – 1985 • Structured Paradigm • Functional Decomposition • 1985 – 2004 • Object-Oriented Paradigm Patterns and AntiPatterns
Structured v.s.Object-Oriented Paradigm message message deposit withdraw deposit withdraw account balance account balance determinebalance determinebalance message Patterns and AntiPatterns
BackgroundTrue 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. • 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. Patterns and AntiPatterns
Patterns • Having roots in the architecture field by Christopher Alexander Patterns and AntiPatterns
Patterns Patterns and AntiPatterns
Patterns Patterns and AntiPatterns
Patterns • Expert behavior • do not try to find the solution from first principles • reuse the essence of a proven solution to solve the new problem Patterns and AntiPatterns
Patterns • Being applied to the software development successfully, especially in the object-oriented community • Software reuse • Code reuse • Design reuse • the value of design experience • Layers : OSI 7-Layer Model Patterns and AntiPatterns
What is a Pattern? • Christopher Alexander • Each pattern describes a problemwhich 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) Patterns and AntiPatterns
PLoP Conferences • Pattern Languages of Program • PLoP • Chili PLoP • Euro PLoP • Koala PLoP • Mensore PLoP • SugarLoaf PLoP • Viking PLoP • OOPSLA • ECOOP Allerton Park Patterns and AntiPatterns
PatternsWhat is a Pattern? • Four Essential Elements • pattern name • easier to think and to communicate • problem • explain the problem and its context • describe when to apply • solution • describe the elements • their relationships, responsibilities, and collaborations • consequence • results and trade-offs Patterns and AntiPatterns
Pattern Example • Pattern Name • Command • Pattern Problem • different request • queue or log request • support undoable operations Patterns and AntiPatterns
Pattern Example • Solution (UML) Patterns and AntiPatterns
Pattern Example • Consequences • 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. • Assemble commands into a composite command. • Easy to add new Commands. You don’t have to change existing classes. Patterns and AntiPatterns
Non-software Pattern Example • Solution Patterns and AntiPatterns
Pattern Categories GoF - 94 • Creational Patterns • Abstract Factory • Singleton • Structural Patterns • Decorator • Behavioral Patterns • Command Patterns and AntiPatterns
Pattern Categories POSA (Vol. One) - 96 • Architectural • MVC / Doc-View • Broker • Design • Proxy • Idioms Patterns and AntiPatterns
Pattern Categories POSA (Vol. Two) - 2000 • Service Access and Configuration • Event Handling • Synchronization • Concurrency Patterns and AntiPatterns
Obsessive use of 1 pattern • There are more than 160 fundamental patterns: • 23 Gamma Patterns • 33 Buschmann Patterns (16+17) • 72 Analysis Patterns • 38 CORBA Design Patterns • …. Patterns and AntiPatterns
Bright and Dark Sides • Bright side • Reuse of proven good designs • Can be applied in constructing new software • Dark side • Fail to properly evaluate a pattern • Difficult to be applied to existing systems Patterns and AntiPatterns
The Truth aboutSoftware 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! Stone Age ! Patterns and AntiPatterns
Many Paths to Disaster Structured Programming Artificial Intelligence Networking Technologies Open Systems Parallel Processing Patterns 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 Patterns 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. - James O. Coplien Patterns and AntiPatterns
AntiPattern Research • Principal viewpoints • Development AntiPatterns • Technical problems and solutions encountered by programmers • Architectural AntiPatterns • Identify and resolve common problems in how systems are structured. • Managerial AntiPatterns • Address common problems in software processes and development organizations. Patterns and AntiPatterns
AntiPattern Research Patterns and AntiPatterns
Design Pattern and AntiPattern Patterns 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. • Not only do they point out trouble, but they also tell you how to get out it. Patterns and AntiPatterns
The Blob • General Form • One class monopolizes the processing and other classes primarily encapsulate data. • Key Problem • The majority of the responsibility are allocated to a single class. • Procedural-style rather than object-oriented architectures Patterns and AntiPatterns
Summary • Structured v.s. Object Oriented Paradigms • Patterns help • reuse design experiences • Especially in constructing new software • understand the full capabilities of object-oriented design • communication Patterns and AntiPatterns
Summary • AntiPatterns • not against using patterns. • a more compelling form of patterns. • Each AnitPattern includes a solution + solution pair. • AntiPattern Solution Generates mostly negative consequences. • Refactored Solution Generates mostly positive benefits. Patterns and AntiPatterns
Summary • Rules • What to do • What not to do A B Patterns 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. • 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. Patterns 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. • Web Sites • http://hillside.net/patterns/ • http://www.antipatterns.com/ Patterns and AntiPatterns
Q & A Thank you! Patterns and AntiPatterns