Patterns in a Nutshell



Similar documents
Introduction. Observation Patterns. Accounting Patterns. How to use Patterns

CHAPTER 4: PATTERNS AND STYLES IN SOFTWARE ARCHITECTURE

Ontological Representations of Software Patterns

Encapsulating Crosscutting Concerns in System Software

Pattern. seconda parte. Types of patterns. ...other good guidance... some GRASP. design patterns (software design) Types of software patterns

Software Refactoring using New Architecture of Java Design Patterns

Chapter 3 Chapter 3 Service-Oriented Computing and SOA Lecture Note

A Process View on Architecture-Based Software Development

Architectural Patterns (3)

Excerpts from Chapter 4, Architectural Modeling -- UML for Mere Mortals by Eric J. Naiburg and Robert A. Maksimchuk

A Review of an MVC Framework based Software Development

Xtreme RUP. Ne t BJECTIVES. Lightening Up the Rational Unified Process. 2/9/2001 Copyright 2001 Net Objectives 1. Agenda

The JWAM Framework: Inspired By Research, Reality-Tested By Commercial Utilization

Using MDA in Web Software Architectures

Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering

Research Topics in Software Engineering

An MDA Approach for the Development of Web applications

Maturity Assessments of Service- oriented Enterprise Architectures with Iterative Pattern Refinement

Understanding Architectural Assets

Chap 1. Introduction to Software Architecture

APLRAC: A PATTERN LANGUAGE FOR DESIGNING AND IMPLEMENTING ROLE-BASED ACCESS CONTROL

The Oregon Software Development Process

A methodology for secure software design

Design Pattern Management System: A Support Tool Based on Design Patterns Applicability

Deployment Pattern. Youngsu Son 1,JiwonKim 2, DongukKim 3, Jinho Jang 4

Génie Logiciel et Gestion de Projets. Patterns

A Pattern System for Network Management Interfaces

Refactoring Software, Architectures, and Projects in Crisis

Jenerator Generative Programming for Java

A First Set of Design Patterns for Algorithm Animation

Technical Guide. Security Design Patterns. by Bob Blakley, Craig Heath, and members of The Open Group Security Forum.

The Command Dispatcher Pattern

Software Architecture and Patterns for Electronic Commerce Systems

I219 Software Design Methodology

Evaluating OO-CASE tools: OO research meets practice

Teaching Software Engineering Through Game Design

DEGREE CURRICULUM SOFTWARE ARCHITECTURES Degree in Computer Engineering. Teaching staff: GIL IRANZO, ROSA MARIA GARCIA GONZALEZ, ROBERTO

GenericServ, a Generic Server for Web Application Development

A Confederation of Patterns for Resource Management

Broker Revisited Michael Kircher, Markus Voelter, Klaus Jank, Christa Schwanninger, Michael Stal

Design Patterns. Design patterns are known solutions for common problems. Design patterns give us a system of names and ideas for common problems.

Patterns in Software Engineering

Notes on Computer Game Design Innovation with Patterns

Analysis Patterns in Dimensional Data Modeling

Applying Design Patterns in Distributing a Genetic Algorithm Application

IES - Introduction to Software Engineering

ET++SwapsManager: Using Object Technology in the Financial Engineering Domain

Towards Patterns to Enhance the Communication in Distributed Software Development Environments

Name of pattern types 1 Process control patterns 2 Logic architectural patterns 3 Organizational patterns 4 Analytic patterns 5 Design patterns 6

Structuring Product-lines: A Layered Architectural Style

Design Patterns for Complex Event Processing

SAPM Overview. Semester Summary. Project management. Tools (1) Dr. James A. Bednar

On the Agile Development of Virtual Reality Systems

Design Patterns. Advanced Software Paradigms (A. Bellaachia) 1

Quality Ensuring Development of Software Processes

Design Patterns for Safety-Critical Embedded Systems

MANAGEMENT S ROLE 1/16/ Copyright 2001, Net Objectives

A Study of Extreme Programming in a Large Company

REST Client Pattern. [Draft] Bhim P. Upadhyaya ABSTRACT

Manager-Agent and Remote Operation: Two Key Patterns for Network Management Interfaces

DC2AP: A Dublin Core Application Profile to Analysis Patterns

STRATEGY PATTERN: PAYMENT PATTERN FOR INTERNET BANKING

Agile Software Development in the Large

Transcription:

Patterns in a Nutshell http://www.enteract.com/~bradapp/

January 27, 1998 Patterns in a Nutshell Page 2 of 12 Trendy: Literary: 1.0 What are Patterns? Recent hot topic, OOD buzzword, lots of hype! Form of software engineering problem-solving documentation Pragmatic: Describe practical solutions to real world problems Recurring: Generative: Emergent: Identify good design structures which recur in practice Show how and when to apply the solution, and generate the desired design structure Larger solutions emerge indirectly from applying patterns in succession, and in concert together

January 27, 1998 Patterns in a Nutshell Page 3 of 12 2.0 Pattern Origins and History Writings of architect Christopher Alexander (coined this use of the term pattern ca. 1977-1979) Documentation of best practices and handbooks for engineering and architecture Literate programming (Don Knuth), ca. 1984 Kent Beck and Ward Cunningham, Tektronix, OOPSLA 87 (used Alexander s pattern ideas for Smalltalk GUI design) Erich Gamma, Ph.D. thesis, 1988-1991 James Coplien, Advanced C++ Idioms Book, 1989-1991 Gamma, Helm, Johnson, Vlissides, ( Gang of Four ) Object-Oriented Design Patterns book, 1991-1994 PLoP Conferences and books, 1994-present

