SlideShare a Scribd company logo
1 of 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!

More Related Content

What's hot

Curtain walls - Advanced structural systems
Curtain walls - Advanced structural systemsCurtain walls - Advanced structural systems
Curtain walls - Advanced structural systemsPratibha Mohan
 
PRECAST CONCRETE STAIRS
  PRECAST CONCRETE STAIRS  PRECAST CONCRETE STAIRS
PRECAST CONCRETE STAIRSAbhishek Mewada
 
Hilly Vernacular Architecture (Himachal Pradesh)
Hilly Vernacular Architecture (Himachal Pradesh)Hilly Vernacular Architecture (Himachal Pradesh)
Hilly Vernacular Architecture (Himachal Pradesh)Chandan Gupta
 
Signage study IIT GANDHINAGAR
Signage study IIT GANDHINAGARSignage study IIT GANDHINAGAR
Signage study IIT GANDHINAGARHAPPYSAINI18
 
ARCHITECTURAL STANDARDS
ARCHITECTURAL STANDARDSARCHITECTURAL STANDARDS
ARCHITECTURAL STANDARDSstuti31
 
Flat Grid / Waffle Slab
Flat Grid / Waffle SlabFlat Grid / Waffle Slab
Flat Grid / Waffle SlabAkshay Gawade
 
Offsite Case Study on Kindergarten
Offsite Case Study on KindergartenOffsite Case Study on Kindergarten
Offsite Case Study on KindergartenCET, BBSR
 
Olympiapark, munich
Olympiapark, munichOlympiapark, munich
Olympiapark, munichjigarramani1
 
Toilet and Bath Working Drawing
Toilet and Bath Working DrawingToilet and Bath Working Drawing
Toilet and Bath Working DrawingGeeva Chandana
 
sustainable housing case study
sustainable housing case studysustainable housing case study
sustainable housing case studyAr. Prerna Chouhan
 
Case study KSRTC terminal calicut
Case study KSRTC terminal calicutCase study KSRTC terminal calicut
Case study KSRTC terminal calicutHmd
 
architectural design of rural nursery school
architectural design of rural  nursery schoolarchitectural design of rural  nursery school
architectural design of rural nursery schooldevangimulani
 
MIXED USE DESIGN -BASICS
MIXED USE DESIGN -BASICSMIXED USE DESIGN -BASICS
MIXED USE DESIGN -BASICSJayashreeIyer14
 

What's hot (20)

Halen-housing.pptx
Halen-housing.pptxHalen-housing.pptx
Halen-housing.pptx
 
Space frame
Space frameSpace frame
Space frame
 
Chettinad Architecture
Chettinad Architecture Chettinad Architecture
Chettinad Architecture
 
Curtain walls - Advanced structural systems
Curtain walls - Advanced structural systemsCurtain walls - Advanced structural systems
Curtain walls - Advanced structural systems
 
PRECAST CONCRETE STAIRS
  PRECAST CONCRETE STAIRS  PRECAST CONCRETE STAIRS
PRECAST CONCRETE STAIRS
 
Waffle slab
Waffle slabWaffle slab
Waffle slab
 
Hilly Vernacular Architecture (Himachal Pradesh)
Hilly Vernacular Architecture (Himachal Pradesh)Hilly Vernacular Architecture (Himachal Pradesh)
Hilly Vernacular Architecture (Himachal Pradesh)
 
Signage study IIT GANDHINAGAR
Signage study IIT GANDHINAGARSignage study IIT GANDHINAGAR
Signage study IIT GANDHINAGAR
 
ARCHITECTURAL STANDARDS
ARCHITECTURAL STANDARDSARCHITECTURAL STANDARDS
ARCHITECTURAL STANDARDS
 
Flat Grid / Waffle Slab
Flat Grid / Waffle SlabFlat Grid / Waffle Slab
Flat Grid / Waffle Slab
 
Offsite Case Study on Kindergarten
Offsite Case Study on KindergartenOffsite Case Study on Kindergarten
Offsite Case Study on Kindergarten
 
PREVI HOUSING
PREVI HOUSINGPREVI HOUSING
PREVI HOUSING
 
Olympiapark, munich
Olympiapark, munichOlympiapark, munich
Olympiapark, munich
 
Toilet and Bath Working Drawing
Toilet and Bath Working DrawingToilet and Bath Working Drawing
Toilet and Bath Working Drawing
 
Lec 10 a pattern language
Lec 10 a pattern languageLec 10 a pattern language
Lec 10 a pattern language
 
sustainable housing case study
sustainable housing case studysustainable housing case study
sustainable housing case study
 
Case study KSRTC terminal calicut
Case study KSRTC terminal calicutCase study KSRTC terminal calicut
Case study KSRTC terminal calicut
 
City center kolkata
City center kolkataCity center kolkata
City center kolkata
 
