An Introduction to Patterns

Slides:



Advertisements
Similar presentations
GRASP: Designing Objects with Responsibilities
Advertisements

Extreme Programming Alexander Kanavin Lappeenranta University of Technology.
Fearless Change: Patterns for Introducing New Ideas Mary Lynn Manns, Ph.D. Linda Rising, Ph.D.
Object-Oriented Design Patterns Composite Singleton State Observer … Autumn 2012UCN Technology: IT/Computer Science1.
Introduction to Design Patterns (1). “ In software engineering, a design pattern is a general reusable solution to a commonly occurring problem in software.
Ralph Johnson - University of Illinois1 Patterns: What They Are, and How to Write Them Ralph Johnson University of Illinois at Urbana-Champaign
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
1 PH Chapter 1 (pp. 1-10) GoF Composite Pattern (pp ) PH Ch 2 through Fundamentals (pp ) Presentation by Julie Betlach 5/28/2009.
Chapter 7 GRASP patterns Dr Seham Mostefai CAP 252.
Session 05: C# Patterns Algorithm Patterns: Sweep Search FEN AK IT: Softwarekonstruktion.
Introduction to Design Patterns (1). Definition: “ In software engineering, a design pattern is a general reusable solution to a commonly occurring problem.
Introducing Patterns (or any new idea) into Organizations Linda RisingMary Lynn MannsAlan O’Callaghan.
Chapter Five An Introduction to Design Patterns Ku-Yaw Chang Assistant Professor, Department of Computer Science and Information.
BTS430 Systems Analysis and Design using UML Design Patterns.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 27. Review UML dynamic view – State Diagrams.
Mary Lynn Manns University of North Carolina at Asheville SMA 2009 November, 2009.
Fear Less and other Patterns for Introducing New Ideas into Organizations Linda Rising
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Design Patterns IX Interpreter, Mediator, Template Method recap.
Coaches With Clients presents... “The Rapid Coaching Academy: Professional Coach Training System…” Session #7: Mastering Your Psychology, Part 1.
Requirements Management with Use Cases Module 3: Analyze the Problem Requirements Management with Use Cases Module 3: Analyze the Problem.
CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A.
CPSC 871 John D. McGregor Process – an introduction Module 0 Session 3.
Design Patterns in Context ©SoftMoore ConsultingSlide 1.
Sakai UI Design Patterns Design Patterns WG 12-Jun-2007, 14:05 Marc Brierley.
1 Good Object-Oriented Design Dr. Radu Marinescu Lecture 4 Introduction to Design Patterns.
AnimDezire ​ Pvt.Ltd: An Introduction A Best web design company IndiaBest web design company India.
1 Advanced Computer Programming Project Management: Basics Copyright © Texas Education Agency, 2013.
Making Code Kevin Dill Group Technical Staff Lockheed Martin Mission Systems & Training.
Technical Communication: Concepts and Features
Review of last class Software Engineering Modeling Problem Solving
GRASP – Designing Objects with Responsibilities
Chapter 1- Introduction
Resolving Conflict What is conflict? How do we react to conflict?
Top Ten List for Directors of Technology
Intentional Leadership
The Object-Oriented Thought Process Chapter 15
Introduction to Design Patterns
Design Patterns Introduction
CMPE 135: Object-Oriented Analysis and Design October 24 Class Meeting
Distributed web based systems
INFS 3500 Martin, Brad, and John
Objects First with Java A Practical Introduction using BlueJ
Software Engineering Lecture 7 - Design Patterns
Web Programming Language
Mediator Design Pattern (Behavioral)
Twelve Quick Quizzes Revised from Eva Shaw’s “Write Your Life Story” for Dr. R. Ramos’ ENGL 2307 Creative Writing I: Life Writing Fall 2016.
Pattern-Oriented Cluster: Comp 630/650/655
Pattern-Oriented Cluster: Comp 630/650/655
Design Model Like a Pyramid Component Level Design i n t e r f a c d s
DESIGNING YOUR SYSTEM.
Market Research.
Give 5 facts about having a positive attitude
Introducing Patterns (or any new idea) into Organizations
DESIGN PATTERNS : Introduction
Intentional Leadership
Objects First with Java A Practical Introduction using BlueJ
Tonga Institute of Higher Education IT 141: Information Systems
Pattern-Oriented Cluster: Comp 630/650/655
CMPE 135 Object-Oriented Analysis and Design March 21 Class Meeting
Active Listening Day #1 Intro to Leadership CS 302 Lesson
Introduction to Design Patterns
Core Competencies for Primary School Teachers in Crisis Contexts
Strategies for Interdisciplinary Working
Objects First with Java A Practical Introduction using BlueJ
Introduction to Design Patterns
Human Computer Interaction Lecture 14 HCI in Software Process
Software Design Lecture : 27.
Core Competencies for Primary School Teachers in Crisis Contexts
Design an Addition for your School
Bell Work Describe a situation in which you may want to plan out what you are going to say ahead of time.
Presentation transcript:

An Introduction to Patterns Linda Rising risingl@acm.org www.lindarising.org

