SlideShare a Scribd company logo
Investigating the Change-proneness of
Service Patterns and Antipatterns
Francis Palma, Le An, Foutse Khomh, Naouel Moha, and Yann-Gaël Guéhéneuc
École Polytechnique de Montréal, Canada
SOCA 2014, Matsue, Japan
Problem Context (1/3)
Service-based Systems
2 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
SOAP
Web Services
SCA Systems
Problem Context (1/3)
SOAP
Web Services
SCA Systems
Service-based Systems
Design Patterns
2 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Problem Context (1/3)
SOAP
Web Services
SCA Systems
Service-based Systems
Maintenance
Evolution
SOAP Web Services
SCA Systems
Design Patterns
2 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Problem Context (1/3)
SOAP
Web Services
SCA Systems
Service-based Systems
Maintenance
Evolution
SOAP Web Services
SCA Systems
- may degrade the design
- may degrade the QoS = Antipatterns
Design Patterns
2 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Problem Context (1/3)
2 of 21
1. Highly change-prone?
2. Require more maintenance
efforts or cause expensive
maintenance?
SOAP Web Services
SCA Systems
Existing
Antipatterns
?
Investigating the Change-proneness of Service Patterns and Antipatterns
Problem Context (2/3):
Service Antipatterns and Patterns
3 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Multi Service Antipattern
Problem Context (2/3):
Service Antipatterns and Patterns
Multi Service Antipattern
Proxy Service Pattern
Proxy
Service
Actual
Service
Calls Calls
Client
3 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Problem Context (3/3): Detection vs. Impact
4 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
• Detection of service patterns? (SODOP, Demange et al. 2013)
• Detection of service antipatterns? (SODA, Moha et al. 2012)
• Improve/degrade the design and the QoS?
• Facilitate/hinder the maintenance and evolution of an SBS?
- impact on the change-proneness, i.e., maintenance cost?
Problem Context (3/3): Detection vs. Impact
Change-proneness of a service*
- number of changes
 the frequency of changes on a service source files
- code churns
 the size of changes on a service source files
4 of 21
• Detection of service patterns? (SODOP, Demange et al. 2013)
• Detection of service antipatterns? (SODA, Moha et al. 2012)
• Improve/degrade the design and the QoS?
• Facilitate/hinder the maintenance and evolution of an SBS?
- impact on the change-proneness, i.e., maintenance cost?
*Code Churn: A Measure for Estimating the Impact of Code Change: Sebastian G. Elbaum and John C.
Munson (1998)
Research Questions
• RQ1: What is the relation between service patterns and
change-proneness?
• RQ2: What is the relation between service antipatterns and
change-proneness?
• RQ3: What is the relation between particular kinds of service
antipatterns and change-proneness?
• Confounding impact of OO code-level smells
5 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Outline
- Analysed System: FraSCAti OW2
- Study Design
- Case Study Results
- Conclusion and Future Work
Outline
- Analysed System: FraSCAti OW2
- Study Design
- Case Study Results
- Conclusion and Future Work
FraSCAti OW2
frascati.ow2.org
Investigating the Change-proneness of Service Patterns and Antipatterns
Total Services 130 (62 analysed)
Total Size 170 KLOC
Total Changed Files 15,863*
Total Java Source Files 9,020*
Total Changes 71,151*
Total Code Churns 62,676,363*
6 of 21
*Entire commit history
Outline
- Analysed System: FraSCAti OW2
- Study Design
- Case Study Results
- Conclusion and Future Work
Study Design
7 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Study Design
7 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Study Design: FraSCAti Commit
[[frascati-commits]] [1196] trunk/tinfi: More refactoring.
 Subject: [[frascati-commits]] [1196] trunk/tinfi: More refactoring.
 From: Lionel.Seinturier@xxxxxxx
 Date: Sat, 13 Dec 2008 21:41:32 +0100 (CET)
 Delivered-to: frascati-commits@xxxxxxx
Title: [1196] trunk/tinfi: More refactoring.
Revision
1196
Author
seintur
Date
2008-12-13 21:41:32 +0100 (Sat, 13 Dec 2008)
Log Message
More refactoring.
Modified Paths
 trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/Tinfi.java
 trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/TinfiBootstrapComponentImpl.java
Added Paths
 trunk/tinfi/opt/comp/src/main/java/org/ow2/
 trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/
 trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/
 trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/
 trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/FCCompCtrlSourceCodeGenerator.java
 trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/InitializerCompCtrlSourceCodeGenerator.java
Removed Paths
 trunk/tinfi/opt/comp/src/main/java/org/scorware/
 trunk/tinfi/runtime/oo-dyn/src/main/java/org/scorware/
Property Changed
 trunk/tinfi/tinfi-mixed/
