SlideShare a Scribd company logo
1 of 54
Download to read offline
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 Soca14.ppt

Specification and Detection of SOA Antipatterns
Specification and Detection of SOA AntipatternsSpecification and Detection of SOA Antipatterns
Specification and Detection of SOA AntipatternsFrancis Palma
 
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 QoSVishal Sharma, Ph.D.
 
Final Year Project IEEE 2015
Final Year Project IEEE 2015Final Year Project IEEE 2015
Final Year Project IEEE 2015TTA_TNagar
 
Final Year IEEE Project Titles 2015
Final Year IEEE Project Titles 2015Final Year IEEE Project Titles 2015
Final Year IEEE Project Titles 2015TTA_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 Abstractelysiumtechnologies
 
iiwas 2010
iiwas 2010iiwas 2010
iiwas 2010steccami
 
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 dDIPESH30
 
SOA Solution Patterns
SOA Solution PatternsSOA Solution Patterns
SOA Solution PatternsWSO2
 
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 BEHAVIOURcsk selva
 
Abstract + Poster (MSc Thesis)
Abstract + Poster (MSc Thesis)Abstract + Poster (MSc Thesis)
Abstract + Poster (MSc Thesis)Louis Abalu
 
Software architecture unit 4
Software architecture unit 4Software architecture unit 4
Software architecture unit 4yawani05
 
Network simulator
Network simulatorNetwork simulator
Network simulatorjausmin kj
 
Deployment Automation on OpenStack with TOSCA and Cloudify
Deployment Automation on OpenStack with TOSCA and CloudifyDeployment Automation on OpenStack with TOSCA and Cloudify
Deployment Automation on OpenStack with TOSCA and CloudifyUri Cohen
 
26 ijcse-01238-4 sinthuja
26 ijcse-01238-4 sinthuja26 ijcse-01238-4 sinthuja
26 ijcse-01238-4 sinthujaShivlal Mewada
 
Data stream processing and micro service architecture
Data stream processing and micro service architectureData stream processing and micro service architecture
Data stream processing and micro service architectureVyacheslav Benedichuk
 
Deployment Automation on OpenStack with TOSCA and Cloudify
Deployment Automation on OpenStack with  TOSCA and CloudifyDeployment Automation on OpenStack with  TOSCA and Cloudify
Deployment Automation on OpenStack with TOSCA and CloudifyCloudify Community
 
Adopting a Canonical Data Model - how to apply to an existing environment wit...
Adopting a Canonical Data Model - how to apply to an existing environment wit...Adopting a Canonical Data Model - how to apply to an existing environment wit...
Adopting a Canonical Data Model - how to apply to an existing environment wit...Phil Wilkins
 

Similar to Soca14.ppt (20)

Specification and Detection of SOA Antipatterns
Specification and Detection of SOA AntipatternsSpecification and Detection of SOA Antipatterns
Specification and Detection of SOA Antipatterns
 
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 Project IEEE 2015
Final Year Project IEEE 2015Final Year Project IEEE 2015
Final Year Project IEEE 2015
 
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 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)
 
Software architecture unit 4
Software architecture unit 4Software architecture unit 4
Software architecture unit 4
 
Network simulator
Network simulatorNetwork simulator
Network simulator
 
Deployment Automation on OpenStack with TOSCA and Cloudify
Deployment Automation on OpenStack with TOSCA and CloudifyDeployment Automation on OpenStack with TOSCA and Cloudify
Deployment Automation on OpenStack with TOSCA and Cloudify
 
26 ijcse-01238-4 sinthuja
26 ijcse-01238-4 sinthuja26 ijcse-01238-4 sinthuja
26 ijcse-01238-4 sinthuja
 
Data stream processing and micro service architecture
Data stream processing and micro service architectureData stream processing and micro service architecture
Data stream processing and micro service architecture
 
