SlideShare une entreprise Scribd logo
1  sur  15
PLoP® Pattern Writing Bootcamp 2009
                                       Chicago, IL




                Robert Hanmer hanmer@alcatel-lucent.com
                       Linda Rising risingl@acm.org




August 27, 2009 - 1

                            PLoP is a registered Trademark of The Hillside Group.




                                          Agenda

                              Introductions
                              Pattern Basics
                           Writers Workshops
                           Pattern Languages
                           Brainstorm architecture
                               Write patterns!
                             Workshop patterns
                      Summary, de-brief, plan next meeting

August 27, 2009 - 2




                         Copyright © 2007-2009. Alcatel-Lucent.

                                                                                    1
Part 1: Pattern Basics




  August 27, 2009 - 3




                          Patterns

• “The pattern is, in short, at the same time a thing, which
  happens in the world, and the rule which tells us how to create
  that thing, and when we must create it. It is both a process and
  a thing; both a description of a thing which is alive, and a
  description of the process which will generate that thing.”
                       -- Christopher Alexander,
                          The Timeless Way of Building




  August 27, 2009 - 4




                        Copyright © 2007-2009. Alcatel-Lucent.

                                                                     2
Christopher Alexander

• Building architect and theorist
• Many books on architecture and art:
  A Pattern Language
  The Timeless Way of Building
  The Oregon Experiment
  The Production of Houses
  A Foreshadowing of 21st Century Art -- The Color and
      Geometry of Very Early Turkish Carpets
  The Nature of Order (4 volumes)

• http://www.livingneighborhoods.org

   August 27, 2009 - 5




              The Quality Without A ame

• “There is a central quality which is the root criterion of life and
  spirit in a man, a town, a building, or a wilderness. This
  quality is objective and precise, but it cannot be named.”
                  – Alexander, The Timeless Way of Building



• (“but with an acronym” -- Joe Davison)




   August 27, 2009 - 6




                              Copyright © 2007-2009. Alcatel-Lucent.

                                                                        3
What is a Pattern?

• Rule of 3
• More than an algorithm
• “At the same time, a thing that happens in the world … and the
  rules to make that thing …”




    August 27, 2009 - 7




                             Patterns Will ot:

•   … make you an instant expert
•   … provide a “turn the crank” approach to software
•   … eliminate the need for intelligence and taste
•   … make you rich and famous
     – unless you become a snake oil salesman
• … generate code
                          • Paul S. R. Chisholm, AT&T 10/94




    August 27, 2009 - 8




                                  Copyright © 2007-2009. Alcatel-Lucent.

                                                                           4
Part 2: A Pattern’s Parts




     August 27, 2009 - 9




                           Parts of a Pattern

•   Name
•   Context
•   Statement of the Problem
•   Forces
•   Resolution/Solution
•   Sketch
•   Resulting Context
•   Authorship information
•   (and some optional parts)


    August 27, 2009 - 10




                              Copyright © 2007-2009. Alcatel-Lucent.

                                                                       5
Context

•   Where does the problem exist?
•   What are the relevant preconditions?
•   What are the patterns that this pattern helps resolve?
•   Who is the target audience?
•   What are the constraints on the system that you cannot change
    or control?
       – Language choice
       – Memory space
       – etc.




    August 27, 2009 - 11




                      Statement of the Problem

• What is the problem being solved?
• What’s wrong in the current environment?




    August 27, 2009 - 12




                            Copyright © 2007-2009. Alcatel-Lucent.

                                                                     6
Forces

•   What makes this a hard problem?
•   What are the tradeoffs?
•   Why aren’t the obvious solutions sufficient?
•   What are the constraints upon the system over which you have
    some control?




    August 27, 2009 - 13




                           Resolution/Solution

• Succinctly state the action that the reader should take to resolve
  the problem
• Build upon the forces and customize
• Be specific
• Ensure that the resolution resolves the stated problem – try
  reading them out loud, one after the other




    August 27, 2009 - 14




                              Copyright © 2007-2009. Alcatel-Lucent.

                                                                       7
Sketch

• “If you can’t draw a diagram of it, it isn’t a pattern.”
                  – Alexander, TTWOB, p 267.



• Sketch What?
     – Whatever will help convey the ideas to the reader.
            •   UML diagrams
            •   Block diagram
            •   Image of a concrete example
            •   etc.




  August 27, 2009 - 15




                         Resulting Context

