SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
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!

Weitere ähnliche Inhalte

Was ist angesagt?

Louis i kahn iim ahmedabad
Louis i kahn iim ahmedabadLouis i kahn iim ahmedabad
Louis i kahn iim ahmedabadTanzil Faraz
 
Vernacular architecture
Vernacular architectureVernacular architecture
Vernacular architectureRahul Verma
 
Court of justice-Chandigarh
Court of justice-ChandigarhCourt of justice-Chandigarh
Court of justice-ChandigarhPriyank Mathur
 
Litrature review on auditorium
Litrature review on auditoriumLitrature review on auditorium
Litrature review on auditoriummogesberhanu
 
Indian institute of management bangalore
Indian institute of management bangaloreIndian institute of management bangalore
Indian institute of management bangalorejudy lebona
 
Veer savarkar auditorium, shivaji park - ACOUSTICS - AUDITORIUM - MUMBAI
Veer savarkar auditorium, shivaji park - ACOUSTICS - AUDITORIUM - MUMBAIVeer savarkar auditorium, shivaji park - ACOUSTICS - AUDITORIUM - MUMBAI
Veer savarkar auditorium, shivaji park - ACOUSTICS - AUDITORIUM - MUMBAIDijo Mathews
 
DATA COLLECTION FOR UNIVERSITY DESIGN
DATA COLLECTION FOR UNIVERSITY DESIGNDATA COLLECTION FOR UNIVERSITY DESIGN
DATA COLLECTION FOR UNIVERSITY DESIGNSALONIKAAHUJA1
 
Vishnudas bhave auditorium, vashi - ACOUSTICS - AUDITORIUM - MUMBAI
Vishnudas bhave auditorium, vashi - ACOUSTICS - AUDITORIUM - MUMBAIVishnudas bhave auditorium, vashi - ACOUSTICS - AUDITORIUM - MUMBAI
Vishnudas bhave auditorium, vashi - ACOUSTICS - AUDITORIUM - MUMBAIDijo Mathews
 
architectural case study of schools in auroville,puducherry, south india
architectural case study of schools in auroville,puducherry, south indiaarchitectural case study of schools in auroville,puducherry, south india
architectural case study of schools in auroville,puducherry, south indiaStudent
 
Professional practice of architects-Role of an architect (COA)
Professional practice of architects-Role of an architect (COA)Professional practice of architects-Role of an architect (COA)
Professional practice of architects-Role of an architect (COA)Aditi Garg
 
Thesis report on Habitat Centre, Noida
Thesis report on Habitat Centre, Noida Thesis report on Habitat Centre, Noida
Thesis report on Habitat Centre, Noida Saurav Chaudhary
 
Joseph allen stein
Joseph allen steinJoseph allen stein
Joseph allen steingaurav bhatt
 
BARRIER FREE DESIGN WASHROOMS
BARRIER FREE DESIGN WASHROOMSBARRIER FREE DESIGN WASHROOMS
BARRIER FREE DESIGN WASHROOMSAbhinaina Bhatia
 
Critical Analysis: Dept. of Architecture, CET
Critical Analysis: Dept. of Architecture, CETCritical Analysis: Dept. of Architecture, CET
Critical Analysis: Dept. of Architecture, CETbaburajiv2007
 
Virasat - E - Khalsa memorial and heritage complex.
Virasat - E - Khalsa memorial and heritage complex.Virasat - E - Khalsa memorial and heritage complex.
Virasat - E - Khalsa memorial and heritage complex.KARTIK PARIHAR
 
Urban design Case study GOA PANJIM
Urban design Case study GOA PANJIMUrban design Case study GOA PANJIM
Urban design Case study GOA PANJIMLalith Aditya
 
District center (college projects)
District center (college projects)District center (college projects)
District center (college projects)sonali parashar
 
Chandigarh Capital Complex
Chandigarh Capital ComplexChandigarh Capital Complex
Chandigarh Capital Complexshagundhiman
 
JAWAHAR KALA KENDRA
JAWAHAR KALA KENDRAJAWAHAR KALA KENDRA
JAWAHAR KALA KENDRASumit Raina
 

Was ist angesagt? (20)

Louis i kahn iim ahmedabad
Louis i kahn iim ahmedabadLouis i kahn iim ahmedabad
Louis i kahn iim ahmedabad
 
Vernacular architecture
Vernacular architectureVernacular architecture
Vernacular architecture
 
Court of justice-Chandigarh
Court of justice-ChandigarhCourt of justice-Chandigarh
Court of justice-Chandigarh
 
Litrature review on auditorium
Litrature review on auditoriumLitrature review on auditorium
Litrature review on auditorium
 
Indian institute of management bangalore
Indian institute of management bangaloreIndian institute of management bangalore
Indian institute of management bangalore
 
Veer savarkar auditorium, shivaji park - ACOUSTICS - AUDITORIUM - MUMBAI
Veer savarkar auditorium, shivaji park - ACOUSTICS - AUDITORIUM - MUMBAIVeer savarkar auditorium, shivaji park - ACOUSTICS - AUDITORIUM - MUMBAI
Veer savarkar auditorium, shivaji park - ACOUSTICS - AUDITORIUM - MUMBAI
 