Deployment Automation on OpenStack with TOSCA and Cloudify
Deployment Automation on OpenStack with  TOSCA and CloudifyDeployment Automation on OpenStack with  TOSCA and Cloudify
Deployment Automation on OpenStack with TOSCA and Cloudify
 
Adopting a Canonical Data Model - how to apply to an existing environment wit...
Adopting a Canonical Data Model - how to apply to an existing environment wit...Adopting a Canonical Data Model - how to apply to an existing environment wit...
Adopting a Canonical Data Model - how to apply to an existing environment wit...
 

More from Yann-Gaël Guéhéneuc

Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Yann-Gaël Guéhéneuc
 
Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Yann-Gaël Guéhéneuc
 
Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Yann-Gaël Guéhéneuc
 
Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Yann-Gaël Guéhéneuc
 
Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Yann-Gaël Guéhéneuc
 
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...Yann-Gaël Guéhéneuc
 
An Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesAn Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesYann-Gaël Guéhéneuc
 
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Yann-Gaël Guéhéneuc
 
On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1Yann-Gaël Guéhéneuc
 
On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6Yann-Gaël Guéhéneuc
 

More from Yann-Gaël Guéhéneuc (20)

Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5Advice for writing a NSERC Discovery grant application v0.5
Advice for writing a NSERC Discovery grant application v0.5
 
Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1Ptidej Architecture, Design, and Implementation in Action v2.1
Ptidej Architecture, Design, and Implementation in Action v2.1
 
Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22Evolution and Examples of Java Features, from Java 1.7 to Java 22
Evolution and Examples of Java Features, from Java 1.7 to Java 22
 
Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3Consequences and Principles of Software Quality v0.3
Consequences and Principles of Software Quality v0.3
 
Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9Some Pitfalls with Python and Their Possible Solutions v0.9
Some Pitfalls with Python and Their Possible Solutions v0.9
 
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
An Explanation of the Unicode, the Text Encoding Standard, Its Usages and Imp...
 
An Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its ConsequencesAn Explanation of the Halting Problem and Its Consequences
An Explanation of the Halting Problem and Its Consequences
 
Are CPUs VMs Like Any Others? v1.0
Are CPUs VMs Like Any Others? v1.0Are CPUs VMs Like Any Others? v1.0
Are CPUs VMs Like Any Others? v1.0
 
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
Informaticien(ne)s célèbres (v1.0.2, 19/02/20)
 
Well-known Computer Scientists v1.0.2
Well-known Computer Scientists v1.0.2Well-known Computer Scientists v1.0.2
Well-known Computer Scientists v1.0.2
 
On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1On Java Generics, History, Use, Caveats v1.1
On Java Generics, History, Use, Caveats v1.1
 
On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6On Reflection in OO Programming Languages v1.6
On Reflection in OO Programming Languages v1.6
 
ICSOC'21
ICSOC'21ICSOC'21
ICSOC'21
 
Vissoft21.ppt
Vissoft21.pptVissoft21.ppt
Vissoft21.ppt
 
Service computation20.ppt
Service computation20.pptService computation20.ppt
Service computation20.ppt
 
Serp4 iot20.ppt
Serp4 iot20.pptSerp4 iot20.ppt
Serp4 iot20.ppt
 
Msr20.ppt
Msr20.pptMsr20.ppt
Msr20.ppt
 
Iwesep19.ppt
Iwesep19.pptIwesep19.ppt
Iwesep19.ppt
 
Icsoc20.ppt
Icsoc20.pptIcsoc20.ppt
Icsoc20.ppt
 
Icsoc18.ppt
Icsoc18.pptIcsoc18.ppt
Icsoc18.ppt
 

Recently uploaded

Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Intelisync
 

Recently uploaded (20)

Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Exploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the ProcessExploring iOS App Development: Simplifying the Process
Exploring iOS App Development: Simplifying the Process
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)Introduction to Decentralized Applications (dApps)
Introduction to Decentralized Applications (dApps)
 

Soca14.ppt

  • 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