• What does the environment look like after the
  resolution/solution has been applied?
• What new problems have been introduced?
• What patterns will resolve the new problems?
• This is a good place for war stories and anecdotes




  August 27, 2009 - 16




                             Copyright © 2007-2009. Alcatel-Lucent.

                                                                      8
Author

• Intellectual Currency
     – Ideas are worth more if given away.
     – We want to be able to give credit where credit is due
• Identify the author
• Identify the revision history
     – Patterns evolve
            • As our understanding grows
            • As they are workshoped and improved by reader feedback


• Acknowledgements for shepherds, members of writers’
  workshops and others that helped you shape the pattern

  August 27, 2009 - 17




                                 ame

• Choose with care – initially make a list of AKAs
• Many views on what form the title should take
     – Noun Phrase- Corporate Sponsor, Model View Controller
     – Verb Phrase- Do Food, Shift to Multiply
     – Catchy Phrase- George Washington is still Dead
• It will be part of a vocabulary or language
• Choose with care




  August 27, 2009 - 18




                           Copyright © 2007-2009. Alcatel-Lucent.

                                                                       9
Other Sections

•   Rationale
•   Sample Code
•   Related Patterns
•   Known Implementations
•   References




    August 27, 2009 - 19




                           Part 3: Writers Workshops




    August 27, 2009 - 20




                             Copyright © 2007-2009. Alcatel-Lucent.

                                                                      10
Writers’ Workshops

• Structured discussion of the merits and suggestions for
  improvement
• “Criticism” is not welcome -- only suggestions for
  improvement.
     – “I suggest the author add a reference to the paper by Beck and Auer in
       the Context as it will help establish how their works complement each
       other.”
• Praise is always welcome
     – What people like about a pattern is very important.
• Author is present for note taking but does not participate except
  at very specific times.
• Strong moderation.

  August 27, 2009 - 21




                         Writers’ Workshops

• Jim Coplien has published a pattern language for Writers’
  Workshops.
     – PLOPD4, chapter 25
     – http://users.rcn.com/jcoplien/Patterns/WritersWorkshop/
     – He (and co-author/shepherd Bobby Woolf) delve into the reasons
       behind way that Writers’ Workshops are structured.




  August 27, 2009 - 22




                            Copyright © 2007-2009. Alcatel-Lucent.

                                                                                11
Writers’ Workshops
•   Moderator introduces pattern and the author(s)/editor(s)
•   The author stands and reads a short (1-4 sentence) excerpt of the paper
•   The author becomes a “fly on the wall”
       – Avoid eye contact with the author
       – The author is referred to as “the author”, NOT by name
•   A participant summarizes the pattern
•   Discuss the positive aspects of the paper
       – What should be kept in the next revision
       – What the readers found especially appealing
•   Offer suggestions for improvement.
•   Welcome the author back
       – Author thanks the group
       – This is not an opportunity to debate or explain the pattern
       – Author may only ask clarifying questions
•   Everyone (except author) stands and thank the author for the opportunity to
    workshop the work.
•   Take a different seat and tell an unrelated story.
    August 27, 2009 - 23




                            Part 4: Pattern Languages




    August 27, 2009 - 24




                              Copyright © 2007-2009. Alcatel-Lucent.

                                                                                  12
Pattern Languages

• Individual patterns are useful, but . . .
• they are most powerful when combined into a language

• “Each pattern then, depends both on the smaller patterns it
  contains, and on the larger patterns within which it is
  contained.”
                              Alexander, TTWOB, p 312.




  August 27, 2009 - 25




                         Pattern Languages

• Individual Patterns are good
     – No individual pattern balances all the tradeoffs.
• To address real sized problems, languages are really essential
• A language is a collection of patterns that work together.
• Within a pattern language the patterns build upon each other,
  resolving unbalanced forces from previous patterns.




  August 27, 2009 - 26




                            Copyright © 2007-2009. Alcatel-Lucent.

                                                                     13
Pattern Languages (cont.)

• Pattern languages must be complete in two ways
     – Morphologically
            • Patterns fit together to form a complete structure without gaps.
     – Functionally
            • Any new forces introduced by the patterns are resolved by the patterns
              themselves.


• If they are not complete in these ways we refer to them as a
  “collection”
     – The GOF and POSA books are collections




  August 27, 2009 - 27




               Example Pattern Languages:
• Alexander’s Garden
     – The only known pattern language diagram from Alexander




                                                     From The Timeless Way of Building
  August 27, 2009 - 28




                            Copyright © 2007-2009. Alcatel-Lucent.

                                                                                         14
Another Example

• Telecommunications I/O




                                                                   From PLOPD4

   August 27, 2009 - 29




                          Selected Bibliography
A Pattern Language. Alexander et. Al. New York: Oxford University Press, 1977.
Design Patterns - Elements of Reusable Object-Oriented Software. Gamma, Helm,
    Johnson and Vlissides (The “Gang of Four”). Reading, MA: Addison-Wesley,
    1995.
Pattern Oriented Software Architecture. Buschmann, Meunier, Rohnert, Sommerlad and
    Stal. Chichester, UK: Wiley & Sons, 1996.
Pattern Oriented Software Architecture, Vol. 2. Schmidt, Stal, Rohnert, Buschmann.
    Chichester, UK: Wiley & Sons, 2000.
PLOPD – PLOPD5: Pattern Languages of Program Design, volumes 1-5. Various
    editors. Reading, MA: Addison-Wesley, 1995-2006.
The Pattern Handbook. Rising, ed. Cambridge: Cambridge University Press, 1998.
PLoP Conference Proceedings: http://hillside.net/plop/
The Pattern Almanac 2000. Rising. Reading, MA: Addison-Wesley, 2000.
Fearless Change. Manns and Rising. Reading, MA: Addison-Wesley, 2004.
The Timeless Way of Building. Alexander. New York: Oxford University Press, 1979.

For more books: http://hillside.net/patterns/books/index.htm
   August 27, 2009 - 30




                               Copyright © 2007-2009. Alcatel-Lucent.

                                                                                     15

Contenu connexe

Similaire à Intro to-patterns-linda-rising[1]

Agile Engineering for Managers Workshop
Agile Engineering for Managers WorkshopAgile Engineering for Managers Workshop
Agile Engineering for Managers WorkshopPaul Boos
 
CEN6016-Chapter1.ppt
CEN6016-Chapter1.pptCEN6016-Chapter1.ppt
CEN6016-Chapter1.pptNelsonYanes6
 
OSCON 2007: Open Design, Not By Committee
OSCON 2007: Open Design, Not By CommitteeOSCON 2007: Open Design, Not By Committee
OSCON 2007: Open Design, Not By CommitteeTed Leung
 
Hanmer Software Patterns Bosc2009
Hanmer Software Patterns Bosc2009Hanmer Software Patterns Bosc2009
Hanmer Software Patterns Bosc2009bosc
 
3AMIGAS - Paper2: Tim Tutenel
3AMIGAS - Paper2: Tim Tutenel3AMIGAS - Paper2: Tim Tutenel
3AMIGAS - Paper2: Tim TutenelFOCUS K3D
 
Rule-based Layout Solving and Its Application to Procedural Interior Generation
Rule-based Layout Solving and Its Application to Procedural Interior GenerationRule-based Layout Solving and Its Application to Procedural Interior Generation
Rule-based Layout Solving and Its Application to Procedural Interior GenerationWolfgang Hürst
 
Design Patterns Summer Course 2009-2010 - Session#1
Design Patterns Summer Course 2009-2010 - Session#1Design Patterns Summer Course 2009-2010 - Session#1
Design Patterns Summer Course 2009-2010 - Session#1Muhamad Hesham
 
Hands on puremvc
Hands on puremvcHands on puremvc
Hands on puremvcdiomampo
 
Semantic Web - Ontology 101
Semantic Web - Ontology 101Semantic Web - Ontology 101
Semantic Web - Ontology 101Luigi De Russis
 
History of Object Orientation in OOP.ppt
History of Object Orientation in OOP.pptHistory of Object Orientation in OOP.ppt
History of Object Orientation in OOP.pptathar549116
 
History of Object Orientation in OOP.ppt
History of Object Orientation in OOP.pptHistory of Object Orientation in OOP.ppt
History of Object Orientation in OOP.pptMuhammad Athar
 
Introduction to java
Introduction to javaIntroduction to java
Introduction to javaAhmed Abbadi
 
Teaching Experiences
Teaching ExperiencesTeaching Experiences
Teaching ExperiencesESUG
 

Similaire à Intro to-patterns-linda-rising[1] (20)