Patterns for Software Design Patterns - OOPSLA ’94 GoF – Gang of Four 23 patterns for object-oriented design Still the best place to start

Alexander’s Definition Each pattern describes a problem that 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. Alexander - building architect and author The Timeless Way of Building A Pattern Language

Small Meeting Rooms The larger meetings are, the less people get out of them. But institutions often put their money and attention into large meeting rooms and lecture halls. It has been shown that the number of people in a group influences both the number who never talk, and the number who feel they have ideas which they have not been able to express. There is no particularly natural threshold for group size; but it is clear that the number who never talk climbs very rapidly [with group size]. In a group of 12, one person never talks. In a group of 24, there are 6 people who never talk. Make at least 70% of all meeting rooms really small -- for 12 people or less. Locate them in the most public parts of the building, evenly scattered among the workplaces. See: Light on Two Sides of Every Room, Sitting Circle, Different Chairs, Pools of Light, The Shape of Indoor Space

Small Meeting Rooms DED 10/4/1999

The Quality without a Name There is a central quality which is the root criterion of life and spirit in [all things]. This quality is objective and precise, but it cannot be named. ... The search which we make for this quality, in our own lives, is the central search of any person, ... . It is the search for those moments and situations when we are most alive. http://www.math.utsa.edu/sphere/salingar/NatureofOrder.html http://www.sunlighthomes.com/t.patlang.html

Why are Patterns Important? Patterns provide an incredibly dense means of efficient and effective communication between those who know the language. Nate Kirby Human communication is the bottleneck in software development. If [patterns] can help [developers] communicate with their clients, their customers, and each other, then [patterns] help fill a crucial need in [our industry]. Jim Coplien Patterns don’t give you code you can drop into your application, they give you experience you can drop into your head. Patrick Logan Giving someone a piece of code is like giving him a fish; giving him a pattern is like teaching him to fish. Don Dwiggins

Reuse Benefits Mature engineering disciplines have handbooks of solutions to recurring problems. All certified professional engineers in these fields have been trained in the contents of these handbooks. In an experiment, teams of leading heart surgeons from five New England medical centers observed one another’s operating room practices and exchanged ideas about their most effective techniques. The result? A 24% drop in their overall mortality rate for coronary bypass surgery = 74 fewer deaths than predicted.

What I Used to Think In the beginning of the patterns movement (late 1994), I used to think that patterns would have impact because they would provide innovative, unusual solutions that would “solve all our problems” but now I see that patterns have impact because they capture what works and the pattern form helps us remember that. In many cases, the pattern that “solves all our problems” is something simple, like Mediator.

The Mediator Story We had a collection of classes. Each managed a connection with a process or device. Protocols for the connections varied. Before attempting a connection, some objects had to wait until other objects had established a connection. The interactions could be very complicated. A mediator object controls and coordinates the interactions. The mediator object prevents colleague objects from referring to each other explicitly. Colleagues communicate only with the mediator.

Mediator Define an object that encapsulates how a set of objects interact.

Mediator Example The control tower at an airport provides a central point of communication for aircraft in the terminal area. Constraints on terminal area airspace are maintained by the tower. With the centralized communication and constraint maintenance, the tower behaves as a mediator object. ATC Mediator Flight 111 Flight 1011 Flight 112 Flight 747

Now – Lots of Other Patterns Patterns are not just: About architecture Object-Oriented About software Patterns are also about: System Test Customer Interaction Risk Management Organization and Process ...

Introducing New Ideas Mary Lynn Manns and Linda Rising www.cs.unca.edu/~manns/intropatterns.html Important topics: food, fear, greed, … Book due out September 2004

More Pattern Information Mike Duell’s non-software examples http://www.agcs.com/supportv2/techpapers/patterns/papers Patterns Listservers http://hillside.net/patterns/mailing.htm Wiki Wiki Web http://c2.com/cgi/wiki Home pages for Jim Coplien, Doug Schmidt, Doug Lea, and others http://www.agcs.com/supportv2/techpapers/patterns/ Patterns for introducing patterns http://www.cs.unca.edu/~manns/intropatterns.html

More Pattern URLs Robert C. Martin’s Chess Analogy http://www.cs.wustl.edu/~schmidt/cs242/learning.html John Vlissides' "Top 10 Misconceptions" http://www.research.ibm.com/designpatterns/pubs/top10misc.html Linda Rising's QWAN in software http://members.home.net/risingl1/risingl1/articles/goodsoft.htm Seven Habits of Successful Pattern Writers http://hillside.net/patterns/papers/7habits.html Brad Appleton's "Patterns in a Nutshell" http://www.enteract.com/~bradapp/docs/patterns-nutshell.html

What Patterns are About Sharing experience. Everyone can contribute. Everyone can learn from others. Instead of inventing new ideas, patterns capture what has been successful in the past. Successful developers resolve challenges by applying patterns, whether they are aware of it or not. Traditionally, these patterns have been locked in the minds of experts. The primary contribution of the patterns community is to capture, document, and refine these patterns so we can all benefit. Doug Schmidt