Diff
Copied:
trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/FCCompCtrlSourceCodeGenerator.j
ava (from rev 1186,
trunk/tinfi/opt/comp/src/main/java/org/scorware/tinfi/juliac/FCCompCtrlSourceCodeGenerator.jav
a) (0 => 1196)
---
trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/FCCompCtrlSourceCode
Generator.java (rev 0)
+++
trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/FCCompCtrlSourceCode
Generator.java 2008-12-13 20:41:32 UTC (rev 1196)
@@ -0,0 +1,167 @@
+package org.ow2.frascati.tinfi.juliac;
+
+import java.io.IOException;
+
+import org.objectweb.fractal.api.control.AttributeController;
+import org.objectweb.fractal.api.type.InterfaceType;
+import org.objectweb.fractal.julia.control.attribute.CloneableAttributeController;
+import org.objectweb.fractal.julia.type.BasicInterfaceType;
+import org.objectweb.fractal.juliac.InitializerClassGenerator;
+import org.objectweb.fractal.juliac.Juliac;
+import org.objectweb.fractal.juliac.JuliacConfig;
+import org.objectweb.fractal.juliac.proxy.AttributeControllerClassGenerator;
+import org.objectweb.fractal.juliac.proxy.InterfaceImplementationClassGenerator;
+import org.objectweb.fractal.juliac.proxy.ProxyClassGenerator;
+import org.objectweb.fractal.juliac.ucf.UnifiedClass;
+import org.osoa.sca.annotations.Callback;
+
+/**
+public class FCCompCtrlSourceCodeGenerator
+extends org.objectweb.fractal.juliac.opt.comp.FCCompCtrlSourceCodeGenerator {
+
+ public FCCompCtrlSourceCodeGenerator() {
+ super();
+ }
+
+
+ // -----------------------------------------------------------------------
+ // Implementation of the OptLevelSourceCodeGenerator interface
+ // -----------------------------------------------------------------------
+
....
....
....
Modified: trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/Tinfi.java (1195 => 1196)
--- trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/Tinfi.java
2008-12-12 18:10:44 UTC (rev 1195)
+++ trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/Tinfi.java
2008-12-13 20:41:32 UTC (rev 1196)
@@ -21,7 +21,7 @@
* Author: Lionel Seinturier
*/
+package org.ow2.frascati.tinfi;
import org.objectweb.fractal.api.Component;
import org.objectweb.fractal.api.Type;
Modified: trunk/tinfi/runtime/oo-
dyn/src/main/java/org/ow2/frascati/tinfi/TinfiBootstrapComponentImpl.java (1195 => 1196)
--- trunk/tinfi/runtime/oo-
dyn/src/main/java/org/ow2/frascati/tinfi/TinfiBootstrapComponentImpl.java 2008-12-
12 18:10:44 UTC (rev 1195)
+++ trunk/tinfi/runtime/oo-
dyn/src/main/java/org/ow2/frascati/tinfi/TinfiBootstrapComponentImpl.java 2008-12-
13 20:41:32 UTC (rev 1196)
@@ -21,7 +21,7 @@
* Author: Lionel Seinturier
Study Design: FraSCAti Commit
[[frascati-commits]] [1196] trunk/tinfi: More refactoring.
 Subject: [[frascati-commits]] [1196] trunk/tinfi: More refactoring.
 From: Lionel.Seinturier@xxxxxxx
 Date: Sat, 13 Dec 2008 21:41:32 +0100 (CET)
 Delivered-to: frascati-commits@xxxxxxx
Title: [1196] trunk/tinfi: More refactoring.
Revision
1196
Author
seintur
Date
2008-12-13 21:41:32 +0100 (Sat, 13 Dec 2008)
Log Message
More refactoring.
Modified Paths
 trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/Tinfi.java
 trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/TinfiBootstrapComponentImpl.java
Added Paths
 trunk/tinfi/opt/comp/src/main/java/org/ow2/
 trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/
 trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/
 trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/
 trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/FCCompCtrlSourceCodeGenerator.java
 trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/InitializerCompCtrlSourceCodeGenerator.java
Removed Paths
 trunk/tinfi/opt/comp/src/main/java/org/scorware/
 trunk/tinfi/runtime/oo-dyn/src/main/java/org/scorware/
Property Changed
 trunk/tinfi/tinfi-mixed/
Diff
Copied:
trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/FCCompCtrlSourceCodeGenerator.j
ava (from rev 1186,
trunk/tinfi/opt/comp/src/main/java/org/scorware/tinfi/juliac/FCCompCtrlSourceCodeGenerator.jav
a) (0 => 1196)
---
trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/FCCompCtrlSourceCode
Generator.java (rev 0)
+++
trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/FCCompCtrlSourceCode
Generator.java 2008-12-13 20:41:32 UTC (rev 1196)
@@ -0,0 +1,167 @@
+package org.ow2.frascati.tinfi.juliac;
+
+import java.io.IOException;
+
+import org.objectweb.fractal.api.control.AttributeController;
+import org.objectweb.fractal.api.type.InterfaceType;
+import org.objectweb.fractal.julia.control.attribute.CloneableAttributeController;
+import org.objectweb.fractal.julia.type.BasicInterfaceType;
+import org.objectweb.fractal.juliac.InitializerClassGenerator;
+import org.objectweb.fractal.juliac.Juliac;
+import org.objectweb.fractal.juliac.JuliacConfig;
+import org.objectweb.fractal.juliac.proxy.AttributeControllerClassGenerator;
+import org.objectweb.fractal.juliac.proxy.InterfaceImplementationClassGenerator;
+import org.objectweb.fractal.juliac.proxy.ProxyClassGenerator;
+import org.objectweb.fractal.juliac.ucf.UnifiedClass;
+import org.osoa.sca.annotations.Callback;
+
+/**
+public class FCCompCtrlSourceCodeGenerator
+extends org.objectweb.fractal.juliac.opt.comp.FCCompCtrlSourceCodeGenerator {
+
+ public FCCompCtrlSourceCodeGenerator() {
+ super();
+ }
+
+
+ // -----------------------------------------------------------------------
+ // Implementation of the OptLevelSourceCodeGenerator interface
+ // -----------------------------------------------------------------------
+
....
....
....
Modified: trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/Tinfi.java (1195 => 1196)
--- trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/Tinfi.java
2008-12-12 18:10:44 UTC (rev 1195)
+++ trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/Tinfi.java
2008-12-13 20:41:32 UTC (rev 1196)
@@ -21,7 +21,7 @@
* Author: Lionel Seinturier
*/
+package org.ow2.frascati.tinfi;
import org.objectweb.fractal.api.Component;
import org.objectweb.fractal.api.Type;
Modified: trunk/tinfi/runtime/oo-
dyn/src/main/java/org/ow2/frascati/tinfi/TinfiBootstrapComponentImpl.java (1195 => 1196)
--- trunk/tinfi/runtime/oo-
dyn/src/main/java/org/ow2/frascati/tinfi/TinfiBootstrapComponentImpl.java 2008-12-
12 18:10:44 UTC (rev 1195)
+++ trunk/tinfi/runtime/oo-
dyn/src/main/java/org/ow2/frascati/tinfi/TinfiBootstrapComponentImpl.java 2008-12-
13 20:41:32 UTC (rev 1196)
@@ -21,7 +21,7 @@
* Author: Lionel Seinturier
Study Design
7 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Study Design
7 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Study Design
 Detection of Service Patterns:
SODOP – Service Oriented Detection Of Patterns (Demange et al. 2013)
 Detection of Service Antipatterns:
SODA – Service Oriented Detection for Antipatterns (Moha et al. 2012)
8 of 21
Names Detected
Instances
Involved Java
Source Files
Patterns
Adapter 1 14
Basic Service 5 54
Facade 3 62
Proxy 3 61
Antipatterns
Bloated Service 3 25
Bottleneck Service 2 24
God Component 2 4
Multi Service 1 5
Nobody Home 4 12
Service Chain 3 10
The Knot 1 24
Tiny Service 1 24
OO Code Smells - 26,381 3,717
Study Design
9 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Study Design: Variables
 Independent Variables
Eight service antipatterns and four service patterns
i. f1
i  a file i was involved in the implementation of at least one pattern (RQ1)
ii. f2
i  a file i was involved in the implementation of at least one antipattern (RQ2)
iii. f3
i,j  a file i was involved in the implementation of antipattern j (RQ3)
 Dependent Variables
Change-proneness of services' source files
i. total number of changes as ci
ii. total number of code churns as di
10 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Study Design: Interpretation of Values
 Interpreting the effect sizes
 Interpreting the p-values
11 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Outline
- Analysed System: FraSCAti OW2
- Study Design
- Case Study Results
- Conclusion and Future Work
RQ1: What is the relation between service patterns
and change-proneness?
12 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
RQ1: What is the relation between service patterns
and change-proneness?
12 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
H1
01 : there is no difference between the total number of changes experienced
by files involved in the implementation of a service pattern and other files
H2
01 : there is no difference between the total number of code churns
experienced by files involved in the implementation of a service pattern and
other files
H1
01 : there is no difference between the total number of changes experienced
by files involved in the implementation of a service pattern and other files
H2
01 : there is no difference between the total number of code churns
experienced by files involved in the implementation of a service pattern and
other files
12 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
RQ1: What is the relation between service patterns
and change-proneness?
SODOP
Measure
change-proneness
Test H1
01 &H2
01
(Wilcoxon rank sum test)
Findings RQ1: Patterns are less change-prone but
not at (statistically) significant level
13 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
13 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Findings RQ1: Patterns are less change-prone but
not at (statistically) significant level
13 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Findings RQ1: Patterns are less change-prone but
not at (statistically) significant level
RQ2: What is the relation between service
antipatterns and change-proneness?
14 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
RQ2: What is the relation between service
antipatterns and change-proneness?
14 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
H1
02: there is no difference between the total number of changes experienced
by files involved in the implementation of a service antipattern and other files
H2
02 : there is no difference between the total number of code churns
experienced by files involved in the implementation of a service antipattern and
other files
14 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
RQ2: What is the relation between service
antipatterns and change-proneness?
H1
02: there is no difference between the total number of changes experienced
by files involved in the implementation of a service antipattern and other files
H2
02 : there is no difference between the total number of code churns
experienced by files involved in the implementation of a service antipattern and
other files
SODA
Measure
change-proneness
Test H1
02 & H2
02
(Wilcoxon rank sum test)
Findings RQ2: Antipatterns are more change-prone
at the statistically significant level
15 of 21
15 of 21
Findings RQ2: Antipatterns are more change-prone
at the statistically significant level
RQ3: What is the relation between particular kinds
of service antipatterns and change-proneness?
16 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
RQ3: What is the relation between particular kinds
of service antipatterns and change-proneness?
16 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
H1
03: there is no difference between the total number of changes experienced
by files from groups (GAi)iє{1,….8} and GNoAP
H1
03: there is no difference between the total number of code churns
experienced by files from groups (GAi)iє{1,….8} and GNoAP
H1
03: there is no difference between the total number of changes experienced
by files from groups (GAi)iє{1,….8} and GNoAP
H1
03: there is no difference between the total number of code churns
experienced by files from groups (GAi)iє{1,….8} and GNoAP
16 of 21
RQ3: What is the relation between particular kinds
of service antipatterns and change-proneness?
SODA
Measure
change-proneness
Test H1
03 & H2
03
(Kruskal-Wallis test)
Classify source files
(antipatterns vs non-antipatterns)
Findings RQ3: Antipatterns (investigated in this
study) are not equally change-prone
17 of 21
17 of 21
Findings RQ3: Antipatterns (investigated in this
study) are not equally change-prone
Confounding Impact:
Are service antipatterns more vulnerable to OO
code-level smells (and vice-versa for service pattern)?
18 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Confounding Impact:
Are service antipatterns more vulnerable to OO
code-level smells (and vice-versa for service pattern)?
18 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
SODA
SODOP
Compare the groups
(Wilcoxon rank sum test)
Classify source files
(patterns vs. non-patterns)
(antipatterns vs. non-antipatterns)
Findings on Confounding Impact
19 of 21
 Service antipatterns contain more (but not statistically significant) code smells
 Service patterns contain less code smells at the statistically significant level
Findings on Confounding Impact
19 of 21
 Service antipatterns contain more (but not statistically significant) code smells
 Service patterns contain less code smells at the statistically significant level
Take Home Message…
• Developers should avoid implementing Service
Antipatterns to
- reduce maintenance efforts and costs, and
- improve maintainability and ease evolution
• Implemented service patterns have less code-level
OO smells
20 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Outline
- Analysed System: FraSCAti OW2
- Study Design
- Case Study Results
- Conclusion and Future Work
Conclusion
21 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Conclusion
21 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Conclusion
21 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Conclusion
21 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Future Work
• Future works include
- replicate the study on other SBSs and service antipatterns
- investigate the changes types and their impact on antipatterns
- investigate the relation between service antipatterns
and fault-proneness
21 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
Questions ?

More Related Content

Similar to Investigating the Change-proneness of Service Patterns and Antipatterns

Ecsa14.ppt
Ecsa14.pptEcsa14.ppt
Ecsa14.ppt
Ptidej Team
 
Specification and Detection of SOA Antipatterns in Web Services
Specification and Detection of SOA Antipatterns in Web ServicesSpecification and Detection of SOA Antipatterns in Web Services
Specification and Detection of SOA Antipatterns in Web Services
Francis Palma
 