5-CEN6016-Chapter1.ppt
5-CEN6016-Chapter1.ppt5-CEN6016-Chapter1.ppt
5-CEN6016-Chapter1.ppt
 
Agile Engineering for Managers Workshop
Agile Engineering for Managers WorkshopAgile Engineering for Managers Workshop
Agile Engineering for Managers Workshop
 
CEN6016-Chapter1.ppt
CEN6016-Chapter1.pptCEN6016-Chapter1.ppt
CEN6016-Chapter1.ppt
 
CEN6016-Chapter1.ppt
CEN6016-Chapter1.pptCEN6016-Chapter1.ppt
CEN6016-Chapter1.ppt
 
OSCON 2007: Open Design, Not By Committee
OSCON 2007: Open Design, Not By CommitteeOSCON 2007: Open Design, Not By Committee
OSCON 2007: Open Design, Not By Committee
 
Hanmer Software Patterns Bosc2009
Hanmer Software Patterns Bosc2009Hanmer Software Patterns Bosc2009
Hanmer Software Patterns Bosc2009
 
3AMIGAS - Paper2: Tim Tutenel
3AMIGAS - Paper2: Tim Tutenel3AMIGAS - Paper2: Tim Tutenel
3AMIGAS - Paper2: Tim Tutenel
 
Rule-based Layout Solving and Its Application to Procedural Interior Generation
Rule-based Layout Solving and Its Application to Procedural Interior GenerationRule-based Layout Solving and Its Application to Procedural Interior Generation
Rule-based Layout Solving and Its Application to Procedural Interior Generation
 
Lab%201
Lab%201Lab%201
Lab%201
 
Lab 1
Lab 1Lab 1
Lab 1
 
Design Patterns Summer Course 2009-2010 - Session#1
Design Patterns Summer Course 2009-2010 - Session#1Design Patterns Summer Course 2009-2010 - Session#1
Design Patterns Summer Course 2009-2010 - Session#1
 
Hands on puremvc
Hands on puremvcHands on puremvc
Hands on puremvc
 
Semantic Web - Ontology 101
Semantic Web - Ontology 101Semantic Web - Ontology 101
Semantic Web - Ontology 101
 
History of Object Orientation in OOP.ppt
History of Object Orientation in OOP.pptHistory of Object Orientation in OOP.ppt
History of Object Orientation in OOP.ppt
 
History of Object Orientation in OOP.ppt
History of Object Orientation in OOP.pptHistory of Object Orientation in OOP.ppt
History of Object Orientation in OOP.ppt
 
Introduction to java
Introduction to javaIntroduction to java
Introduction to java
 
Chapter 1.ppt
Chapter 1.pptChapter 1.ppt
Chapter 1.ppt
 
Design Patterns.ppt
Design Patterns.pptDesign Patterns.ppt
Design Patterns.ppt
 
Teaching Experiences
Teaching ExperiencesTeaching Experiences
Teaching Experiences
 
Howtowrite copia
Howtowrite copiaHowtowrite copia
Howtowrite copia
 

Plus de YoungSu Son

Fault Tolerance 패턴
Fault Tolerance 패턴 Fault Tolerance 패턴
Fault Tolerance 패턴 YoungSu Son
 
Clean Code, Software Architecture, Performance Tuning
Clean Code, Software Architecture, Performance TuningClean Code, Software Architecture, Performance Tuning
Clean Code, Software Architecture, Performance TuningYoungSu Son
 
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화YoungSu Son
 
Prototype 패턴 (심만섭)
Prototype 패턴 (심만섭) Prototype 패턴 (심만섭)
Prototype 패턴 (심만섭) YoungSu Son
 
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)YoungSu Son
 
Singleton 패턴 (김진영 - EVA, 소마에 10기)
Singleton 패턴 (김진영 -  EVA, 소마에 10기) Singleton 패턴 (김진영 -  EVA, 소마에 10기)
Singleton 패턴 (김진영 - EVA, 소마에 10기) YoungSu Son
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 YoungSu Son
 
생성 패턴 (강태우 - 소마에 10기)
생성 패턴 (강태우 - 소마에 10기) 생성 패턴 (강태우 - 소마에 10기)
생성 패턴 (강태우 - 소마에 10기) YoungSu Son
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 YoungSu Son
 
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심) DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심) YoungSu Son
 
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) 모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) YoungSu Son
 