architectural design of rural nursery school
architectural design of rural  nursery schoolarchitectural design of rural  nursery school
architectural design of rural nursery school
 
MIXED USE DESIGN -BASICS
MIXED USE DESIGN -BASICSMIXED USE DESIGN -BASICS
MIXED USE DESIGN -BASICS
 

Viewers also liked

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 trollsOmegapoint Academy
 
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
 
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 StandardJames Coplien
 
2015 09 22 Rivanazzano CRS
2015 09 22 Rivanazzano CRS2015 09 22 Rivanazzano CRS
2015 09 22 Rivanazzano CRSDaniele Crespi
 
Brochure Institucional Estilo-Web.Net
Brochure Institucional Estilo-Web.NetBrochure Institucional Estilo-Web.Net
Brochure Institucional Estilo-Web.NetEstilo-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 ufprDavid Pericles Bitencourt
 
Ziveti sa hiv om vodic
Ziveti sa  hiv  om vodicZiveti sa  hiv  om vodic
Ziveti sa hiv om vodicKnjazevac
 
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 Europaguestd290b5
 
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 MarketingVarju Luceno
 
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 v7miac1
 
Folleto informativo 2013 seguridad nuclear
Folleto informativo 2013 seguridad nuclearFolleto informativo 2013 seguridad nuclear
Folleto informativo 2013 seguridad nuclearJanaína Dutra
 
IP MULTIMEDIA SYSTEM
IP MULTIMEDIA SYSTEMIP MULTIMEDIA SYSTEM
IP MULTIMEDIA SYSTEMLisbeth Ortiz
 
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 2011Cocktail Marketing
 

Viewers also liked (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
 

Similar to Introduction to Patterns

introduction of Object oriented programming
introduction of Object oriented programmingintroduction of Object oriented programming
introduction of Object oriented programmingRiturajJain8
 
Scalable JavaScript Design Patterns
Scalable JavaScript Design PatternsScalable JavaScript Design Patterns
Scalable JavaScript Design PatternsAddy Osmani
 
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 CampTheo Jungeblut
 
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#Daniel Fisher
 
Introduction to object oriented programming
Introduction to object oriented programmingIntroduction to object oriented programming
Introduction to object oriented programmingAbzetdin Adamov
 
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 2013Eric Bowman
 
Week 1 Welcome to 3D Vis
Week 1 Welcome to 3D VisWeek 1 Welcome to 3D Vis
Week 1 Welcome to 3D VisScottRoberts37
 
OOP History and Core Concepts
OOP History and Core ConceptsOOP History and Core Concepts
OOP History and Core ConceptsNghia Bui Van
 
Section1 compound data class
Section1 compound data classSection1 compound data class
Section1 compound data classDương Tùng
 
Design patterns in javascript
Design patterns in javascriptDesign patterns in javascript
Design patterns in javascriptAyush Sharma
 
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...Theo Jungeblut
 
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, 2008Yishay Mor
 
Some perspectives from the Astropy Project
Some perspectives from the Astropy ProjectSome perspectives from the Astropy Project
Some perspectives from the Astropy ProjectKelle Cruz
 
Extensible RESTful Applications with Apache TinkerPop
Extensible RESTful Applications with Apache TinkerPopExtensible RESTful Applications with Apache TinkerPop
Extensible RESTful Applications with Apache TinkerPopVarun Ganesh
 
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 DroidConTLV
 
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
 
ActiveJDBC - ActiveRecord implementation in Java
ActiveJDBC - ActiveRecord implementation in JavaActiveJDBC - ActiveRecord implementation in Java
ActiveJDBC - ActiveRecord implementation in Javaipolevoy
 
Open event (Drupalcamp Sunderland 2015)
Open event (Drupalcamp Sunderland 2015)Open event (Drupalcamp Sunderland 2015)
Open event (Drupalcamp Sunderland 2015)Jorge López-Lago
 

Similar to Introduction to Patterns (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)
 

More from Hironori Washizaki

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

More from 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活用成熟度
 
データ表現のパターン
データ表現のパターンデータ表現のパターン
データ表現のパターン
 
機械学習デザインパターンの必要性と機械学習ライフサイクル
機械学習デザインパターンの必要性と機械学習ライフサイクル機械学習デザインパターンの必要性と機械学習ライフサイクル
機械学習デザインパターンの必要性と機械学習ライフサイクル
 
青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)
青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)
青山幹雄先生を偲んで(開拓、理論、実践、コミュニティ&国際)
 

Recently uploaded

Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
How To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROHow To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROmotivationalword821
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceBrainSell Technologies
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 

Recently uploaded (20)

Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
How To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTROHow To Manage Restaurant Staff -BTRESTRO
How To Manage Restaurant Staff -BTRESTRO
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
CRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. SalesforceCRM Contender Series: HubSpot vs. Salesforce
CRM Contender Series: HubSpot vs. Salesforce
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 

Introduction to Patterns

  • 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!