SlideShare une entreprise Scribd logo
1  sur  33
Introduction to Patterns
Hironori Washizaki
Waseda University
Twitter: @Hiro_Washi washizaki@waseda.jp
http://www.washi.cs.waseda.ac.jp/
Agenda
• Patterns and Pattern Languages
• Software Patterns
• Writing Patterns
2
PATTERNS AND PATTERN
LANGUAGES
3
4
Stockholm, Sweden
Alaior, Spain
Repetition, and, not a coincidence.
• Small public squares
• Street cafes
• Live! Active! Positive!
5
What makes this repetition?
6
• Settings were common
– Planning city structure and environment
• Problems were common
– Open and attractive city
– Having places for people gathering and sitting lazily
• Considerations were common
– Not too large space
– Not closed.
=> Common solution! SolutionSolution
ProblemProblem
ContextContext
ForcesForces
Pattern form
• Context: when to consider?
• Problem: what should be solved and
when?
• Forces: why the problem is hard?
• Solution: what to do to solve problem?
• Resulting context: both positive and
negative 7
SolutionSolution
ProblemProblem
ContextContext
ForcesForces
Adapted from Joseph Yoder, "AsianPLoP Pattern Bootcamp 2011"
SMALL PUBLIC SQUARES
• … this pattern forms the core which makes
an ACTIVITY NODE … it can also help to
generate a PROMENADE, …, through the
action of the people who gather there…
• A town needs public squares; they are the
largest, most public rooms, that the town
has. But when they are too large, they
look and feel deserted.
• Make a public square much smaller than
you would at first imagine…
8
SolutionSolution
ProblemProblem
ContextContext
ForcesForces
Christopher Alexander, et al., “A Pattern Language,“ Oxford University Press, 1977
Abstraction and concretization
9
Abstraction
Concretization
Alexander’s definition of patterns
• Describes a problem that occurs over
and over again in our environment
• 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.
• 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
10
Christopher Alexander, et al., “A Pattern Language,“ Oxford University Press, 1977
Christopher Alexander , “The Timeless Way of Building,” Oxford University Press, 1979
Adapted from Joseph Yoder, "AsianPLoP Pattern Bootcamp 2011"
Quality Without A Name (QWAN)
• “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.”
– Christopher Alexander
• Message from C. Alexander
11
Adapted from Joseph Yoder, "AsianPLoP Pattern Bootcamp 2011"
Thinking and communications by
patterns
… OK, so, to attract many
people to our city, SMALL
PUBLIC SQUAREs should be
located in the center. At the
SMALL PUBLIC SQUARE, make
STREET CAFES be OPNENING
TO THE STREET...
12
BuildingBuilding
Street
Public square
Cafe
Pattern Language
• “A collection of patterns and
the rules to combine them
into an architectural style.”
– James O. Coplien
• “Each pattern then, depends
both on the smaller patterns
it contains, and on the larger
patterns within which it is
contained.”
– Christopher Alexander
13
SMALL
PUBLIC
SQUARE
STREET CAFES
OPENING TO
THE STREET
DIFFERENT
CHAIRS
ACTIVITY
NODES
Adapted from Joseph Yoder, "AsianPLoP Pattern Bootcamp 2011"
SOFTWARE PATTERNS
14
History of patterns and Japan
C. Alexander: A Pattern Language for Building
K. Beck and W. Cunningham: Application of pattern language
to software at OOPSLA
E. Gamma: Doctoral thesis on object-oriented design patterns
E. Gamma et al.: Design Patterns
PLoP conference started
(Many books on patterns)
Japan PLoP started as study meetings
IPSJ SIGSE Patterns WG
1979
1987
1990
1995
1994
2003
AsianPLoP conference started2010
1999
(OOPSLA workshops)
Adapted from Takeshi Inoue, “Introduction to Patterns”, IPSJ SIGSE Patterns WG, 2003
16
Software pattern
• A pattern is a proven solution to a problem
in a software context.
• What software community adopted
– Tool for knowledge transfer and communication
– Pattern form: context-problem-solution
– Pattern catalog (and partially language..)
– Especially object-orientation community
• What software community did NOT adopt
– Common language among stakeholders
17What’s the problem?
class Mathematic {
public Data sort(Data data){
switch(settings) {
case QUICK:
return quickSort(data);
case BUBBLE:
return bubbleSort(data);
default: ...
}
}
class Loan {
public double capital() {
if(expiry == null &&
maturity != null)
return ...;
if(expiry != null &&
maturity == null) {
...
}
18
class Mathematic {
public Data sort(Data data){
switch(settings) {
case QUICK:
return quickSort(data);
case BUBBLE:
return bubbleSort(data);
default: ...
}
}
class Loan {
public double capital() {
if(expiry == null &&
maturity != null)
return ...;
if(expiry != null &&
maturity == null) {
...
}
class Mathematic {
Sorter sorter;
public Data sort(Data data){
return sorter.sort(data);
}
abstract class Sorter {
public abstract Data sort(Data);
class QuickSorter extends Sorter {
public Data sort(Data) { ... }
class Loan {
CapitalCalc capitalCalc;
public double capital(){
return capitalCalc.calc(this);
}
Interface CapitalCalc {
double calc(Loan l);
class TermCapital implements ...{
double calc(Loan l) { ... }
19STRATEGY
ContextContext StrategyStrategy
algorithmInterface()algorithmInterface()
ConcreteStrategyAConcreteStrategyA
algorithmInterface()algorithmInterface()
ConcreteStrategyBConcreteStrategyB
algorithmInterface()algorithmInterface()
・・・・・・
・・・・・・
contextInterface()contextInterface()
Structure
Motivation
If there are hard-wiring line breaking algorithms, clients get
bigger and harder to maintain. Moreover it becomes difficult to add
new algorithms and vary existing ones…
Applicability
Many related classes differ only in their behavior.
You need different variants of an algorithm…
Consequences
Benefits: families of algorithms , elimination of conditional statements…
Drawbacks: Communication overhead…
SolutionSolution
ProblemProblem
ContextContext
ForcesForces
E. Gamma, et al. “Design Patterns: Elements of Reusable
Object-Oriented Software,” Addison-Wesley, 1994.
20
Applying STRATEGY
MathematicMathematic SorterSorter
sort(Data)sort(Data)
QuickSorterQuickSorter
sort(Data)sort(Data)
BubbleSorterBubbleSorter
sort(Data)sort(Data)
・・・・・・
・・・・・・
ClientClient
sort(Data)
setSorter(Sorter)
sort(Data)
setSorter(Sorter)
Context
Strategy
ConcreteStrategy
class Client {
Mathematic math;
void init() {
math.setSorter(
new QuickSorter());
}
void calc() {
data = math.sort(data);
}
class Mathematic {
Sorter sorter;
public Data sort(Data data){
return sorter.sort(data);
}
abstract class Sorter {
public abstract Data sort(Data);
class QuickSorter extends Sorter {
public Data sort(Data) { ... }
21Benefit of patterns and
pattern form
• Reuse
– Solution
– Problem
• Communication
• Understanding
• Way of thinking
• Generative. New ideas!
22What’s going on?
interface MessageStrategy { public class HelloWorld {
public void sendMessage();                 public static void main(String[] args) {
} MessageBody mb =
new MessageBody();
abstract class AbstractStrategyFactory { mb.configure(“Hello World!”);
public abstract MessageStrategy
createStrategy(MessageBody mb); AbstractStrategyFactory asf
= DefaultFactory.getInstance();
class MessageBody { MessageStrategy strategy
object payload; = asf.createStrategy(mb);
public Object getPayload() { mb.send(strategy);
return payload; }
} }
public void configure(Object obj) {
payload obj;
}
public void send(MessageStrategy ms) {
ms.sendMessage();
}
}
class DefaultFactory extends AbstractStrategyFactory {
private DefaultFactory() {}
static DefaultFactory instance;
public static AbstractStrategyFactory getInstance() {
if(instance == null) instance = new DefaultFactory();
return instance;
}
public MessageStrategy createStrategy(final MessageBody mb) {
return new MessageStrategy() {
MessageBody body = mb;
public void sendMessage() {
Object obj = body.getPayload();
System.out.println(obj);
}   }; }   }
Joshua Kerievsky, "Refactoring to Patterns," Addison-Wesley, 2004.
23
Pitfall of software patterns
• “Only solution is important.”
– Context, problem and forces are most important!
• “Should use as it is.”
– There could be variants.
• “Always beneficial.”
– Misuse leads to bad complexity and defects.
• “Should use at the beginning.”
– Simple design at the beginning, and refactor it!
24
E.g. Replace Conditional Logic with STRATEGY
MathematicMathematic SorterSorter
sort(Data)sort(Data)
QuickSorterQuickSorter
sort(Data)sort(Data)
BubbleSorterBubbleSorter
sort(Data)sort(Data)
・・・・・・
・・・・・・
ClientClient
sort(Data)sort(Data)
Replace Conditional with
Polymorphism
MathematicMathematicClientClient
sort(Data)sort(Data)
MathematicMathematicClientClient
sort(Data)sort(Data)
SorterSorter
sort(Data)sort(Data)
Move method
if ...
else ...
if ...
else ...
Joshua Kerievsky, "Refactoring to Patterns," Addison-Wesley, 2004.
Pattern catalogs and languages
• Product patterns
– “Analysis patterns” (M. Fowler)
– “Pattern-Oriented Software Architecture” (Bushmann et al)
– “Design Patterns: Elements of Reusable Object-Oriented Software”
(Gamma et al.)
– “Implementation patterns” (Beck)
– “xUnit Test Patterns” (Meszaros)
– “Object-Oriented Reengineering Patterns” (Nierstrasz et al)
• Process and organizational patterns
– “EPISODE” (Cunningham)
– "A Generative Development-Process Pattern Language” (Coplien)
– "Organizational Patterns of Agile Software Development“ (Coplien and
Harrison)
• Links to catalogs
– “Pattern almanac” (Linda Rising)
– Portland Pattern Repository (Cunningham http://c2.com/ppr/) 25
Network in Portland Pattern
Repository
Pattern name
N.
patterns
referred
by the
pattern
N.
patterns
referring
to the
pattern
ModelViewController 11 12
AdapterPattern 6 15
HandleBodyPattern 9 10
SynchronizationStrategies 9 9
VisitorPattern 7 11
SceneGraph 6 11
ValueObject 3 14
ScapeGoat 6 10
CompositePattern 4 12
StrategyPattern 5 11
26
Hironori Washizaki, Masashi Kadoya, Yoshiaki Fukazawa and Takeshi Kawamura, “Network Analysis
for Software Patterns including Organizational Patterns in Portland Pattern Repository,” Agile 2014
Conference (to appear)
27
ENGAGE CUSTOMERS
• ...an organization is in place,
and its Quality Assurance
function has been generally
shaped and chartered…
• It's important that the
development
organization ensures and
maintains customer
satisfaction by
encouraging communication
between customers and key
development organization
roles…
• Closely couple the Customer
role to the Developer and
Architect, not just to QA or
marketing…James O. Coplien, Neil B. Harrison, "Organizational Patterns
of Agile Software Development", Prentice Hall, 2004.
James O. Coplien, "A
Development Process
Generative Pattern
Language," PLoPD
From patterns to Agile development
Pattern languageTakeuchi
The New New
Development
Game, 1986
Design patterns
OO patterns
A Generative Development-
Process Pattern Language EPISODE
XPScrum
Kenji Hiranabe: From Software Patterns to Agile Movements
http://www.infoq.com/jp/articles/AlexanderFestaReport
WRITING PATTERNS
29
Light-weight pattern writing
1. Individual: write down good experiments or
important things.
2. Team: brainstorming
– Grouping, relating
– Add, modify
1. Team: write in pattern form from important
groups
– (1) Write context and resulting context
– (2) Write context, problem and solution
– (3) Identify forces
– (4) Name it! 30
E.g. Self continuing
education
I can study while
commuting because
of no interruption..
I always carry short
literature for little
vacant time…
Smartphone
for free
time…
Study group
meetings on
Fridays…
Wake up early
to …
Plan reading
groups in my
company…
I set concrete
goals in 1, 5, 10
years…
CARRYING SHORT LITERATURE
Context
You want to enrich your knowledge
in an additional and unfamiliar area
by reading some literatures.
Problem
You are too busy to make time for
studying at your home and office.
Forces
-Making time specific for study will
sacrifice your family considerations
and business.
-There are a number of discrete
short times during your
commuting…
Solution
Select short literatures and carry
them at all times so that you could
read them even in short time
during commuting.
Resulting Context
You are now enriching your
knowledge continuously!
32
From patterns to pattern languages
• Connect related
patterns
– X is similar to Y.
– X uses Y in its
solution.
– X can be combined
with Y.
• Identify surrounding
patterns
ACCUMULATION OF
COMMUTING HOURS
SPLITTING FAT
BOOKS
CARRYING
SHORT
LITERATURE
CARRYING
E-BOOK
READER
BOOK
SCANNING
33
Summary
• Pattern: a proven solution to a problem in a
software context.
• Pattern form: context, problem, forces,
solution, resulting context
• Pattern Language: individual patterns are
useful, but they are most powerful when
combined into a language. (Alexander)
• Benefit and pitfall of patterns
• Various software patterns: design patterns and
organizational patterns
• Writing your own patterns: easy and fun!

Contenu connexe

Tendances

MARKET DESIGN PRESENTATION
MARKET DESIGN PRESENTATIONMARKET DESIGN PRESENTATION
MARKET DESIGN PRESENTATION
Shankar Sarkar
 
George town as a core city
George town as a core cityGeorge town as a core city
George town as a core city
Farhana Farhath
 
Ar Norman foster and works casestudy
Ar Norman foster and works casestudyAr Norman foster and works casestudy
Ar Norman foster and works casestudy
MansiSutar
 

Tendances (20)

Ar.edwin lutyen
Ar.edwin lutyenAr.edwin lutyen
Ar.edwin lutyen
 
MARKET DESIGN PRESENTATION
MARKET DESIGN PRESENTATIONMARKET DESIGN PRESENTATION
MARKET DESIGN PRESENTATION
 
Mumbai High Rise Buildings Case studies of Kohinoor Square, Aquaria Grande, K...
Mumbai High Rise Buildings Case studies of Kohinoor Square, Aquaria Grande, K...Mumbai High Rise Buildings Case studies of Kohinoor Square, Aquaria Grande, K...
Mumbai High Rise Buildings Case studies of Kohinoor Square, Aquaria Grande, K...
 
George town as a core city
George town as a core cityGeorge town as a core city
George town as a core city
 
kala-academy
kala-academykala-academy
kala-academy
 
Case study trilium MALL AMRITSAR
Case study trilium MALL AMRITSARCase study trilium MALL AMRITSAR
Case study trilium MALL AMRITSAR
 
literature review in museum and art gallery design
literature review in museum and art gallery designliterature review in museum and art gallery design
literature review in museum and art gallery design
 
Forum mall banglore case study
Forum mall banglore case studyForum mall banglore case study
Forum mall banglore case study
 
Gandhi bazaar Case study
Gandhi bazaar Case studyGandhi bazaar Case study
Gandhi bazaar Case study
 
Multi stories parking lot
Multi stories parking lotMulti stories parking lot
Multi stories parking lot
 
Building automation - Cisco Headquarters
Building automation - Cisco HeadquartersBuilding automation - Cisco Headquarters
Building automation - Cisco Headquarters
 
Plaza and square
Plaza and squarePlaza and square
Plaza and square
 
Architectural Features, Lighting and Ventilation analysis of a building
Architectural Features, Lighting and Ventilation analysis of a buildingArchitectural Features, Lighting and Ventilation analysis of a building
Architectural Features, Lighting and Ventilation analysis of a building
 
Ar Norman foster and works casestudy
Ar Norman foster and works casestudyAr Norman foster and works casestudy
Ar Norman foster and works casestudy
 
Architect Louis Kahn
Architect Louis KahnArchitect Louis Kahn
Architect Louis Kahn
 
Standards Requirement For Multiplexes And Bye Laws Of NOIDA
Standards Requirement For Multiplexes And Bye Laws Of NOIDAStandards Requirement For Multiplexes And Bye Laws Of NOIDA
Standards Requirement For Multiplexes And Bye Laws Of NOIDA
 
Jean Marie Tjibaou Cultural Center case study
Jean Marie Tjibaou Cultural Center case studyJean Marie Tjibaou Cultural Center case study
Jean Marie Tjibaou Cultural Center case study
 
King hassan ii mosque ppt
King hassan ii mosque pptKing hassan ii mosque ppt
King hassan ii mosque ppt
 
Transit hub
Transit hub Transit hub
Transit hub
 
Indian habitat centre (6)
Indian habitat centre (6)Indian habitat centre (6)
Indian habitat centre (6)
 

En vedette

2013 Scrum Gathering Keynote: Buy or build — where did your agile come from?
2013 Scrum Gathering Keynote: Buy or build — where did your agile come from?2013 Scrum Gathering Keynote: Buy or build — where did your agile come from?
2013 Scrum Gathering Keynote: Buy or build — where did your agile come from?
James Coplien
 
Ziveti sa hiv om vodic
Ziveti sa  hiv  om vodicZiveti sa  hiv  om vodic
Ziveti sa hiv om vodic
Knjazevac
 
Webinar: Selection of storage sites in saline aquifers
Webinar: Selection of storage sites in saline aquifers Webinar: Selection of storage sites in saline aquifers
Webinar: Selection of storage sites in saline aquifers
Global CCS Institute
 
cv viajar por Europa
cv viajar por Europacv viajar por Europa
cv viajar por Europa
guestd290b5
 
Dec 13th qb d in research tel aviv conference preliminary program v7
Dec 13th qb d in research tel aviv conference preliminary program v7Dec 13th qb d in research tel aviv conference preliminary program v7
Dec 13th qb d in research tel aviv conference preliminary program v7
miac1
 
Folleto informativo 2013 seguridad nuclear
Folleto informativo 2013 seguridad nuclearFolleto informativo 2013 seguridad nuclear
Folleto informativo 2013 seguridad nuclear
Janaína Dutra
 
IP MULTIMEDIA SYSTEM
IP MULTIMEDIA SYSTEMIP MULTIMEDIA SYSTEM
IP MULTIMEDIA SYSTEM
Lisbeth Ortiz
 

En vedette (20)

Arm yourself with Domain Driven Security. It's time to slay some security trolls
Arm yourself with Domain Driven Security. It's time to slay some security trollsArm yourself with Domain Driven Security. It's time to slay some security trolls
Arm yourself with Domain Driven Security. It's time to slay some security trolls
 
2013 Scrum Gathering Keynote: Buy or build — where did your agile come from?
2013 Scrum Gathering Keynote: Buy or build — where did your agile come from?2013 Scrum Gathering Keynote: Buy or build — where did your agile come from?
2013 Scrum Gathering Keynote: Buy or build — where did your agile come from?
 
Secrets of Scrum
Secrets of ScrumSecrets of Scrum
Secrets of Scrum
 
Scrum Patterns: The New Defacto Scrum Standard
Scrum Patterns: The New Defacto Scrum StandardScrum Patterns: The New Defacto Scrum Standard
Scrum Patterns: The New Defacto Scrum Standard
 
2015 09 22 Rivanazzano CRS
2015 09 22 Rivanazzano CRS2015 09 22 Rivanazzano CRS
2015 09 22 Rivanazzano CRS
 
Brochure Institucional Estilo-Web.Net
Brochure Institucional Estilo-Web.NetBrochure Institucional Estilo-Web.Net
Brochure Institucional Estilo-Web.Net
 
Apostila ms project 2007 - pet eng. civil ufpr
Apostila   ms project 2007 - pet eng. civil ufprApostila   ms project 2007 - pet eng. civil ufpr
Apostila ms project 2007 - pet eng. civil ufpr
 
01002254 Chison 8800
01002254 Chison 880001002254 Chison 8800
01002254 Chison 8800
 
Ziveti sa hiv om vodic
Ziveti sa  hiv  om vodicZiveti sa  hiv  om vodic
Ziveti sa hiv om vodic
 
Freno sew
Freno sewFreno sew
Freno sew
 
Webinar: Selection of storage sites in saline aquifers
Webinar: Selection of storage sites in saline aquifers Webinar: Selection of storage sites in saline aquifers
Webinar: Selection of storage sites in saline aquifers
 
Marketing Cultural. Gabriel Klein. 2014
Marketing Cultural. Gabriel Klein. 2014 Marketing Cultural. Gabriel Klein. 2014
Marketing Cultural. Gabriel Klein. 2014
 
cv viajar por Europa
cv viajar por Europacv viajar por Europa
cv viajar por Europa
 
The 8 Rules Of E Mail Marketing
The 8 Rules Of E Mail MarketingThe 8 Rules Of E Mail Marketing
The 8 Rules Of E Mail Marketing
 
Gatopardo Ecuador Agosto 2012
Gatopardo Ecuador Agosto 2012Gatopardo Ecuador Agosto 2012
Gatopardo Ecuador Agosto 2012
 
Aftm openbooking 20140602 paris vf
Aftm openbooking 20140602 paris vfAftm openbooking 20140602 paris vf
Aftm openbooking 20140602 paris vf
 
Dec 13th qb d in research tel aviv conference preliminary program v7
Dec 13th qb d in research tel aviv conference preliminary program v7Dec 13th qb d in research tel aviv conference preliminary program v7
Dec 13th qb d in research tel aviv conference preliminary program v7
 
Folleto informativo 2013 seguridad nuclear
Folleto informativo 2013 seguridad nuclearFolleto informativo 2013 seguridad nuclear
Folleto informativo 2013 seguridad nuclear
 
IP MULTIMEDIA SYSTEM
IP MULTIMEDIA SYSTEMIP MULTIMEDIA SYSTEM
IP MULTIMEDIA SYSTEM
 
Arancione Maquila de Nómina - Payrolling 2011
Arancione Maquila de Nómina - Payrolling 2011Arancione Maquila de Nómina - Payrolling 2011
Arancione Maquila de Nómina - Payrolling 2011
 

Similaire à Introduction to Patterns (miniPLoP@Taipei)

Introduction to object oriented programming
Introduction to object oriented programmingIntroduction to object oriented programming
Introduction to object oriented programming
Abzetdin Adamov
 
Big Data Analytics 3: Machine Learning to Engage the Customer, with Apache Sp...
Big Data Analytics 3: Machine Learning to Engage the Customer, with Apache Sp...Big Data Analytics 3: Machine Learning to Engage the Customer, with Apache Sp...
Big Data Analytics 3: Machine Learning to Engage the Customer, with Apache Sp...
MongoDB
 

Similaire à Introduction to Patterns (miniPLoP@Taipei) (20)

introduction of Object oriented programming
introduction of Object oriented programmingintroduction of Object oriented programming
introduction of Object oriented programming
 
Scalable JavaScript Design Patterns
Scalable JavaScript Design PatternsScalable JavaScript Design Patterns
Scalable JavaScript Design Patterns
 
Clean Code - Design Patterns and Best Practices at Silicon Valley Code Camp
Clean Code - Design Patterns and Best Practices at Silicon Valley Code CampClean Code - Design Patterns and Best Practices at Silicon Valley Code Camp
Clean Code - Design Patterns and Best Practices at Silicon Valley Code Camp
 
2009 Dotnet Information Day: More effective c#
2009 Dotnet Information Day: More effective c#2009 Dotnet Information Day: More effective c#
2009 Dotnet Information Day: More effective c#
 
Introduction to object oriented programming
Introduction to object oriented programmingIntroduction to object oriented programming
Introduction to object oriented programming
 
Symmetry, Scala & Software -- Refresh Dublin October 2013
Symmetry, Scala & Software -- Refresh Dublin October 2013Symmetry, Scala & Software -- Refresh Dublin October 2013
Symmetry, Scala & Software -- Refresh Dublin October 2013
 
Week 1 Welcome to 3D Vis
Week 1 Welcome to 3D VisWeek 1 Welcome to 3D Vis
Week 1 Welcome to 3D Vis
 
OOP History and Core Concepts
OOP History and Core ConceptsOOP History and Core Concepts
OOP History and Core Concepts
 
Section1 compound data class
Section1 compound data classSection1 compound data class
Section1 compound data class
 
Design patterns in javascript
Design patterns in javascriptDesign patterns in javascript
Design patterns in javascript
 
Clean Code - Design Patterns and Best Practices for Bay.NET SF User Group (01...
Clean Code - Design Patterns and Best Practices for Bay.NET SF User Group (01...Clean Code - Design Patterns and Best Practices for Bay.NET SF User Group (01...
Clean Code - Design Patterns and Best Practices for Bay.NET SF User Group (01...
 
PLaNet talk @ LKL Knowledge Seminar, 30 Jan, 2008
PLaNet talk @ LKL Knowledge Seminar, 30 Jan, 2008PLaNet talk @ LKL Knowledge Seminar, 30 Jan, 2008
PLaNet talk @ LKL Knowledge Seminar, 30 Jan, 2008
 
Some perspectives from the Astropy Project
Some perspectives from the Astropy ProjectSome perspectives from the Astropy Project
Some perspectives from the Astropy Project
 
Extensible RESTful Applications with Apache TinkerPop
Extensible RESTful Applications with Apache TinkerPopExtensible RESTful Applications with Apache TinkerPop
Extensible RESTful Applications with Apache TinkerPop
 
NUS PhD e-open day 2020
NUS PhD e-open day 2020NUS PhD e-open day 2020
NUS PhD e-open day 2020
 
Build an App with Blindfold - Britt Barak
Build an App with Blindfold - Britt Barak Build an App with Blindfold - Britt Barak
Build an App with Blindfold - Britt Barak
 
Oop principles
Oop principlesOop principles
Oop principles
 
Big Data Analytics 3: Machine Learning to Engage the Customer, with Apache Sp...
Big Data Analytics 3: Machine Learning to Engage the Customer, with Apache Sp...Big Data Analytics 3: Machine Learning to Engage the Customer, with Apache Sp...
Big Data Analytics 3: Machine Learning to Engage the Customer, with Apache Sp...
 
ActiveJDBC - ActiveRecord implementation in Java
ActiveJDBC - ActiveRecord implementation in JavaActiveJDBC - ActiveRecord implementation in Java
ActiveJDBC - ActiveRecord implementation in Java
 
Open event (Drupalcamp Sunderland 2015)
Open event (Drupalcamp Sunderland 2015)Open event (Drupalcamp Sunderland 2015)
Open event (Drupalcamp Sunderland 2015)
 

Plus de Hironori Washizaki

Plus de Hironori Washizaki (20)

Machine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their EngineeringMachine Learning Software Engineering Patterns and Their Engineering
Machine Learning Software Engineering Patterns and Their Engineering
 
IEEE Computer Society 2024 Technology Predictions Update
IEEE Computer Society 2024 Technology Predictions UpdateIEEE Computer Society 2024 Technology Predictions Update
IEEE Computer Society 2024 Technology Predictions Update
 
鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会
鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会
鷲崎弘宜, "国際規格ISO/IEC 24773とその意義", 情報処理学会 第86回全国大会
 
IEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK GuideIEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
IEEE Computer Society’s Strategic Activities and Products including SWEBOK Guide
 
TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用
TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用
TISO/IEC JTC1におけるソフトウェア工学知識体系、技術者認証および品質の標準化と研究・教育他への活用
 
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225
アジャイル品質のパターンとメトリクス Agile Quality Patterns and Metrics (QA2AQ) 20240225
 
Joseph Yoder : Being Agile about Architecture
Joseph Yoder : Being Agile about ArchitectureJoseph Yoder : Being Agile about Architecture
Joseph Yoder : Being Agile about Architecture
 
世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート
世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート
世界標準のソフトウェア工学知識体系SWEBOK Guide最新第4版を通じた開発アップデート
 
SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...
SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...
SWEBOK Guide Evolution and Its Emerging Areas including Machine Learning Patt...
 
デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向
デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向
デジタルトランスフォーメーション(DX)におけるソフトウェアの側面とダイバーシティ・インクルーシブに関する研究実践動向
 
SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~
SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~
SQuBOKガイドV3概説 ~IoT・AI・DX時代のソフトウェア品質とシステム監査~
 
人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集
人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集
人生100年・60年カリキュラム時代のDX人材育成: スマートエスイー 2021年度成果および2022年度募集
 
スマートエスイーコンソーシアムの概要と2021年度成果紹介
スマートエスイーコンソーシアムの概要と2021年度成果紹介スマートエスイーコンソーシアムの概要と2021年度成果紹介
スマートエスイーコンソーシアムの概要と2021年度成果紹介
 
DXの推進において企業内に求められる人材やデジタル人材の育て方
DXの推進において企業内に求められる人材やデジタル人材の育て方DXの推進において企業内に求められる人材やデジタル人材の育て方
DXの推進において企業内に求められる人材やデジタル人材の育て方
 
対応性のある運用のパターン
対応性のある運用のパターン対応性のある運用のパターン
対応性のある運用のパターン
 
モデル訓練のパターン
モデル訓練のパターンモデル訓練のパターン
モデル訓練のパターン
 
パターンのつながりとAI活用成熟度
パターンのつながりとAI活用成熟度パターンのつながりとAI活用成熟度
パターンのつながりとAI活用成熟度
 
データ表現のパターン
データ表現のパターンデータ表現のパターン
データ表現のパターン
 
機械学習デザインパターンの必要性と機械学習ライフサイクル
機械学習デザインパターンの必要性と機械学習ライフサイクル機械学習デザインパターンの必要性と機械学習ライフサイクル
機械学習デザインパターンの必要性と機械学習ライフサイクル
 
青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)
青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)
青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)
 

Dernier

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
VictorSzoltysek
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 

Dernier (20)

Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM TechniquesAI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
AI Mastery 201: Elevating Your Workflow with Advanced LLM Techniques
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 

Introduction to Patterns (miniPLoP@Taipei)

  • 1. Introduction to Patterns Hironori Washizaki Waseda University Twitter: @Hiro_Washi washizaki@waseda.jp http://www.washi.cs.waseda.ac.jp/
  • 2. Agenda • Patterns and Pattern Languages • Software Patterns • Writing Patterns 2
  • 5. Repetition, and, not a coincidence. • Small public squares • Street cafes • Live! Active! Positive! 5
  • 6. What makes this repetition? 6 • Settings were common – Planning city structure and environment • Problems were common – Open and attractive city – Having places for people gathering and sitting lazily • Considerations were common – Not too large space – Not closed. => Common solution! SolutionSolution ProblemProblem ContextContext ForcesForces
  • 7. Pattern form • Context: when to consider? • Problem: what should be solved and when? • Forces: why the problem is hard? • Solution: what to do to solve problem? • Resulting context: both positive and negative 7 SolutionSolution ProblemProblem ContextContext ForcesForces Adapted from Joseph Yoder, "AsianPLoP Pattern Bootcamp 2011"
  • 8. SMALL PUBLIC SQUARES • … this pattern forms the core which makes an ACTIVITY NODE … it can also help to generate a PROMENADE, …, through the action of the people who gather there… • A town needs public squares; they are the largest, most public rooms, that the town has. But when they are too large, they look and feel deserted. • Make a public square much smaller than you would at first imagine… 8 SolutionSolution ProblemProblem ContextContext ForcesForces Christopher Alexander, et al., “A Pattern Language,“ Oxford University Press, 1977
  • 10. Alexander’s definition of patterns • Describes a problem that occurs over and over again in our environment • 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. • 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 10 Christopher Alexander, et al., “A Pattern Language,“ Oxford University Press, 1977 Christopher Alexander , “The Timeless Way of Building,” Oxford University Press, 1979 Adapted from Joseph Yoder, "AsianPLoP Pattern Bootcamp 2011"
  • 11. Quality Without A Name (QWAN) • “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.” – Christopher Alexander • Message from C. Alexander 11 Adapted from Joseph Yoder, "AsianPLoP Pattern Bootcamp 2011"
  • 12. Thinking and communications by patterns … OK, so, to attract many people to our city, SMALL PUBLIC SQUAREs should be located in the center. At the SMALL PUBLIC SQUARE, make STREET CAFES be OPNENING TO THE STREET... 12 BuildingBuilding Street Public square Cafe
  • 13. Pattern Language • “A collection of patterns and the rules to combine them into an architectural style.” – James O. Coplien • “Each pattern then, depends both on the smaller patterns it contains, and on the larger patterns within which it is contained.” – Christopher Alexander 13 SMALL PUBLIC SQUARE STREET CAFES OPENING TO THE STREET DIFFERENT CHAIRS ACTIVITY NODES Adapted from Joseph Yoder, "AsianPLoP Pattern Bootcamp 2011"
  • 15. History of patterns and Japan C. Alexander: A Pattern Language for Building K. Beck and W. Cunningham: Application of pattern language to software at OOPSLA E. Gamma: Doctoral thesis on object-oriented design patterns E. Gamma et al.: Design Patterns PLoP conference started (Many books on patterns) Japan PLoP started as study meetings IPSJ SIGSE Patterns WG 1979 1987 1990 1995 1994 2003 AsianPLoP conference started2010 1999 (OOPSLA workshops) Adapted from Takeshi Inoue, “Introduction to Patterns”, IPSJ SIGSE Patterns WG, 2003
  • 16. 16 Software pattern • A pattern is a proven solution to a problem in a software context. • What software community adopted – Tool for knowledge transfer and communication – Pattern form: context-problem-solution – Pattern catalog (and partially language..) – Especially object-orientation community • What software community did NOT adopt – Common language among stakeholders
  • 17. 17What’s the problem? class Mathematic { public Data sort(Data data){ switch(settings) { case QUICK: return quickSort(data); case BUBBLE: return bubbleSort(data); default: ... } } class Loan { public double capital() { if(expiry == null && maturity != null) return ...; if(expiry != null && maturity == null) { ... }
  • 18. 18 class Mathematic { public Data sort(Data data){ switch(settings) { case QUICK: return quickSort(data); case BUBBLE: return bubbleSort(data); default: ... } } class Loan { public double capital() { if(expiry == null && maturity != null) return ...; if(expiry != null && maturity == null) { ... } class Mathematic { Sorter sorter; public Data sort(Data data){ return sorter.sort(data); } abstract class Sorter { public abstract Data sort(Data); class QuickSorter extends Sorter { public Data sort(Data) { ... } class Loan { CapitalCalc capitalCalc; public double capital(){ return capitalCalc.calc(this); } Interface CapitalCalc { double calc(Loan l); class TermCapital implements ...{ double calc(Loan l) { ... }
  • 19. 19STRATEGY ContextContext StrategyStrategy algorithmInterface()algorithmInterface() ConcreteStrategyAConcreteStrategyA algorithmInterface()algorithmInterface() ConcreteStrategyBConcreteStrategyB algorithmInterface()algorithmInterface() ・・・・・・ ・・・・・・ contextInterface()contextInterface() Structure Motivation If there are hard-wiring line breaking algorithms, clients get bigger and harder to maintain. Moreover it becomes difficult to add new algorithms and vary existing ones… Applicability Many related classes differ only in their behavior. You need different variants of an algorithm… Consequences Benefits: families of algorithms , elimination of conditional statements… Drawbacks: Communication overhead… SolutionSolution ProblemProblem ContextContext ForcesForces E. Gamma, et al. “Design Patterns: Elements of Reusable Object-Oriented Software,” Addison-Wesley, 1994.
  • 20. 20 Applying STRATEGY MathematicMathematic SorterSorter sort(Data)sort(Data) QuickSorterQuickSorter sort(Data)sort(Data) BubbleSorterBubbleSorter sort(Data)sort(Data) ・・・・・・ ・・・・・・ ClientClient sort(Data) setSorter(Sorter) sort(Data) setSorter(Sorter) Context Strategy ConcreteStrategy class Client { Mathematic math; void init() { math.setSorter( new QuickSorter()); } void calc() { data = math.sort(data); } class Mathematic { Sorter sorter; public Data sort(Data data){ return sorter.sort(data); } abstract class Sorter { public abstract Data sort(Data); class QuickSorter extends Sorter { public Data sort(Data) { ... }
  • 21. 21Benefit of patterns and pattern form • Reuse – Solution – Problem • Communication • Understanding • Way of thinking • Generative. New ideas!
  • 22. 22What’s going on? interface MessageStrategy { public class HelloWorld { public void sendMessage();                 public static void main(String[] args) { } MessageBody mb = new MessageBody(); abstract class AbstractStrategyFactory { mb.configure(“Hello World!”); public abstract MessageStrategy createStrategy(MessageBody mb); AbstractStrategyFactory asf = DefaultFactory.getInstance(); class MessageBody { MessageStrategy strategy object payload; = asf.createStrategy(mb); public Object getPayload() { mb.send(strategy); return payload; } } } public void configure(Object obj) { payload obj; } public void send(MessageStrategy ms) { ms.sendMessage(); } } class DefaultFactory extends AbstractStrategyFactory { private DefaultFactory() {} static DefaultFactory instance; public static AbstractStrategyFactory getInstance() { if(instance == null) instance = new DefaultFactory(); return instance; } public MessageStrategy createStrategy(final MessageBody mb) { return new MessageStrategy() { MessageBody body = mb; public void sendMessage() { Object obj = body.getPayload(); System.out.println(obj); }   }; }   } Joshua Kerievsky, "Refactoring to Patterns," Addison-Wesley, 2004.
  • 23. 23 Pitfall of software patterns • “Only solution is important.” – Context, problem and forces are most important! • “Should use as it is.” – There could be variants. • “Always beneficial.” – Misuse leads to bad complexity and defects. • “Should use at the beginning.” – Simple design at the beginning, and refactor it!
  • 24. 24 E.g. Replace Conditional Logic with STRATEGY MathematicMathematic SorterSorter sort(Data)sort(Data) QuickSorterQuickSorter sort(Data)sort(Data) BubbleSorterBubbleSorter sort(Data)sort(Data) ・・・・・・ ・・・・・・ ClientClient sort(Data)sort(Data) Replace Conditional with Polymorphism MathematicMathematicClientClient sort(Data)sort(Data) MathematicMathematicClientClient sort(Data)sort(Data) SorterSorter sort(Data)sort(Data) Move method if ... else ... if ... else ... Joshua Kerievsky, "Refactoring to Patterns," Addison-Wesley, 2004.
  • 25. Pattern catalogs and languages • Product patterns – “Analysis patterns” (M. Fowler) – “Pattern-Oriented Software Architecture” (Bushmann et al) – “Design Patterns: Elements of Reusable Object-Oriented Software” (Gamma et al.) – “Implementation patterns” (Beck) – “xUnit Test Patterns” (Meszaros) – “Object-Oriented Reengineering Patterns” (Nierstrasz et al) • Process and organizational patterns – “EPISODE” (Cunningham) – "A Generative Development-Process Pattern Language” (Coplien) – "Organizational Patterns of Agile Software Development“ (Coplien and Harrison) • Links to catalogs – “Pattern almanac” (Linda Rising) – Portland Pattern Repository (Cunningham http://c2.com/ppr/) 25
  • 26. Network in Portland Pattern Repository Pattern name N. patterns referred by the pattern N. patterns referring to the pattern ModelViewController 11 12 AdapterPattern 6 15 HandleBodyPattern 9 10 SynchronizationStrategies 9 9 VisitorPattern 7 11 SceneGraph 6 11 ValueObject 3 14 ScapeGoat 6 10 CompositePattern 4 12 StrategyPattern 5 11 26 Hironori Washizaki, Masashi Kadoya, Yoshiaki Fukazawa and Takeshi Kawamura, “Network Analysis for Software Patterns including Organizational Patterns in Portland Pattern Repository,” Agile 2014 Conference (to appear)
  • 27. 27 ENGAGE CUSTOMERS • ...an organization is in place, and its Quality Assurance function has been generally shaped and chartered… • It's important that the development organization ensures and maintains customer satisfaction by encouraging communication between customers and key development organization roles… • Closely couple the Customer role to the Developer and Architect, not just to QA or marketing…James O. Coplien, Neil B. Harrison, "Organizational Patterns of Agile Software Development", Prentice Hall, 2004. James O. Coplien, "A Development Process Generative Pattern Language," PLoPD
  • 28. From patterns to Agile development Pattern languageTakeuchi The New New Development Game, 1986 Design patterns OO patterns A Generative Development- Process Pattern Language EPISODE XPScrum Kenji Hiranabe: From Software Patterns to Agile Movements http://www.infoq.com/jp/articles/AlexanderFestaReport
  • 30. Light-weight pattern writing 1. Individual: write down good experiments or important things. 2. Team: brainstorming – Grouping, relating – Add, modify 1. Team: write in pattern form from important groups – (1) Write context and resulting context – (2) Write context, problem and solution – (3) Identify forces – (4) Name it! 30
  • 31. E.g. Self continuing education I can study while commuting because of no interruption.. I always carry short literature for little vacant time… Smartphone for free time… Study group meetings on Fridays… Wake up early to … Plan reading groups in my company… I set concrete goals in 1, 5, 10 years… CARRYING SHORT LITERATURE Context You want to enrich your knowledge in an additional and unfamiliar area by reading some literatures. Problem You are too busy to make time for studying at your home and office. Forces -Making time specific for study will sacrifice your family considerations and business. -There are a number of discrete short times during your commuting… Solution Select short literatures and carry them at all times so that you could read them even in short time during commuting. Resulting Context You are now enriching your knowledge continuously!
  • 32. 32 From patterns to pattern languages • Connect related patterns – X is similar to Y. – X uses Y in its solution. – X can be combined with Y. • Identify surrounding patterns ACCUMULATION OF COMMUTING HOURS SPLITTING FAT BOOKS CARRYING SHORT LITERATURE CARRYING E-BOOK READER BOOK SCANNING
  • 33. 33 Summary • Pattern: a proven solution to a problem in a software context. • Pattern form: context, problem, forces, solution, resulting context • Pattern Language: individual patterns are useful, but they are most powerful when combined into a language. (Alexander) • Benefit and pitfall of patterns • Various software patterns: design patterns and organizational patterns • Writing your own patterns: easy and fun!