DevOps 시대가 요구하는 품질확보 방법
DevOps 시대가 요구하는 품질확보 방법 DevOps 시대가 요구하는 품질확보 방법
DevOps 시대가 요구하는 품질확보 방법 YoungSu Son
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기YoungSu Son
 
Android 성능 지표와 Oreo 의 개선사항
Android 성능 지표와  Oreo 의 개선사항 Android 성능 지표와  Oreo 의 개선사항
Android 성능 지표와 Oreo 의 개선사항 YoungSu Son
 
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법YoungSu Son
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기YoungSu Son
 
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기) FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기) YoungSu Son
 
[NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 [NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 YoungSu Son
 
[NEXT] GCM을 이용한 게시글 자동 갱신
[NEXT] GCM을 이용한 게시글 자동 갱신[NEXT] GCM을 이용한 게시글 자동 갱신
[NEXT] GCM을 이용한 게시글 자동 갱신YoungSu Son
 
[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기YoungSu Son
 

Plus de YoungSu Son (20)

Fault Tolerance 패턴
Fault Tolerance 패턴 Fault Tolerance 패턴
Fault Tolerance 패턴
 
Clean Code, Software Architecture, Performance Tuning
Clean Code, Software Architecture, Performance TuningClean Code, Software Architecture, Performance Tuning
Clean Code, Software Architecture, Performance Tuning
 
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
인공지능 식별추적시스템 실증랩 구축및 운영 - 평가모델 고도화
 
Prototype 패턴 (심만섭)
Prototype 패턴 (심만섭) Prototype 패턴 (심만섭)
Prototype 패턴 (심만섭)
 
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
Chain of Responsibility (심수연 - 소프트웨어 마에스트로 10기)
 
Singleton 패턴 (김진영 - EVA, 소마에 10기)
Singleton 패턴 (김진영 -  EVA, 소마에 10기) Singleton 패턴 (김진영 -  EVA, 소마에 10기)
Singleton 패턴 (김진영 - EVA, 소마에 10기)
 
실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우 실전 서버 부하테스트 노하우
실전 서버 부하테스트 노하우
 
생성 패턴 (강태우 - 소마에 10기)
생성 패턴 (강태우 - 소마에 10기) 생성 패턴 (강태우 - 소마에 10기)
생성 패턴 (강태우 - 소마에 10기)
 
초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드 초보 개발자/학생들을 위한 오픈소스 트랜드
초보 개발자/학생들을 위한 오픈소스 트랜드
 
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심) DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
DevOps 오픈소스 트랜드 (클라우드, 모바일 중심)
 
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101) 모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
모바일 앱 성능 분석 방법 101 (Mobile Application Performance Analysis Methodology 101)
 
DevOps 시대가 요구하는 품질확보 방법
DevOps 시대가 요구하는 품질확보 방법 DevOps 시대가 요구하는 품질확보 방법
DevOps 시대가 요구하는 품질확보 방법
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
 
Android 성능 지표와 Oreo 의 개선사항
Android 성능 지표와  Oreo 의 개선사항 Android 성능 지표와  Oreo 의 개선사항
Android 성능 지표와 Oreo 의 개선사항
 
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법안드로이드 Oreo의 변화와  모바일 앱/플랫폼의 적합한 성능 측정 방법
안드로이드 Oreo의 변화와 모바일 앱/플랫폼의 적합한 성능 측정 방법
 
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
클라우드 & 모바일 환경에서 알아야 할 성능 품질 이야기
 
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기) FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
 
[NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 [NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기
 
[NEXT] GCM을 이용한 게시글 자동 갱신
[NEXT] GCM을 이용한 게시글 자동 갱신[NEXT] GCM을 이용한 게시글 자동 갱신
[NEXT] GCM을 이용한 게시글 자동 갱신
 
[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기
 

Intro to-patterns-linda-rising[1]

  • 1. PLoP® Pattern Writing Bootcamp 2009 Chicago, IL Robert Hanmer hanmer@alcatel-lucent.com Linda Rising risingl@acm.org August 27, 2009 - 1 PLoP is a registered Trademark of The Hillside Group. Agenda Introductions Pattern Basics Writers Workshops Pattern Languages Brainstorm architecture Write patterns! Workshop patterns Summary, de-brief, plan next meeting August 27, 2009 - 2 Copyright © 2007-2009. Alcatel-Lucent. 1
  • 2. Part 1: Pattern Basics August 27, 2009 - 3 Patterns • “The pattern is, in short, at the same time a thing, which happens in the world, and the rule which tells us how to create that thing, and when we must create it. It is both a process and a thing; both a description of a thing which is alive, and a description of the process which will generate that thing.” -- Christopher Alexander, The Timeless Way of Building August 27, 2009 - 4 Copyright © 2007-2009. Alcatel-Lucent. 2
  • 3. Christopher Alexander • Building architect and theorist • Many books on architecture and art: A Pattern Language The Timeless Way of Building The Oregon Experiment The Production of Houses A Foreshadowing of 21st Century Art -- The Color and Geometry of Very Early Turkish Carpets The Nature of Order (4 volumes) • http://www.livingneighborhoods.org August 27, 2009 - 5 The Quality Without A ame • “There is a central quality which is the root criterion of life and spirit in a man, a town, a building, or a wilderness. This quality is objective and precise, but it cannot be named.” – Alexander, The Timeless Way of Building • (“but with an acronym” -- Joe Davison) August 27, 2009 - 6 Copyright © 2007-2009. Alcatel-Lucent. 3
  • 4. What is a Pattern? • Rule of 3 • More than an algorithm • “At the same time, a thing that happens in the world … and the rules to make that thing …” August 27, 2009 - 7 Patterns Will ot: • … make you an instant expert • … provide a “turn the crank” approach to software • … eliminate the need for intelligence and taste • … make you rich and famous – unless you become a snake oil salesman • … generate code • Paul S. R. Chisholm, AT&T 10/94 August 27, 2009 - 8 Copyright © 2007-2009. Alcatel-Lucent. 4
  • 5. Part 2: A Pattern’s Parts August 27, 2009 - 9 Parts of a Pattern • Name • Context • Statement of the Problem • Forces • Resolution/Solution • Sketch • Resulting Context • Authorship information • (and some optional parts) August 27, 2009 - 10 Copyright © 2007-2009. Alcatel-Lucent. 5
  • 6. Context • Where does the problem exist? • What are the relevant preconditions? • What are the patterns that this pattern helps resolve? • Who is the target audience? • What are the constraints on the system that you cannot change or control? – Language choice – Memory space – etc. August 27, 2009 - 11 Statement of the Problem • What is the problem being solved? • What’s wrong in the current environment? August 27, 2009 - 12 Copyright © 2007-2009. Alcatel-Lucent. 6
  • 7. Forces • What makes this a hard problem? • What are the tradeoffs? • Why aren’t the obvious solutions sufficient? • What are the constraints upon the system over which you have some control? August 27, 2009 - 13 Resolution/Solution • Succinctly state the action that the reader should take to resolve the problem • Build upon the forces and customize • Be specific • Ensure that the resolution resolves the stated problem – try reading them out loud, one after the other August 27, 2009 - 14 Copyright © 2007-2009. Alcatel-Lucent. 7
  • 8. Sketch • “If you can’t draw a diagram of it, it isn’t a pattern.” – Alexander, TTWOB, p 267. • Sketch What? – Whatever will help convey the ideas to the reader. • UML diagrams • Block diagram • Image of a concrete example • etc. August 27, 2009 - 15 Resulting Context • What does the environment look like after the resolution/solution has been applied? • What new problems have been introduced? • What patterns will resolve the new problems? • This is a good place for war stories and anecdotes August 27, 2009 - 16 Copyright © 2007-2009. Alcatel-Lucent. 8
  • 9. Author • Intellectual Currency – Ideas are worth more if given away. – We want to be able to give credit where credit is due • Identify the author • Identify the revision history – Patterns evolve • As our understanding grows • As they are workshoped and improved by reader feedback • Acknowledgements for shepherds, members of writers’ workshops and others that helped you shape the pattern August 27, 2009 - 17 ame • Choose with care – initially make a list of AKAs • Many views on what form the title should take – Noun Phrase- Corporate Sponsor, Model View Controller – Verb Phrase- Do Food, Shift to Multiply – Catchy Phrase- George Washington is still Dead • It will be part of a vocabulary or language • Choose with care August 27, 2009 - 18 Copyright © 2007-2009. Alcatel-Lucent. 9
  • 10. Other Sections • Rationale • Sample Code • Related Patterns • Known Implementations • References August 27, 2009 - 19 Part 3: Writers Workshops August 27, 2009 - 20 Copyright © 2007-2009. Alcatel-Lucent. 10
  • 11. Writers’ Workshops • Structured discussion of the merits and suggestions for improvement • “Criticism” is not welcome -- only suggestions for improvement. – “I suggest the author add a reference to the paper by Beck and Auer in the Context as it will help establish how their works complement each other.” • Praise is always welcome – What people like about a pattern is very important. • Author is present for note taking but does not participate except at very specific times. • Strong moderation. August 27, 2009 - 21 Writers’ Workshops • Jim Coplien has published a pattern language for Writers’ Workshops. – PLOPD4, chapter 25 – http://users.rcn.com/jcoplien/Patterns/WritersWorkshop/ – He (and co-author/shepherd Bobby Woolf) delve into the reasons behind way that Writers’ Workshops are structured. August 27, 2009 - 22 Copyright © 2007-2009. Alcatel-Lucent. 11
  • 12. Writers’ Workshops • Moderator introduces pattern and the author(s)/editor(s) • The author stands and reads a short (1-4 sentence) excerpt of the paper • The author becomes a “fly on the wall” – Avoid eye contact with the author – The author is referred to as “the author”, NOT by name • A participant summarizes the pattern • Discuss the positive aspects of the paper – What should be kept in the next revision – What the readers found especially appealing • Offer suggestions for improvement. • Welcome the author back – Author thanks the group – This is not an opportunity to debate or explain the pattern – Author may only ask clarifying questions • Everyone (except author) stands and thank the author for the opportunity to workshop the work. • Take a different seat and tell an unrelated story. August 27, 2009 - 23 Part 4: Pattern Languages August 27, 2009 - 24 Copyright © 2007-2009. Alcatel-Lucent. 12
  • 13. Pattern Languages • Individual patterns are useful, but . . . • they are most powerful when combined into a language • “Each pattern then, depends both on the smaller patterns it contains, and on the larger patterns within which it is contained.” Alexander, TTWOB, p 312. August 27, 2009 - 25 Pattern Languages • Individual Patterns are good – No individual pattern balances all the tradeoffs. • To address real sized problems, languages are really essential • A language is a collection of patterns that work together. • Within a pattern language the patterns build upon each other, resolving unbalanced forces from previous patterns. August 27, 2009 - 26 Copyright © 2007-2009. Alcatel-Lucent. 13
  • 14. Pattern Languages (cont.) • Pattern languages must be complete in two ways – Morphologically • Patterns fit together to form a complete structure without gaps. – Functionally • Any new forces introduced by the patterns are resolved by the patterns themselves. • If they are not complete in these ways we refer to them as a “collection” – The GOF and POSA books are collections August 27, 2009 - 27 Example Pattern Languages: • Alexander’s Garden – The only known pattern language diagram from Alexander From The Timeless Way of Building August 27, 2009 - 28 Copyright © 2007-2009. Alcatel-Lucent. 14
  • 15. Another Example • Telecommunications I/O From PLOPD4 August 27, 2009 - 29 Selected Bibliography A Pattern Language. Alexander et. Al. New York: Oxford University Press, 1977. Design Patterns - Elements of Reusable Object-Oriented Software. Gamma, Helm, Johnson and Vlissides (The “Gang of Four”). Reading, MA: Addison-Wesley, 1995. Pattern Oriented Software Architecture. Buschmann, Meunier, Rohnert, Sommerlad and Stal. Chichester, UK: Wiley & Sons, 1996. Pattern Oriented Software Architecture, Vol. 2. Schmidt, Stal, Rohnert, Buschmann. Chichester, UK: Wiley & Sons, 2000. PLOPD – PLOPD5: Pattern Languages of Program Design, volumes 1-5. Various editors. Reading, MA: Addison-Wesley, 1995-2006. The Pattern Handbook. Rising, ed. Cambridge: Cambridge University Press, 1998. PLoP Conference Proceedings: http://hillside.net/plop/ The Pattern Almanac 2000. Rising. Reading, MA: Addison-Wesley, 2000. Fearless Change. Manns and Rising. Reading, MA: Addison-Wesley, 2004. The Timeless Way of Building. Alexander. New York: Oxford University Press, 1979. For more books: http://hillside.net/patterns/books/index.htm August 27, 2009 - 30 Copyright © 2007-2009. Alcatel-Lucent. 15