Introduction

Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Patterns and Anti-Patterns: History and
accomplished work
Venera Arnaoudova
École Polytechnique de Montréal, Québec, Canada
March 5th, 2013
Venera Arnaoudova
March 5th, 2013
1 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Christopher Alexander
His work
Why patterns?
What is a Pattern?
What is a Pattern Language?
Christopher Alexander
Who is he?
Born in 1936 in Vienna,
Austria
Architect
Image from wikipedia.org
Venera Arnaoudova
Emeritus Professor of
Architecture at the
University of California,
Berkeley
March 5th, 2013
2 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Christopher Alexander
His work
Why patterns?
What is a Pattern?
What is a Pattern Language?
Christopher Alexander and his work
Images from http://www.patternlanguage.com/
Venera Arnaoudova
March 5th, 2013
3 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Christopher Alexander
His work
Why patterns?
What is a Pattern?
What is a Pattern Language?
Why patterns?
You have a problem?
Maybe there is a
solution out there
Built on experience
By experts
Venera Arnaoudova
March 5th, 2013
4 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Christopher Alexander
His work
Why patterns?
What is a Pattern?
What is a Pattern Language?
What is a Pattern?
What is a Pattern?
A recurring problem
The core of the solution to that
problem
“You can use this solution a million times
over, without ever doing it the same way
twice.” [Alexander et al., 1977]
Image
http://www.patternlanguage.com/
Venera Arnaoudova
Example
Entrance transition
March 5th, 2013
5 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Christopher Alexander
His work
Why patterns?
What is a Pattern?
What is a Pattern Language?
What is a Pattern Language?
Entrance transition
→
Intimacy Gradient
→
...
Light on two sides of
every room
→
...
Venera Arnaoudova
March 5th, 2013
6 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Who introduced them?
What is a Software Design Pattern?
Architectural vs Software Design Patterns
Software Design Patterns (DPs)
Introduced
Interfaces in Smalltalk [Beck and Cunningham, 1987]
C++ Idioms [Coplien, 1992]
ET++ [Gamma, 1992]
First draft in ECOOP in 1993 by Gamma et al.
Popularized
“Design Patterns: Elements of Reusable Object-Oriented
Software”, by GoF [Gamma et al., 1994]
23 solutions to common software design problems
Venera Arnaoudova
March 5th, 2013
7 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Who introduced them?
What is a Software Design Pattern?
Architectural vs Software Design Patterns
Software Design Patterns
What is a Software Design Pattern?
A recurring design problem in object-oriented systems
A general design solution that addresses this problem
Purpose
Creational
Structural
Behavioral
Venera Arnaoudova
Scope
Class
Object
March 5th, 2013
8 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Who introduced them?
What is a Software Design Pattern?
Architectural vs Software Design Patterns
Software Design Patterns
Architectural... CA
Top down approach - pattern language
“Each pattern sits at the center of a network of connections which
connect it to certain other patterns that help to complete it... and
it is the network of these connections between patterns which
creates the language” [Alexander, ’79]
Software... GoF
Bottom up approach - micro-architectures
“If you have a problem, we have the solution for that, but we don’t
have the next step.” [Gamma, ’05]
Venera Arnaoudova
March 5th, 2013
9 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Detection
Experience in industry
Maintenance
Fault and Change proneness
Detection
Pattern detection for Smalltalk programs [Brown, ’96]
Pat system [Krämer and Prechelt, ’96]
Metrics and graph (AOL) [Antoniol et al., ’98, ’01]
Columbus-Maisa [Ferenc et al., ’02]
Constraint programming [Guéhéneuc et al., ’01, ’04, ’08]
Static and dynamic analysis [Heuzeroth et al., ’02, ’03]
Similarity scoring between graph vertices [Tsantalis, ’06]
DPRE [Costagliola et al., ’05], [De Lucia et al., ’09]
LAMBDES-DP [Bayley and Zhu, ’10]
Venera Arnaoudova
March 5th, 2013
10 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Detection
Experience in industry
Maintenance
Fault and Change proneness
Experience in Industry
Patterns sound very promising, but how are they actually used
in the industry and what benefits, if any, do they bring in
practice? [Beck et al., 1996]
[Beck et al., 1996] Kent Beck, Ron Crocker, Gerard Meszaros,
John Vlissides, James O. Coplien, Lutz Dominick, and Frances
Paulisch. Industrial experience with design patterns (ICSE ’96)
Venera Arnaoudova
March 5th, 2013
11 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Detection
Experience in industry
Maintenance
Fault and Change proneness
Maintenance
Controlled experiments
DP versus simpler solutions for maintenance tasks [Prechelt et
al., ’01]
Explicit documentation [Prechelt et al., ’02]
Replications with variations [Vokáč et al., 2004], [Krein et al.,
’11], [Gravino et al., ’11, ’12]
Impact of Visitor on modification tasks and comprehension
(eye-tracker) [Jeanmart et al., ’09]
Different DP representations in UML class diagrams for
comprehension (eye-tracker) [Porras and Guéhéneuc, ’10]
Venera Arnaoudova
March 5th, 2013
12 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Detection
Experience in industry
Maintenance
Fault and Change proneness
Maintenance
Re-engineering
Re-classification [Tahvildari and Kontogiannis, 2002]
Maintainability
Impact of DP on maintainability (as defined by ISO/IEC 9126
standard) [Hegedűs et al., 2012]
Opinion of Experts
On the help of DP during maintenance [Khomh and
Guéhéneuc, 2008]
Venera Arnaoudova
March 5th, 2013
13 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Detection
Experience in industry
Maintenance
Fault and Change proneness
Fault and Change Proneness
Fault proneness
Defect rate of classes [Vokáč, 2004]
Do Maintainers Utilize Deployed Design Patterns Effectively?
[Ng et al., 2007]
Change proneness
Do DP promote adaptable and reusable code? [Bieman, ’03]
Type, frequency of changes, co-changes [Aversano et al., ’07]
Roles played in DP and change proneness [Di Penta et al., ’08]
Venera Arnaoudova
March 5th, 2013
14 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Software Anti-Patterns
Introduced...
Patterns and Anti-Patterns [Koenig, 1995]
Pitfalls Of Object Oriented Development [Webster, 1995]
Popularized...
“AntiPatterns: Refactoring Software, Architectures, and
Projects in Crisis” [Brown et al., 1998]
AntiPatterns clarify problems for software developers, architects,
and managers by identifying the symptoms and consequences that
lead to the dysfunctional software development processes. [Brown
et al., 1998]
Venera Arnaoudova
March 5th, 2013
15 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Anti-Patterns
What is an Anti-Pattern?
A problem
A recurring solution that addresses this problem but with
negative consequences
A refactored good solution
Types
Architectural
Design
Management
Venera Arnaoudova
March 5th, 2013
16 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Detection
Relation with quality
Detection
jCosmo [Van Emden and Moonen, ’02]
PRODEOOS, iPlasma [Marinescu et al., ’01, ’02, ’04, ’05]
Van [Raţiu et al., ’04]
DECOR, DETEX [Moha et al., ’10]
IDS [Hassaine et al., ’10]
BDETEX [Khom et al., ’09, ’11]
SMURF [Maiga et al., ’12]
Venera Arnaoudova
March 5th, 2013
17 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Detection
Relation with quality
Relation with Quality
Understandability and maintainability [Deligiannis et al., ’03,
’04]
Program comprehension [Bois et al., ’06], [Abbes et al., ’11]
Change proneness [Khom et al., ’09, ’11], [Olbrich et al. ’09],
[Romano et al., ’12]
Fault proneness [Wei and Shatnawi, ’07], [Khom et al., ’11]
Track the evolution [Raţiu et al., ’04], [Vaucher et al., ’09]
Relations with patterns [Jaafar, ’13]
Venera Arnaoudova
March 5th, 2013
18 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Families of Patterns
Only a small subset of pattern families
Requirement [Duran, ’99], [Withall, ’07]
Architectural [Gamma et al., ’94], [Fowler, ’02]
Design [Gamma et al, ’94]
Testing [Binder, ’94], [Meszaros, ’07]
User Interface [Tidwell, ’02, ’10], [Duyne, ’03]
SOA [Rotem-Gal-Oz, ’12], [Erl et al., ’12]
SQL [Tropashko, ’07]
Security [Wheeler, ’99], [Bishop, ’03]
Venera Arnaoudova
March 5th, 2013
19 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Families of Anti-Patterns
Only a small subset of AP families
Architectural, design [Brown et al., ’98, ’99, ’00]
Java, J2EE [Tate, ’02], [Tate et al., ’03], [Dudney et al., ’03]
Performance [Smith, ’03]
Requirement [Shoemaker, ’07]
SQL [Karwin, ’10]
API: API Evolution [Kim et al., 2007], Python API Design
[Martelli, ’11], Web API Evolution [Daigneau, ’12]
Linguistic [Abebe et al., ’09], [Arnaoudova et al., ’10, ’13]
Venera Arnaoudova
March 5th, 2013
20 / 21
Architecture and Urban Design
Software Design Patterns
Life cycle of Design Patterns
Software Anti-Patterns (APs)
Life cycle of Anti-Patterns
Families of Patterns
Families of Anti-Patterns
Thank you for your attention!
Venera Arnaoudova
March 5th, 2013
21 / 21