Ecsa14.ppt
Ecsa14.pptEcsa14.ppt
Icsoc12 tooldemo.ppt
Icsoc12 tooldemo.pptIcsoc12 tooldemo.ppt
Icsoc12 tooldemo.ppt
Ptidej Team
 
Icsoc12 tooldemo.ppt
Icsoc12 tooldemo.pptIcsoc12 tooldemo.ppt
Icsoc12 tooldemo.ppt
Yann-Gaël Guéhéneuc
 
A3: application-aware acceleration for wireless data networks
A3: application-aware acceleration for wireless data networksA3: application-aware acceleration for wireless data networks
A3: application-aware acceleration for wireless data networks
Zhenyun Zhuang
 
WEB SERVICE COMPOSITION IN DYNAMIC ENVIRONMENT: A COMPARATIVE STUDY
WEB SERVICE COMPOSITION IN DYNAMIC ENVIRONMENT: A COMPARATIVE STUDYWEB SERVICE COMPOSITION IN DYNAMIC ENVIRONMENT: A COMPARATIVE STUDY
WEB SERVICE COMPOSITION IN DYNAMIC ENVIRONMENT: A COMPARATIVE STUDY
cscpconf
 
The Cloudification Perspectives of Search-based Software Testing
The Cloudification Perspectives of Search-based Software TestingThe Cloudification Perspectives of Search-based Software Testing
The Cloudification Perspectives of Search-based Software Testing
Sebastiano Panichella
 
Carrier Strategies for Backbone Traffic Engineering and QoS
Carrier Strategies for Backbone Traffic Engineering and QoSCarrier Strategies for Backbone Traffic Engineering and QoS
Carrier Strategies for Backbone Traffic Engineering and QoS
Vishal Sharma, Ph.D.
 
Final Year IEEE Project Titles 2015
Final Year IEEE Project Titles 2015Final Year IEEE Project Titles 2015
Final Year IEEE Project Titles 2015
TTA_TNagar
 
Final Year Project IEEE 2015
Final Year Project IEEE 2015Final Year Project IEEE 2015
Final Year Project IEEE 2015
TTA_TNagar
 
Final Year IEEE Project 2013-2014 - Web Services Project Title and Abstract
Final Year IEEE Project 2013-2014  - Web Services Project Title and AbstractFinal Year IEEE Project 2013-2014  - Web Services Project Title and Abstract
Final Year IEEE Project 2013-2014 - Web Services Project Title and Abstract
elysiumtechnologies
 
presentation_SB_v01
presentation_SB_v01presentation_SB_v01
presentation_SB_v01
Salvatore Balzano
 
iiwas 2010
iiwas 2010iiwas 2010
iiwas 2010
steccami
 
Part 2 question 1 provide a technical description of 4b5b d
Part 2 question 1 provide a technical description of 4b5b dPart 2 question 1 provide a technical description of 4b5b d
Part 2 question 1 provide a technical description of 4b5b d
DIPESH30
 
SOA Solution Patterns
SOA Solution PatternsSOA Solution Patterns
SOA Solution Patterns
WSO2
 
DSR Microservices (Day 1, Part 1)
DSR Microservices (Day 1, Part 1)DSR Microservices (Day 1, Part 1)
DSR Microservices (Day 1, Part 1)
Steve Upton
 
CHARACTERIZING BEHAVIOUR
CHARACTERIZING BEHAVIOURCHARACTERIZING BEHAVIOUR
CHARACTERIZING BEHAVIOUR
csk selva
 
Icsoc12.ppt
Icsoc12.pptIcsoc12.ppt
Abstract + Poster (MSc Thesis)
Abstract + Poster (MSc Thesis)Abstract + Poster (MSc Thesis)
Abstract + Poster (MSc Thesis)
Louis Abalu
 

Similar to Investigating the Change-proneness of Service Patterns and Antipatterns (20)

Ecsa14.ppt
Ecsa14.pptEcsa14.ppt
Ecsa14.ppt
 
Specification and Detection of SOA Antipatterns in Web Services
Specification and Detection of SOA Antipatterns in Web ServicesSpecification and Detection of SOA Antipatterns in Web Services
Specification and Detection of SOA Antipatterns in Web Services
 
Ecsa14.ppt
Ecsa14.pptEcsa14.ppt
Ecsa14.ppt
 
Icsoc12 tooldemo.ppt
Icsoc12 tooldemo.pptIcsoc12 tooldemo.ppt
Icsoc12 tooldemo.ppt
 
Icsoc12 tooldemo.ppt
Icsoc12 tooldemo.pptIcsoc12 tooldemo.ppt
Icsoc12 tooldemo.ppt
 
A3: application-aware acceleration for wireless data networks
A3: application-aware acceleration for wireless data networksA3: application-aware acceleration for wireless data networks
A3: application-aware acceleration for wireless data networks
 
WEB SERVICE COMPOSITION IN DYNAMIC ENVIRONMENT: A COMPARATIVE STUDY
WEB SERVICE COMPOSITION IN DYNAMIC ENVIRONMENT: A COMPARATIVE STUDYWEB SERVICE COMPOSITION IN DYNAMIC ENVIRONMENT: A COMPARATIVE STUDY
WEB SERVICE COMPOSITION IN DYNAMIC ENVIRONMENT: A COMPARATIVE STUDY
 
The Cloudification Perspectives of Search-based Software Testing
The Cloudification Perspectives of Search-based Software TestingThe Cloudification Perspectives of Search-based Software Testing
The Cloudification Perspectives of Search-based Software Testing
 
Carrier Strategies for Backbone Traffic Engineering and QoS
Carrier Strategies for Backbone Traffic Engineering and QoSCarrier Strategies for Backbone Traffic Engineering and QoS
Carrier Strategies for Backbone Traffic Engineering and QoS
 
Final Year IEEE Project Titles 2015
Final Year IEEE Project Titles 2015Final Year IEEE Project Titles 2015
Final Year IEEE Project Titles 2015
 
Final Year Project IEEE 2015
Final Year Project IEEE 2015Final Year Project IEEE 2015
Final Year Project IEEE 2015
 