DATA COLLECTION FOR UNIVERSITY DESIGN
DATA COLLECTION FOR UNIVERSITY DESIGNDATA COLLECTION FOR UNIVERSITY DESIGN
DATA COLLECTION FOR UNIVERSITY DESIGN
 
Vishnudas bhave auditorium, vashi - ACOUSTICS - AUDITORIUM - MUMBAI
Vishnudas bhave auditorium, vashi - ACOUSTICS - AUDITORIUM - MUMBAIVishnudas bhave auditorium, vashi - ACOUSTICS - AUDITORIUM - MUMBAI
Vishnudas bhave auditorium, vashi - ACOUSTICS - AUDITORIUM - MUMBAI
 
architectural case study of schools in auroville,puducherry, south india
architectural case study of schools in auroville,puducherry, south indiaarchitectural case study of schools in auroville,puducherry, south india
architectural case study of schools in auroville,puducherry, south india
 
Professional practice of architects-Role of an architect (COA)
Professional practice of architects-Role of an architect (COA)Professional practice of architects-Role of an architect (COA)
Professional practice of architects-Role of an architect (COA)
 
Thesis report on Habitat Centre, Noida
Thesis report on Habitat Centre, Noida Thesis report on Habitat Centre, Noida
Thesis report on Habitat Centre, Noida
 
Joseph allen stein
Joseph allen steinJoseph allen stein
Joseph allen stein
 
J.A.Stein
J.A.SteinJ.A.Stein
J.A.Stein
 
BARRIER FREE DESIGN WASHROOMS
BARRIER FREE DESIGN WASHROOMSBARRIER FREE DESIGN WASHROOMS
BARRIER FREE DESIGN WASHROOMS
 
Critical Analysis: Dept. of Architecture, CET
Critical Analysis: Dept. of Architecture, CETCritical Analysis: Dept. of Architecture, CET
Critical Analysis: Dept. of Architecture, CET
 
Virasat - E - Khalsa memorial and heritage complex.
Virasat - E - Khalsa memorial and heritage complex.Virasat - E - Khalsa memorial and heritage complex.
Virasat - E - Khalsa memorial and heritage complex.
 
Urban design Case study GOA PANJIM
Urban design Case study GOA PANJIMUrban design Case study GOA PANJIM
Urban design Case study GOA PANJIM
 
District center (college projects)
District center (college projects)District center (college projects)
District center (college projects)
 
Chandigarh Capital Complex
Chandigarh Capital ComplexChandigarh Capital Complex
Chandigarh Capital Complex
 
JAWAHAR KALA KENDRA
JAWAHAR KALA KENDRAJAWAHAR KALA KENDRA
JAWAHAR KALA KENDRA
 

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie 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
 

Ähnlich wie 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)
 

Mehr von 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
 

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

Kürzlich hochgeladen

OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingShane Coughlan
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...OnePlan Solutions
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdfAndrey Devyatkin
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptxVinzoCenzo
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsJean Silva
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shardsChristopher Curtin
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfmaor17
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
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
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolsosttopstonverter
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?Alexandre Beguel
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesVictoriaMetrics
 
Data modeling 101 - Basics - Software Domain
Data modeling 101 - Basics - Software DomainData modeling 101 - Basics - Software Domain
Data modeling 101 - Basics - Software DomainAbdul Ahad
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxRTS corp
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 

Kürzlich hochgeladen (20)

OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full RecordingOpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
OpenChain AI Study Group - Europe and Asia Recap - 2024-04-11 - Full Recording
 
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
Tech Tuesday Slides - Introduction to Project Management with OnePlan's Work ...
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
2024-04-09 - From Complexity to Clarity - AWS Summit AMS.pdf
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptx
 
Strategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero resultsStrategies for using alternative queries to mitigate zero results
Strategies for using alternative queries to mitigate zero results
 
2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards2024 DevNexus Patterns for Resiliency: Shuffle shards
2024 DevNexus Patterns for Resiliency: Shuffle shards
 
Zer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdfZer0con 2024 final share short version.pdf
Zer0con 2024 final share short version.pdf
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
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
 
eSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration toolseSoftTools IMAP Backup Software and migration tools
eSoftTools IMAP Backup Software and migration tools
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?SAM Training Session - How to use EXCEL ?
SAM Training Session - How to use EXCEL ?
 
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News UpdateVictoriaMetrics Q1 Meet Up '24 - Community & News Update
VictoriaMetrics Q1 Meet Up '24 - Community & News Update
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 
What’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 UpdatesWhat’s New in VictoriaMetrics: Q1 2024 Updates
What’s New in VictoriaMetrics: Q1 2024 Updates
 
Data modeling 101 - Basics - Software Domain
Data modeling 101 - Basics - Software DomainData modeling 101 - Basics - Software Domain
Data modeling 101 - Basics - Software Domain
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 

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!