January 27, 1998 Patterns in a Nutshell Page 4 of 12 A pattern is... 3.0 Pattern Definitions An abstraction from a concrete form which keeps recurring in specific, non-arbitrary contexts. [generic definition] A recurring solution to a common problem in a given context and system of forces. [Alexander] A named nugget of instructive insight, conveying the essence of a proven solution to a recurring problem in a given context amidst competing concerns. A successfully recurring best practice that has proven itself in the trenches. A literary format for capturing the wisdom and experience of expert designers, and communicating it to novices

January 27, 1998 Patterns in a Nutshell Page 5 of 12 4.0 Kinds of Software Patterns Design Patterns (software design; often object-oriented): - architecture (systems design) - design (component interactions) - programming idioms (language-specific techniques/style) Analysis Patterns (recurring & reusable analysis models) Organization Patterns (structure of organizations/projects) Process Patterns (software process design) Domain-Specific: Any other domain you can think of!

January 27, 1998 Patterns in a Nutshell Page 6 of 12 5.0 Pattern Elements Name - a meaningful conceptual handle for discussion Context - tells how the problem occurs / when the solution works Problem - statement of the problem / intent of the solution Forces - trade-offs, goals+constraints, motivating factors/concerns - tells why the problem is difficult Solution - tells how to generate the solution - the solution structure, its participants & collaborations

January 27, 1998 Patterns in a Nutshell Page 7 of 12 6.0 Pattern Elements (cont.) Examples (optional) Resulting Context - describes the end result, benefits and consequences - shows how the forces were balanced/traded-off - tells how the solution works out Rationale (optional) - underlying principles/heuristics justifying the solution - tells underpinnings of why the solution works out Related Patterns - patterns which are similar, or may precede/follow this one Known Uses - 3 or more independent instances of real world success

January 27, 1998 Patterns in a Nutshell Page 8 of 12 7.0 Why Patterns? Software Patterns help us because they: Solve real world problems Capture domain expertise Document design decisions and rationale Reuse wisdom and experience of master practitioners Convey expert insight to novices Form a shared vocabulary for problem-solving discussion Show more than just the solution: - context (when and where) - forces (trade-off alternatives, misfits, goals+constraints) - resolution (how and why the solution balances the forces)

January 27, 1998 Patterns in a Nutshell Page 9 of 12 8.0 Summary - What Patterns Are Not Software Patterns are not... Restricted to software design or Object-Oriented design Untested ideas/theories or new inventions Solutions that have worked only once Any old thing written-up in pattern format Abstract principles or heuristics Universally applicable for all contexts A silver bullet or panacea

January 27, 1998 Patterns in a Nutshell Page 10 of 12 9.0 Summary - What Patterns Are Software Patterns are... Recurring solutions to common problems of design Practical/concrete solutions to real world problems Context specific Best-fits for the given set of concerns/trade-offs Old hat to seasoned professionals and domain experts A literary form for documenting best practices A shared vocabulary for problem-solving discussions An effective means of (re)using, sharing, and building upon existing wisdom/experience/expertise Massively overhyped!

January 27, 1998 Patterns in a Nutshell Page 11 of 12 10.0 Pattern Resources - Books A Pattern Language: Towns, Buildings, Construction (APL) Christopher Alexander; Oxford University Press, 1977 The Timeless Way of Building (TTWoB) Christopher Alexander; Oxford University Press, 1979 Design Patterns: Elements of Reusable Object-Oriented Software (GoF) Gamma, Helm, Johnson, Vlissides; Addison-Wesley, 1994 Pattern-Oriented Software Architecture: A System of Patterns (POSA) Buschmann, Meunier, Rohnert, Sommerlad, Stal; Wiley and Sons, 1996 Pattern Languages of Program Design (PLoPD1) Coplien and Schmidt (editors); Addison-Wesley, 1995 Patterns of Software: Tales from the Software Community Richard Gabriel; Oxford University Press, 1996 Analysis Patterns: Reusable Object Models Martin Fowler; Addison-Wesley, 1996 Pattern Languages of Program Design 2 (PLoPD2) Vlissides, Coplien, and Kerth (editors); Addison-Wesley, 1996

January 27, 1998 Patterns in a Nutshell Page 12 of 12 11.0 Pattern Resources - Online Patterns Home Page, http://www.hillside.net/patterns/ Patterns Discussion FAQ, http://g.oswego.edu/dl/pd-faq/pd-faq.html Ward Cunningham s WikiWikiWeb, http://c2.com/cgi/wiki?welcomevisitors Portland Pattern Repository, http://www.c2.com/pp/ AGCS Patterns Page, http://www.agcs.com/patterns/ Jim Coplien s OrganizationPatterns Front Page (a WikiWikiWeb clone), http://www.www.bell-labs.com/cgi-user/orgpatterns/orgpatterns Patterns Mailing Lists, http://www.hillside.net/patterns/lists.html Cetus Links: Patterns, http://www.objenv.com/cetus/oo_patterns.html Brad s Pattern Links: http://www.enteract.com/~bradapp/links/sw-pats.html Brad s Patterns Intro: http://www.enteract.com/~bradapp/docs/patterns-intro.html Luke Hohmann s Patterns Intro: http://members.aol.com/lhohmann/papers.htm Doug Lea s OOD Patterns Intro: http://gee.cs.oswego.edu/dl/ca/ca/ca.html