Final Year IEEE Project 2013-2014 - Web Services Project Title and Abstract
Final Year IEEE Project 2013-2014  - Web Services Project Title and AbstractFinal Year IEEE Project 2013-2014  - Web Services Project Title and Abstract
Final Year IEEE Project 2013-2014 - Web Services Project Title and Abstract
 
presentation_SB_v01
presentation_SB_v01presentation_SB_v01
presentation_SB_v01
 
iiwas 2010
iiwas 2010iiwas 2010
iiwas 2010
 
Part 2 question 1 provide a technical description of 4b5b d
Part 2 question 1 provide a technical description of 4b5b dPart 2 question 1 provide a technical description of 4b5b d
Part 2 question 1 provide a technical description of 4b5b d
 
SOA Solution Patterns
SOA Solution PatternsSOA Solution Patterns
SOA Solution Patterns
 
DSR Microservices (Day 1, Part 1)
DSR Microservices (Day 1, Part 1)DSR Microservices (Day 1, Part 1)
DSR Microservices (Day 1, Part 1)
 
CHARACTERIZING BEHAVIOUR
CHARACTERIZING BEHAVIOURCHARACTERIZING BEHAVIOUR
CHARACTERIZING BEHAVIOUR
 
Icsoc12.ppt
Icsoc12.pptIcsoc12.ppt
Icsoc12.ppt
 
Abstract + Poster (MSc Thesis)
Abstract + Poster (MSc Thesis)Abstract + Poster (MSc Thesis)
Abstract + Poster (MSc Thesis)
 

More from Francis Palma

Using Interactive Genetic Algorithm for Requirements Prioritization
Using Interactive Genetic Algorithm for Requirements PrioritizationUsing Interactive Genetic Algorithm for Requirements Prioritization
Using Interactive Genetic Algorithm for Requirements Prioritization
Francis Palma
 
Interactive Requirements Prioritization Using Search Based Optimization Techn...
Interactive Requirements Prioritization Using Search Based Optimization Techn...Interactive Requirements Prioritization Using Search Based Optimization Techn...
Interactive Requirements Prioritization Using Search Based Optimization Techn...
Francis Palma
 
Specification and Detection of SOA Antipatterns
Specification and Detection of SOA AntipatternsSpecification and Detection of SOA Antipatterns
Specification and Detection of SOA Antipatterns
Francis Palma
 
Recommendation System for Design Patterns in Software Development
Recommendation System for Design Patterns in Software DevelopmentRecommendation System for Design Patterns in Software Development
Recommendation System for Design Patterns in Software Development
Francis Palma
 
A Study on the Taxonomy of Service Antipatterns
A Study on the Taxonomy of Service AntipatternsA Study on the Taxonomy of Service Antipatterns
A Study on the Taxonomy of Service Antipatterns
Francis Palma
 
Specification and Detection of Business Process Antipatterns
Specification and Detection of Business Process AntipatternsSpecification and Detection of Business Process Antipatterns
Specification and Detection of Business Process Antipatterns
Francis Palma
 
Are RESTful APIs Well-designed? Detection of their Linguistic (Anti)Patterns
Are RESTful APIs Well-designed? Detection of their Linguistic (Anti)PatternsAre RESTful APIs Well-designed? Detection of their Linguistic (Anti)Patterns
Are RESTful APIs Well-designed? Detection of their Linguistic (Anti)Patterns
Francis Palma
 
Detection of REST Patterns and Antipatterns: A Heuristics-based Approach
Detection of REST Patterns and Antipatterns: A Heuristics-based ApproachDetection of REST Patterns and Antipatterns: A Heuristics-based Approach
Detection of REST Patterns and Antipatterns: A Heuristics-based Approach
Francis Palma
 

More from Francis Palma (8)

Using Interactive Genetic Algorithm for Requirements Prioritization
Using Interactive Genetic Algorithm for Requirements PrioritizationUsing Interactive Genetic Algorithm for Requirements Prioritization
Using Interactive Genetic Algorithm for Requirements Prioritization
 
Interactive Requirements Prioritization Using Search Based Optimization Techn...
Interactive Requirements Prioritization Using Search Based Optimization Techn...Interactive Requirements Prioritization Using Search Based Optimization Techn...
Interactive Requirements Prioritization Using Search Based Optimization Techn...
 
Specification and Detection of SOA Antipatterns
Specification and Detection of SOA AntipatternsSpecification and Detection of SOA Antipatterns
Specification and Detection of SOA Antipatterns
 
Recommendation System for Design Patterns in Software Development
Recommendation System for Design Patterns in Software DevelopmentRecommendation System for Design Patterns in Software Development
Recommendation System for Design Patterns in Software Development
 
A Study on the Taxonomy of Service Antipatterns
A Study on the Taxonomy of Service AntipatternsA Study on the Taxonomy of Service Antipatterns
A Study on the Taxonomy of Service Antipatterns
 
Specification and Detection of Business Process Antipatterns
Specification and Detection of Business Process AntipatternsSpecification and Detection of Business Process Antipatterns
Specification and Detection of Business Process Antipatterns
 
Are RESTful APIs Well-designed? Detection of their Linguistic (Anti)Patterns
Are RESTful APIs Well-designed? Detection of their Linguistic (Anti)PatternsAre RESTful APIs Well-designed? Detection of their Linguistic (Anti)Patterns
Are RESTful APIs Well-designed? Detection of their Linguistic (Anti)Patterns
 
Detection of REST Patterns and Antipatterns: A Heuristics-based Approach
Detection of REST Patterns and Antipatterns: A Heuristics-based ApproachDetection of REST Patterns and Antipatterns: A Heuristics-based Approach
Detection of REST Patterns and Antipatterns: A Heuristics-based Approach
 

Recently uploaded

Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
shyamraj55
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
panagenda
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 

Recently uploaded (20)

Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with SlackLet's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slack
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
HCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAUHCL Notes and Domino License Cost Reduction in the World of DLAU
HCL Notes and Domino License Cost Reduction in the World of DLAU
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 

