Design Patterns Trends and Case Study John Hurst June 2005.

Slides:



Advertisements
Similar presentations
Welcome to. Who am I? A better way to code Design Patterns ???  What are design patterns?  How many are there?  How do I use them?  When do I use.
Advertisements

CS590L - Lecture 6 1 CS590L Distributed Component Architecture References: - E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns: Elements of.
UNIVERSITY OF JYVÄSKYLÄ − ITRI Jouni Markkula − MODPA Design Patterns Supporting Mobile Application Development WIM Workshop Uppsala Jouni Markkula.
Design Patterns for Object Oriented systems CSC 515 Ashwin Dandwate.
Design Patterns Yes, they are important Robert Cotton April 23, 2009.
CS427 Topics in Software Engineering
05/26/2004www.indyjug.net1 Indy Java User’s Group June Knowledge Services, Inc.
(c) 2009 University of California, Irvine – André van der Hoek1June 13, 2015 – 21:42:16 Informatics 122 Software Design II Lecture 8 André van der Hoek.
Design Patterns CS is not simply about programming
Ralph Johnson - University of Illinois1 Patterns: What They Are, and How to Write Them Ralph Johnson University of Illinois at Urbana-Champaign
Spring 2010CS 2251 Design Patterns. Spring 2010CS 2252 What is a Design Pattern? "a general reusable solution to a commonly occurring problem in software.
Design Patterns William A. Hoffman NYU OOP Class.
(c) 2010 University of California, Irvine – André van der Hoek1June 29, 2015 – 08:55:05 Informatics 122 Software Design II Lecture 8 André van der Hoek.
PRESENTED BY SANGEETA MEHTA EECS810 UNIVERSITY OF KANSAS OCTOBER 2008 Design Patterns.
Object-Oriented Design Patterns CSC 335: Object-Oriented Programming and Design.
Design Patterns Introduction. What is a Design Pattern?  A technique to repeat designer success.  Borrowed from Civil and Electrical Engineering domains.
Design Patterns Alan Shalloway, James Trott, Design Patterns Explained, Addison-Wesley, Gamma, Helm, Johnson, Vlissides, Design Patterns, Elements.
Cf.OBJECTIVE (ANZ) Design Patterns and Form Processing Jaime Metcher Software Architect, Centre for Innovation in Professional Learning, University of.
©2007 · Georges Merx and Ronald J. NormanSlide 1 Chapter 11 Reality Check: Java Programming in the Real World.
Software Design Refinement Using Design Patterns Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
樣式導向設計 (Pattern-Oriented Design) 課程簡介 Ku-Yaw Chang Assistant Professor, Department of Computer Science and Information Engineering.
05 - Patterns Intro.CSC4071 Design Patterns Designing good and reusable OO software is hard. –Mix of specific + general –Impossible to get it right the.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
Advanced topics in software engineering CSC532 Term Paper Design Patterns Harpreet Singh Submitted By:-
CIS764 Fall CIS 764 Database Systems Design J2EE Patterns Book Review Presented by Mark Weiss.
BTS430 Systems Analysis and Design using UML Design Patterns.
January 12, Introduction to Design Patterns Tim Burke References: –Gamma, Erich, et. al. (AKA, The Gang of Four). Design Patterns: Elements of Reusable.
Creational Patterns CSE301 University of Sunderland Harry R Erwin, PhD.
Patterns in programming 1. What are patterns? “A design pattern is a general, reusable solution to a commonly occurring problem in software. A design.
Powerpoint Templates Page 1 Powerpoint Templates What is Design Patterns ? by Indriati Teknik Informatika – UB.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 27. Review UML dynamic view – State Diagrams.
Y2 eProjects Session 4 – Advanced Topics. Objectives  Dynamic Models  Design Patterns (Optional)  Software testing (for S4) ACCP i7.1\Sem3_4\eProject\T4.
D ESIGN P ATTERNS Weslei A. de T. Marinho. T ALK O UTLINE Pattern Definition GRASP Patterns GoF Patterns GoF Patterns Classification Creational Patterns.
Detecting Patterns and Antipatterns in Software using Prolog Rules Alecsandar Stoianov, Ioana Sora Department of Computers Politehnica University of Timisoara,
DESIGN PATTERNS CSC532 Adv. Topics in Software Engineering Shirin A. Lakhani.
Software Design Patterns (1) Introduction. patterns do … & do not … Patterns do... provide common vocabulary provide “shorthand” for effectively communicating.
Testing Extensible Design Patterns in OO Frameworks through Scenario Templates D.S. Sanders Software Verification & Validation.
ECE450S – Software Engineering II
Patterns in programming1. 2 What are patterns? Answers to common design problems. A language used by developers –To discuss answers to design problems.
Design Patterns CSIS 3701: Advanced Object Oriented Programming.
05/26/2004www.indyjug.net1 Indy Java User’s Group May Knowledge Services, Inc.
Copyright © Active Frameworks Inc. - All Rights Reserved - V2.0Design Pattern Catalog - Page L3-1 PS95&96-MEF-L10-1 Dr. M.E. Fayad Creationa.
Csci 490 / Engr 596 Special Topics / Special Projects Software Design and Scala Programming Spring Semester 2010 Lecture Notes.
Java EE Patterns Dan Bugariu.  What is Java EE ?  What is a Pattern ?
Design Patterns: Elements of Reusable Object- Orientated Software Gamma, Helm, Johnson, Vlissides Presented By: David Williams.
An Introduction To Design Patterns Jean-Paul S. Boodhoo Independent Consultant
Stephenson College DP 98 1 Design Patterns by Derek Peacock.
Design Patterns. 1 Paradigm4 Concepts 9 Principles23 Patterns.
Design Patterns Introduction
CS251 – Software Engineering Lectures 18: Intro to DP Slides by Rick Mercer, Christian Ratliff, Oscar Nierstrasz and others 1 و ابتغ فيما آتاك الله الدار.
Patterns Composite Pattern. Patterns All designers use patterns. Patterns in solutions come from patterns in problems. "A pattern is a solution to a problem.
Engr 691 Special Topics in Engineering Science Software Architecture Spring Semester 2004 Lecture Notes.
1 CS590L Distributed Component Architecture Yugi Lee STB #555 (816) * This presentation is prepared based.
Design Patterns CSCE 315 – Programming Studio Spring 2013.
Patterns in programming
Design Patterns: MORE Examples
Strategy Design Pattern
The Object-Oriented Thought Process Chapter 15
Chapter 10 Design Patterns.
Software Design Patterns
MPCS – Advanced java Programming
Introduction to Design Patterns
Design Patterns Lecture part 2.
Introduction to Design Patterns
Design Patterns Introduction
Design Patterns.
Informatics 122 Software Design II
DESIGN PATTERNS : Introduction
Informatics 122 Software Design II
Presentation transcript:

Design Patterns Trends and Case Study John Hurst June 2005

Overview Software Patterns Design Patterns Topics Case Study / Examples

Introduction Christopher Alexander –A Pattern Language: Towns, Buildings, Construction (1977) –A Timeless Way of Building (1979) “Gang of Four” (Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides) –Design Patterns (1995) Buschmann et al –Pattern Oriented Software Construction (1996)

Key Idea A Software Pattern is: –A solution –To a problem –In a context –With consequences A Software Pattern has a name and a vocabulary.

Pattern Languages Intent Also Known As Motivation Applicability Structure Participants Collaborations Consequences Implementation Known Uses Related Patterns

OO Design Principles Code to interfaces Prefer composition to inheritance Encapsulate what varies

Benefits Improves thinking about OO design –New designs –Existing designs –Helps us realise the benefits of OO Reuse of solutions to common problems –Catalogs Communication tool –Common vocabulary

Example: Iterator Intent: –Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation

Example: Decorator Intent: –Attach additional responsibilities to an object dynamically. Decorators provide a flexible alternative to subclassing for extending functionality.

Application of Decorator Apache Commons DBCP (Database Connection Pooling)

Patterns Landscape Architectural Patterns Analysis Patterns Design Patterns

“Platform Patterns” J2EE Core Patterns MS Building Blocks Contrast with PEAA

Antipatterns Examples –Big Ball Of Mud –Copy and Paste Programming –Magic Container –Tower of Voodoo

Broken Patterns Double checked locking “Deprecated” Patterns: –Factory Method (due to confusion over what it means) –Bridge –Flyweight –Interpreter

Specialised Fields Real-time Concurrency Enterprise Messaging Analysis

Refactoring to Patterns Remove duplicate code Simplify logic Communicate intention Increase flexibility

Pattern Happy

Patterns with Programming Languages Strategy –C++ templates: static type checking –Java interfaces and objects: runtime configuration –Ruby/Smalltalk blocks: idiomatic usage

Case Study: HHRDM Design Patterns Architectural Patterns Analysis Patterns

Design Patterns Abstract Factory Template Method Strategy Façade Proxy

Architectural Patterns Layering Data Access Patterns Domain Model Service Façade

Analysis Patterns Temporal Patterns –Effectivity –Snapshot –Temporal Object –Temporal Property –Audit Trail –Bitemporal Model

References Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides Design Patterns: Elements of Reusable Object-Oriented Software – Addison-Wesley 1995 Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal Pattern-Oriented Software Architecture Wiley 1996 Martin Fowler Patterns of Enterprise Application Architecture – Addison-Wesley 2002 Martin Fowler Refactoring – Addison-Wesley 2000 Martin Fowler Analysis Patterns – Addison Wesley 1996 Gregor Hohpe, Bobby Woolfe Patterns of Enterprise Application Integration – Addison-Wesley 2003 Joshua Kerievsky Refactoring to Patterns – Addison-Wesley 2004 Deepak Alur, John Crupi, Dan Malks Core J2EE Patterns (2 nd Ed) – Addison-Wesley 2003

Web Sites Martin Fowler website Portland Pattern Repository TheServerSide Microsoft Patterns and Practices /patterns/ /patterns/

Relationships and Similarities ProxyDecorator Many patterns look similar structurally, but have different intent

The Agile Manifesto Preferences: –Inidividuals and interactions over processes and tools –Working software over comprehensive documentation –Customer collaboration over contract negotiation –Responding to change over following a plan