Investigating the Change-proneness of Service Patterns and Antipatterns

  • 1. Investigating the Change-proneness of Service Patterns and Antipatterns Francis Palma, Le An, Foutse Khomh, Naouel Moha, and Yann-Gaël Guéhéneuc École Polytechnique de Montréal, Canada SOCA 2014, Matsue, Japan
  • 2. Problem Context (1/3) Service-based Systems 2 of 21Investigating the Change-proneness of Service Patterns and Antipatterns SOAP Web Services SCA Systems
  • 3. Problem Context (1/3) SOAP Web Services SCA Systems Service-based Systems Design Patterns 2 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 4. Problem Context (1/3) SOAP Web Services SCA Systems Service-based Systems Maintenance Evolution SOAP Web Services SCA Systems Design Patterns 2 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 5. Problem Context (1/3) SOAP Web Services SCA Systems Service-based Systems Maintenance Evolution SOAP Web Services SCA Systems - may degrade the design - may degrade the QoS = Antipatterns Design Patterns 2 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 6. Problem Context (1/3) 2 of 21 1. Highly change-prone? 2. Require more maintenance efforts or cause expensive maintenance? SOAP Web Services SCA Systems Existing Antipatterns ? Investigating the Change-proneness of Service Patterns and Antipatterns
  • 7. Problem Context (2/3): Service Antipatterns and Patterns 3 of 21Investigating the Change-proneness of Service Patterns and Antipatterns Multi Service Antipattern
  • 8. Problem Context (2/3): Service Antipatterns and Patterns Multi Service Antipattern Proxy Service Pattern Proxy Service Actual Service Calls Calls Client 3 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 9. Problem Context (3/3): Detection vs. Impact 4 of 21Investigating the Change-proneness of Service Patterns and Antipatterns • Detection of service patterns? (SODOP, Demange et al. 2013) • Detection of service antipatterns? (SODA, Moha et al. 2012) • Improve/degrade the design and the QoS? • Facilitate/hinder the maintenance and evolution of an SBS? - impact on the change-proneness, i.e., maintenance cost?
  • 10. Problem Context (3/3): Detection vs. Impact Change-proneness of a service* - number of changes  the frequency of changes on a service source files - code churns  the size of changes on a service source files 4 of 21 • Detection of service patterns? (SODOP, Demange et al. 2013) • Detection of service antipatterns? (SODA, Moha et al. 2012) • Improve/degrade the design and the QoS? • Facilitate/hinder the maintenance and evolution of an SBS? - impact on the change-proneness, i.e., maintenance cost? *Code Churn: A Measure for Estimating the Impact of Code Change: Sebastian G. Elbaum and John C. Munson (1998)
  • 11. Research Questions • RQ1: What is the relation between service patterns and change-proneness? • RQ2: What is the relation between service antipatterns and change-proneness? • RQ3: What is the relation between particular kinds of service antipatterns and change-proneness? • Confounding impact of OO code-level smells 5 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 12. Outline - Analysed System: FraSCAti OW2 - Study Design - Case Study Results - Conclusion and Future Work
  • 13. Outline - Analysed System: FraSCAti OW2 - Study Design - Case Study Results - Conclusion and Future Work
  • 14. FraSCAti OW2 frascati.ow2.org Investigating the Change-proneness of Service Patterns and Antipatterns Total Services 130 (62 analysed) Total Size 170 KLOC Total Changed Files 15,863* Total Java Source Files 9,020* Total Changes 71,151* Total Code Churns 62,676,363* 6 of 21 *Entire commit history
  • 15. Outline - Analysed System: FraSCAti OW2 - Study Design - Case Study Results - Conclusion and Future Work
  • 16. Study Design 7 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 17. Study Design 7 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 18. Study Design: FraSCAti Commit [[frascati-commits]] [1196] trunk/tinfi: More refactoring.  Subject: [[frascati-commits]] [1196] trunk/tinfi: More refactoring.  From: Lionel.Seinturier@xxxxxxx  Date: Sat, 13 Dec 2008 21:41:32 +0100 (CET)  Delivered-to: frascati-commits@xxxxxxx Title: [1196] trunk/tinfi: More refactoring. Revision 1196 Author seintur Date 2008-12-13 21:41:32 +0100 (Sat, 13 Dec 2008) Log Message More refactoring. Modified Paths  trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/Tinfi.java  trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/TinfiBootstrapComponentImpl.java Added Paths  trunk/tinfi/opt/comp/src/main/java/org/ow2/  trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/  trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/  trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/  trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/FCCompCtrlSourceCodeGenerator.java  trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/InitializerCompCtrlSourceCodeGenerator.java Removed Paths  trunk/tinfi/opt/comp/src/main/java/org/scorware/  trunk/tinfi/runtime/oo-dyn/src/main/java/org/scorware/ Property Changed  trunk/tinfi/tinfi-mixed/ Diff Copied: trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/FCCompCtrlSourceCodeGenerator.j ava (from rev 1186, trunk/tinfi/opt/comp/src/main/java/org/scorware/tinfi/juliac/FCCompCtrlSourceCodeGenerator.jav a) (0 => 1196) --- trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/FCCompCtrlSourceCode Generator.java (rev 0) +++ trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/FCCompCtrlSourceCode Generator.java 2008-12-13 20:41:32 UTC (rev 1196) @@ -0,0 +1,167 @@ +package org.ow2.frascati.tinfi.juliac; + +import java.io.IOException; + +import org.objectweb.fractal.api.control.AttributeController; +import org.objectweb.fractal.api.type.InterfaceType; +import org.objectweb.fractal.julia.control.attribute.CloneableAttributeController; +import org.objectweb.fractal.julia.type.BasicInterfaceType; +import org.objectweb.fractal.juliac.InitializerClassGenerator; +import org.objectweb.fractal.juliac.Juliac; +import org.objectweb.fractal.juliac.JuliacConfig; +import org.objectweb.fractal.juliac.proxy.AttributeControllerClassGenerator; +import org.objectweb.fractal.juliac.proxy.InterfaceImplementationClassGenerator; +import org.objectweb.fractal.juliac.proxy.ProxyClassGenerator; +import org.objectweb.fractal.juliac.ucf.UnifiedClass; +import org.osoa.sca.annotations.Callback; + +/** +public class FCCompCtrlSourceCodeGenerator +extends org.objectweb.fractal.juliac.opt.comp.FCCompCtrlSourceCodeGenerator { + + public FCCompCtrlSourceCodeGenerator() { + super(); + } + + + // ----------------------------------------------------------------------- + // Implementation of the OptLevelSourceCodeGenerator interface + // ----------------------------------------------------------------------- + .... .... .... Modified: trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/Tinfi.java (1195 => 1196) --- trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/Tinfi.java 2008-12-12 18:10:44 UTC (rev 1195) +++ trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/Tinfi.java 2008-12-13 20:41:32 UTC (rev 1196) @@ -21,7 +21,7 @@ * Author: Lionel Seinturier */ +package org.ow2.frascati.tinfi; import org.objectweb.fractal.api.Component; import org.objectweb.fractal.api.Type; Modified: trunk/tinfi/runtime/oo- dyn/src/main/java/org/ow2/frascati/tinfi/TinfiBootstrapComponentImpl.java (1195 => 1196) --- trunk/tinfi/runtime/oo- dyn/src/main/java/org/ow2/frascati/tinfi/TinfiBootstrapComponentImpl.java 2008-12- 12 18:10:44 UTC (rev 1195) +++ trunk/tinfi/runtime/oo- dyn/src/main/java/org/ow2/frascati/tinfi/TinfiBootstrapComponentImpl.java 2008-12- 13 20:41:32 UTC (rev 1196) @@ -21,7 +21,7 @@ * Author: Lionel Seinturier
  • 19. Study Design: FraSCAti Commit [[frascati-commits]] [1196] trunk/tinfi: More refactoring.  Subject: [[frascati-commits]] [1196] trunk/tinfi: More refactoring.  From: Lionel.Seinturier@xxxxxxx  Date: Sat, 13 Dec 2008 21:41:32 +0100 (CET)  Delivered-to: frascati-commits@xxxxxxx Title: [1196] trunk/tinfi: More refactoring. Revision 1196 Author seintur Date 2008-12-13 21:41:32 +0100 (Sat, 13 Dec 2008) Log Message More refactoring. Modified Paths  trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/Tinfi.java  trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/TinfiBootstrapComponentImpl.java Added Paths  trunk/tinfi/opt/comp/src/main/java/org/ow2/  trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/  trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/  trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/  trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/FCCompCtrlSourceCodeGenerator.java  trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/InitializerCompCtrlSourceCodeGenerator.java Removed Paths  trunk/tinfi/opt/comp/src/main/java/org/scorware/  trunk/tinfi/runtime/oo-dyn/src/main/java/org/scorware/ Property Changed  trunk/tinfi/tinfi-mixed/ Diff Copied: trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/FCCompCtrlSourceCodeGenerator.j ava (from rev 1186, trunk/tinfi/opt/comp/src/main/java/org/scorware/tinfi/juliac/FCCompCtrlSourceCodeGenerator.jav a) (0 => 1196) --- trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/FCCompCtrlSourceCode Generator.java (rev 0) +++ trunk/tinfi/opt/comp/src/main/java/org/ow2/frascati/tinfi/juliac/FCCompCtrlSourceCode Generator.java 2008-12-13 20:41:32 UTC (rev 1196) @@ -0,0 +1,167 @@ +package org.ow2.frascati.tinfi.juliac; + +import java.io.IOException; + +import org.objectweb.fractal.api.control.AttributeController; +import org.objectweb.fractal.api.type.InterfaceType; +import org.objectweb.fractal.julia.control.attribute.CloneableAttributeController; +import org.objectweb.fractal.julia.type.BasicInterfaceType; +import org.objectweb.fractal.juliac.InitializerClassGenerator; +import org.objectweb.fractal.juliac.Juliac; +import org.objectweb.fractal.juliac.JuliacConfig; +import org.objectweb.fractal.juliac.proxy.AttributeControllerClassGenerator; +import org.objectweb.fractal.juliac.proxy.InterfaceImplementationClassGenerator; +import org.objectweb.fractal.juliac.proxy.ProxyClassGenerator; +import org.objectweb.fractal.juliac.ucf.UnifiedClass; +import org.osoa.sca.annotations.Callback; + +/** +public class FCCompCtrlSourceCodeGenerator +extends org.objectweb.fractal.juliac.opt.comp.FCCompCtrlSourceCodeGenerator { + + public FCCompCtrlSourceCodeGenerator() { + super(); + } + + + // ----------------------------------------------------------------------- + // Implementation of the OptLevelSourceCodeGenerator interface + // ----------------------------------------------------------------------- + .... .... .... Modified: trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/Tinfi.java (1195 => 1196) --- trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/Tinfi.java 2008-12-12 18:10:44 UTC (rev 1195) +++ trunk/tinfi/runtime/oo-dyn/src/main/java/org/ow2/frascati/tinfi/Tinfi.java 2008-12-13 20:41:32 UTC (rev 1196) @@ -21,7 +21,7 @@ * Author: Lionel Seinturier */ +package org.ow2.frascati.tinfi; import org.objectweb.fractal.api.Component; import org.objectweb.fractal.api.Type; Modified: trunk/tinfi/runtime/oo- dyn/src/main/java/org/ow2/frascati/tinfi/TinfiBootstrapComponentImpl.java (1195 => 1196) --- trunk/tinfi/runtime/oo- dyn/src/main/java/org/ow2/frascati/tinfi/TinfiBootstrapComponentImpl.java 2008-12- 12 18:10:44 UTC (rev 1195) +++ trunk/tinfi/runtime/oo- dyn/src/main/java/org/ow2/frascati/tinfi/TinfiBootstrapComponentImpl.java 2008-12- 13 20:41:32 UTC (rev 1196) @@ -21,7 +21,7 @@ * Author: Lionel Seinturier
  • 20. Study Design 7 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 21. Study Design 7 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 22. Study Design  Detection of Service Patterns: SODOP – Service Oriented Detection Of Patterns (Demange et al. 2013)  Detection of Service Antipatterns: SODA – Service Oriented Detection for Antipatterns (Moha et al. 2012) 8 of 21 Names Detected Instances Involved Java Source Files Patterns Adapter 1 14 Basic Service 5 54 Facade 3 62 Proxy 3 61 Antipatterns Bloated Service 3 25 Bottleneck Service 2 24 God Component 2 4 Multi Service 1 5 Nobody Home 4 12 Service Chain 3 10 The Knot 1 24 Tiny Service 1 24 OO Code Smells - 26,381 3,717
  • 23. Study Design 9 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 24. Study Design: Variables  Independent Variables Eight service antipatterns and four service patterns i. f1 i  a file i was involved in the implementation of at least one pattern (RQ1) ii. f2 i  a file i was involved in the implementation of at least one antipattern (RQ2) iii. f3 i,j  a file i was involved in the implementation of antipattern j (RQ3)  Dependent Variables Change-proneness of services' source files i. total number of changes as ci ii. total number of code churns as di 10 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 25. Study Design: Interpretation of Values  Interpreting the effect sizes  Interpreting the p-values 11 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 26. Outline - Analysed System: FraSCAti OW2 - Study Design - Case Study Results - Conclusion and Future Work
  • 27. RQ1: What is the relation between service patterns and change-proneness? 12 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 28. RQ1: What is the relation between service patterns and change-proneness? 12 of 21Investigating the Change-proneness of Service Patterns and Antipatterns H1 01 : there is no difference between the total number of changes experienced by files involved in the implementation of a service pattern and other files H2 01 : there is no difference between the total number of code churns experienced by files involved in the implementation of a service pattern and other files
  • 29. H1 01 : there is no difference between the total number of changes experienced by files involved in the implementation of a service pattern and other files H2 01 : there is no difference between the total number of code churns experienced by files involved in the implementation of a service pattern and other files 12 of 21Investigating the Change-proneness of Service Patterns and Antipatterns RQ1: What is the relation between service patterns and change-proneness? SODOP Measure change-proneness Test H1 01 &H2 01 (Wilcoxon rank sum test)
  • 30. Findings RQ1: Patterns are less change-prone but not at (statistically) significant level 13 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 31. 13 of 21Investigating the Change-proneness of Service Patterns and Antipatterns Findings RQ1: Patterns are less change-prone but not at (statistically) significant level
  • 32. 13 of 21Investigating the Change-proneness of Service Patterns and Antipatterns Findings RQ1: Patterns are less change-prone but not at (statistically) significant level
  • 33. RQ2: What is the relation between service antipatterns and change-proneness? 14 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 34. RQ2: What is the relation between service antipatterns and change-proneness? 14 of 21Investigating the Change-proneness of Service Patterns and Antipatterns H1 02: there is no difference between the total number of changes experienced by files involved in the implementation of a service antipattern and other files H2 02 : there is no difference between the total number of code churns experienced by files involved in the implementation of a service antipattern and other files
  • 35. 14 of 21Investigating the Change-proneness of Service Patterns and Antipatterns RQ2: What is the relation between service antipatterns and change-proneness? H1 02: there is no difference between the total number of changes experienced by files involved in the implementation of a service antipattern and other files H2 02 : there is no difference between the total number of code churns experienced by files involved in the implementation of a service antipattern and other files SODA Measure change-proneness Test H1 02 & H2 02 (Wilcoxon rank sum test)
  • 36. Findings RQ2: Antipatterns are more change-prone at the statistically significant level 15 of 21
  • 37. 15 of 21 Findings RQ2: Antipatterns are more change-prone at the statistically significant level
  • 38. RQ3: What is the relation between particular kinds of service antipatterns and change-proneness? 16 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 39. RQ3: What is the relation between particular kinds of service antipatterns and change-proneness? 16 of 21Investigating the Change-proneness of Service Patterns and Antipatterns H1 03: there is no difference between the total number of changes experienced by files from groups (GAi)iє{1,….8} and GNoAP H1 03: there is no difference between the total number of code churns experienced by files from groups (GAi)iє{1,….8} and GNoAP
  • 40. H1 03: there is no difference between the total number of changes experienced by files from groups (GAi)iє{1,….8} and GNoAP H1 03: there is no difference between the total number of code churns experienced by files from groups (GAi)iє{1,….8} and GNoAP 16 of 21 RQ3: What is the relation between particular kinds of service antipatterns and change-proneness? SODA Measure change-proneness Test H1 03 & H2 03 (Kruskal-Wallis test) Classify source files (antipatterns vs non-antipatterns)
  • 41. Findings RQ3: Antipatterns (investigated in this study) are not equally change-prone 17 of 21
  • 42. 17 of 21 Findings RQ3: Antipatterns (investigated in this study) are not equally change-prone
  • 43. Confounding Impact: Are service antipatterns more vulnerable to OO code-level smells (and vice-versa for service pattern)? 18 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 44. Confounding Impact: Are service antipatterns more vulnerable to OO code-level smells (and vice-versa for service pattern)? 18 of 21Investigating the Change-proneness of Service Patterns and Antipatterns SODA SODOP Compare the groups (Wilcoxon rank sum test) Classify source files (patterns vs. non-patterns) (antipatterns vs. non-antipatterns)
  • 45. Findings on Confounding Impact 19 of 21  Service antipatterns contain more (but not statistically significant) code smells  Service patterns contain less code smells at the statistically significant level
  • 46. Findings on Confounding Impact 19 of 21  Service antipatterns contain more (but not statistically significant) code smells  Service patterns contain less code smells at the statistically significant level
  • 47. Take Home Message… • Developers should avoid implementing Service Antipatterns to - reduce maintenance efforts and costs, and - improve maintainability and ease evolution • Implemented service patterns have less code-level OO smells 20 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 48. Outline - Analysed System: FraSCAti OW2 - Study Design - Case Study Results - Conclusion and Future Work
  • 49. Conclusion 21 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 50. Conclusion 21 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 51. Conclusion 21 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 52. Conclusion 21 of 21Investigating the Change-proneness of Service Patterns and Antipatterns
  • 53. Future Work • Future works include - replicate the study on other SBSs and service antipatterns - investigate the changes types and their impact on antipatterns - investigate the relation between service antipatterns and fault-proneness 21 of 21Investigating the Change-proneness of Service Patterns and Antipatterns