SlideShare a Scribd company logo
Specification and Detection of
SOA Antipatterns
Francis Palma
francis.palma@polymtl.ca
Ptidej Team, DGIGL, École Polytechnique de Montréal
Latece, Département d'informatique, Université du Québec à Montréal
Supervisors: Dr. Naouel Moha and Dr. Yann-Gaël Guéhéneuc
B.Sc. in Computer Science and Engineering
2005
2
B.Sc. in Computer Science and Engineering
2005
M.Sc. in Software Engineering
2010
2
B.Sc. in Computer Science and Engineering
2005
M.Sc. in Software Engineering
2010
Research Collaborator
2011 Jan – 2011 Aug
2
B.Sc. in Computer Science and Engineering
2005
M.Sc. in Software Engineering
2010
Research Collaborator
2011 Jan – 2011 Aug
PhD Candidate…
2011 Fall to present
2
Good Things in Lille…
Background
Background
• Traditional architectural models vs. Service-Oriented Architecture (SOA)
• Service-based Systems (SBSs) [Palma et al. 2013]
• Different SOA technological/architectural choices:
o SOAP-based Web service
o SCA (Service Component Architecture)
o REST-style (REpresentational State Transfer), etc.
Specification and Detection of SOA Antipatterns 3
SOA Technologies
XML-RPC-based Web services SOAP-based Web services
Service Component Architecture REST-style
Specification and Detection of SOA Antipatterns 4
An Example
SBSs evolve to fit new user requirements, execution contexts:
- may degrade design and quality of service (QoS)
- may cause the appearance of common poor solutions: Antipatterns
Specification and Detection of SOA Antipatterns 5
Motivation
• Maintenance and evolution phase consumes resources of more than 60%
(Harrison and Cook, 1990)
• SOA antipatterns:
- evolution may introduce antipatterns or
- existing antipatterns might hinder evolution
Main objective:
To ease the maintenance and evolution of SBSs by detecting SOA antipatterns
• Detection of SOA antipatterns
- assessing statically: the design quality
- assessing dynamically: the QoS
Specification and Detection of SOA Antipatterns 6
Antipatterns Example
Tiny Service
 Few Methods
 Low Cohesion
 Very High Coupling
Specification and Detection of SOA Antipatterns 7
Antipatterns Example
Tiny Service Multi Service
 Many Methods
 Very Low Cohesion
 High Response Time
 Low Availability
 Few Methods
 Low Cohesion
 Very High Coupling
Specification and Detection of SOA Antipatterns 7
More Examples…
DropBox Server Response 1:
Header: {
x-frame-options=[SAMEORIGIN],
x-dropbox-request-id=[b9a25269beb2c75fa7d7e21e1638bb9d],
Connection=[keep-alive],
Server=[nginx],
pragma=[no-cache],
cache-control=[no-cache],
x-server-response-time=[64],
x-dropbox-http-protocol=[None],
set-cookie=[gvc=MjExODUyMTE…..
expires=Tue, 26 Mar 2019 18:34:14 GMT],
Transfer-Encoding=[chunked],
Date=[Thu, 27 Mar 2014 18:34:14 GMT],
Content-Type=[application/json],
X-RequestId=[c64da98881e565a90a5dd9aecea9f049]
}
Body: {
"hash": "f9d780e7655fe43261b4de9ec9a926eb",
"revision": 2,
"rev": "21e8a5a19",
"thumb_exists": false,
"bytes": 0,
"modified": "Tue, 28 Jan 2014 21:45:31 +0000",
"path": "/test",
"is_dir": true,
"icon": "folder",
"root": "dropbox",
"contents": [ {
"revision": 3,
"rev": "31e8a5a19",
"thumb_exists": false,
"bytes": 4,
"modified": "Tue, 28 Jan 2014 21:46:30 +0000",
"client_mtime": "Tue, 28 Jan 2014 21:46:30",
"path": "/test/test.txt",
"is_dir": false,
"icon": "page_white_text",
"root": "dropbox",
"mime_type": "text/plain",
"size": "4 bytes“
}
],
"size": "0 bytes“
} 8
More Examples…
DropBox Server Response 1:
Header: {
x-frame-options=[SAMEORIGIN],
x-dropbox-request-id=[b9a25269beb2c75fa7d7e21e1638bb9d],
Connection=[keep-alive],
Server=[nginx],
pragma=[no-cache],
cache-control=[no-cache],
x-server-response-time=[64],
x-dropbox-http-protocol=[None],
set-cookie=[gvc=MjExODUyMTE…..
expires=Tue, 26 Mar 2019 18:34:14 GMT],
Transfer-Encoding=[chunked],
Date=[Thu, 27 Mar 2014 18:34:14 GMT],
Content-Type=[application/json],
X-RequestId=[c64da98881e565a90a5dd9aecea9f049]
}
Body: {
"hash": "f9d780e7655fe43261b4de9ec9a926eb",
"revision": 2,
"rev": "21e8a5a19",
"thumb_exists": false,
"bytes": 0,
"modified": "Tue, 28 Jan 2014 21:45:31 +0000",
"path": "/test",
"is_dir": true,
"icon": "folder",
"root": "dropbox",
"contents": [ {
"revision": 3,
"rev": "31e8a5a19",
"thumb_exists": false,
"bytes": 4,
"modified": "Tue, 28 Jan 2014 21:46:30 +0000",
"client_mtime": "Tue, 28 Jan 2014 21:46:30",
"path": "/test/test.txt",
"is_dir": false,
"icon": "page_white_text",
"root": "dropbox",
"mime_type": "text/plain",
"size": "4 bytes“
}
],
"size": "0 bytes“
}
No hyperlinks to follow!No hyperlinks to follow!
No hyperlinks to follow!No hyperlinks to follow!
8
More Examples…
No hyperlinks to follow!No hyperlinks to follow!
No hyperlinks to follow!No hyperlinks to follow!
DropBox Server Response 1:
Header: {
x-frame-options=[SAMEORIGIN],
x-dropbox-request-id=[b9a25269beb2c75fa7d7e21e1638bb9d],
Connection=[keep-alive],
Server=[nginx],
pragma=[no-cache],
cache-control=[no-cache],
x-server-response-time=[64],
x-dropbox-http-protocol=[None],
set-cookie=[gvc=MjExODUyMTE…..
expires=Tue, 26 Mar 2019 18:34:14 GMT],
Transfer-Encoding=[chunked],
Date=[Thu, 27 Mar 2014 18:34:14 GMT],
Content-Type=[application/json],
X-RequestId=[c64da98881e565a90a5dd9aecea9f049]
}
Body: {
"hash": "f9d780e7655fe43261b4de9ec9a926eb",
"revision": 2,
"rev": "21e8a5a19",
"thumb_exists": false,
"bytes": 0,
"modified": "Tue, 28 Jan 2014 21:45:31 +0000",
"path": "/test",
"is_dir": true,
"icon": "folder",
"root": "dropbox",
"contents": [ {
"revision": 3,
"rev": "31e8a5a19",
"thumb_exists": false,
"bytes": 4,
"modified": "Tue, 28 Jan 2014 21:46:30 +0000",
"client_mtime": "Tue, 28 Jan 2014 21:46:30",
"path": "/test/test.txt",
"is_dir": false,
"icon": "page_white_text",
"root": "dropbox",
"mime_type": "text/plain",
"size": "4 bytes“
}
],
"size": "0 bytes“
} 8
More Examples…
DropBox Server Response 2:
Header: {
x-frame-options=[SAMEORIGIN],
x-dropbox-request-id=[cd12e1e844327464485842b11b530071]
Connection=[keep-alive],
Server=[nginx],
pragma=[no-cache],
cache-control=[no-cache],
x-server-response-time=[110],
x-dropbox-http-protocol=[None],
set-cookie=[gvc=MzIwNTkxODQzNjQy.....;
expires=Sat, 06 Apr 2019 22:11:47 GMT;
Transfer-Encoding=[chunked],
Date=[Mon, 07 Apr 2014 22:11:47 GMT],
Content-Type=[application/json],
X-RequestId=[d509463440ada422459335fd3c71d309]
}
Body: {
"referral_link": "https://db.tt/AaWjP9HP",
"display_name": "Francis Palma",
"uid": 118690394,
"country": "CA",
"quota_info": {
"datastores": 0,
"shared": 293074019,
"quota": 2147483648,
"normal": 1661304356
},
"team": null,
"email": "francis.polymtl@yahoo.ca"
}
No hyperlinks to follow!No hyperlinks to follow!
No hyperlinks to follow!No hyperlinks to follow!
DropBox Server Response 1:
Header: {
x-frame-options=[SAMEORIGIN],
x-dropbox-request-id=[b9a25269beb2c75fa7d7e21e1638bb9d],
Connection=[keep-alive],
Server=[nginx],
pragma=[no-cache],
cache-control=[no-cache],
x-server-response-time=[64],
x-dropbox-http-protocol=[None],
set-cookie=[gvc=MjExODUyMTE…..
expires=Tue, 26 Mar 2019 18:34:14 GMT],
Transfer-Encoding=[chunked],
Date=[Thu, 27 Mar 2014 18:34:14 GMT],
Content-Type=[application/json],
X-RequestId=[c64da98881e565a90a5dd9aecea9f049]
}
Body: {
"hash": "f9d780e7655fe43261b4de9ec9a926eb",
"revision": 2,
"rev": "21e8a5a19",
"thumb_exists": false,
"bytes": 0,
"modified": "Tue, 28 Jan 2014 21:45:31 +0000",
"path": "/test",
"is_dir": true,
"icon": "folder",
"root": "dropbox",
"contents": [ {
"revision": 3,
"rev": "31e8a5a19",
"thumb_exists": false,
"bytes": 4,
"modified": "Tue, 28 Jan 2014 21:46:30 +0000",
"client_mtime": "Tue, 28 Jan 2014 21:46:30",
"path": "/test/test.txt",
"is_dir": false,
"icon": "page_white_text",
"root": "dropbox",
"mime_type": "text/plain",
"size": "4 bytes“
}
],
"size": "0 bytes“
} 8
More Examples…
DropBox Server Response 2:
Header: {
x-frame-options=[SAMEORIGIN],
x-dropbox-request-id=[cd12e1e844327464485842b11b530071]
Connection=[keep-alive],
Server=[nginx],
pragma=[no-cache],
cache-control=[no-cache],
x-server-response-time=[110],
x-dropbox-http-protocol=[None],
set-cookie=[gvc=MzIwNTkxODQzNjQy.....;
expires=Sat, 06 Apr 2019 22:11:47 GMT;
Transfer-Encoding=[chunked],
Date=[Mon, 07 Apr 2014 22:11:47 GMT],
Content-Type=[application/json],
X-RequestId=[d509463440ada422459335fd3c71d309]
}
Body: {
"referral_link": "https://db.tt/AaWjP9HP",
"display_name": "Francis Palma",
"uid": 118690394,
"country": "CA",
"quota_info": {
"datastores": 0,
"shared": 293074019,
"quota": 2147483648,
"normal": 1661304356
},
"team": null,
"email": "francis.polymtl@yahoo.ca"
}
DropBox Server Response 1:
Header: {
x-frame-options=[SAMEORIGIN],
x-dropbox-request-id=[b9a25269beb2c75fa7d7e21e1638bb9d],
Connection=[keep-alive],
Server=[nginx],
pragma=[no-cache],
cache-control=[no-cache],
x-server-response-time=[64],
x-dropbox-http-protocol=[None],
set-cookie=[gvc=MjExODUyMTE…..
expires=Tue, 26 Mar 2019 18:34:14 GMT],
Transfer-Encoding=[chunked],
Date=[Thu, 27 Mar 2014 18:34:14 GMT],
Content-Type=[application/json],
X-RequestId=[c64da98881e565a90a5dd9aecea9f049]
}
Body: {
"hash": "f9d780e7655fe43261b4de9ec9a926eb",
"revision": 2,
"rev": "21e8a5a19",
"thumb_exists": false,
"bytes": 0,
"modified": "Tue, 28 Jan 2014 21:45:31 +0000",
"path": "/test",
"is_dir": true,
"icon": "folder",
"root": "dropbox",
"contents": [ {
"revision": 3,
"rev": "31e8a5a19",
"thumb_exists": false,
"bytes": 4,
"modified": "Tue, 28 Jan 2014 21:46:30 +0000",
"client_mtime": "Tue, 28 Jan 2014 21:46:30",
"path": "/test/test.txt",
"is_dir": false,
"icon": "page_white_text",
"root": "dropbox",
"mime_type": "text/plain",
"size": "4 bytes“
}
],
"size": "0 bytes“
}
No hyperlinks to follow!No hyperlinks to follow!
No hyperlinks to follow!No hyperlinks to follow!
8
Alchemy Client Request:
Header: {
cache-control=[no-cache],
content-type=[application/xml],
connection=[keep-alive],
host=[access.alchemyapi.com],
accept=[application/xml],
path=/calls/url/URLGetRankedNamedEntities?...
get /calls/url/urlgetrankednamedentities?...
user-agent=[Apache CXF 2.7.5],
pragma=[no-cache]
}
Alchemy Server Response:
Header: {
content-type=[application/xml; charset=utf-8],
cache-control=[no-cache],
connection=[keep-alive],
access-control-allow-origin=[*],
content-length=[506],
server=[nginx],
date=[Fri, 15 Aug 2014 19:30:28 GMT]
}
Body:
<?xml version="1.0" encoding="UTF-8"?>
<results>
<status>OK</status>
<usage>By accessing AlchemyAPI or using
information generated by AlchemyAPI, you are
agreeing to be bound by the AlchemyAPI Terms of
Use:http://www.alchemyapi.com/company/terms.html
</usage>
<url>http://www.cnn.com/2011/09/28/us/...</url>
<language>english</language>
<microformats>
<a href="/cnn" rel="tag">cnn</a>
</microformats>
</results>
More Examples…
9
Alchemy Client Request:
Header: {
cache-control=[no-cache],
content-type=[application/xml],
connection=[keep-alive],
host=[access.alchemyapi.com],
accept=[application/xml],
path=/calls/url/URLGetRankedNamedEntities?...
get /calls/url/urlgetrankednamedentities?...
user-agent=[Apache CXF 2.7.5],
pragma=[no-cache]
}
Alchemy Server Response:
Header: {
content-type=[application/xml; charset=utf-8],
cache-control=[no-cache],
connection=[keep-alive],
access-control-allow-origin=[*],
content-length=[506],
server=[nginx],
date=[Fri, 15 Aug 2014 19:30:28 GMT]
}
Body:
<?xml version="1.0" encoding="UTF-8"?>
<results>
<status>OK</status>
<usage>By accessing AlchemyAPI or using
information generated by AlchemyAPI, you are
agreeing to be bound by the AlchemyAPI Terms of
Use:http://www.alchemyapi.com/company/terms.html
</usage>
<url>http://www.cnn.com/2011/09/28/us/...</url>
<language>english</language>
<microformats>
<a href="/cnn" rel="tag">cnn</a>
</microformats>
</results>
More Examples…
9
Alchemy Client Request:
Header: {
cache-control=[no-cache],
content-type=[application/xml],
connection=[keep-alive],
host=[access.alchemyapi.com],
accept=[application/xml],
path=/calls/url/URLGetRankedNamedEntities?...
get /calls/url/urlgetrankednamedentities?...
user-agent=[Apache CXF 2.7.5],
pragma=[no-cache]
}
Alchemy Server Response:
Header: {
content-type=[application/xml; charset=utf-8],
cache-control=[no-cache],
connection=[keep-alive],
access-control-allow-origin=[*],
content-length=[506],
server=[nginx],
date=[Fri, 15 Aug 2014 19:30:28 GMT]
}
Body:
<?xml version="1.0" encoding="UTF-8"?>
<results>
<status>OK</status>
<usage>By accessing AlchemyAPI or using
information generated by AlchemyAPI, you are
agreeing to be bound by the AlchemyAPI Terms of
Use:http://www.alchemyapi.com/company/terms.html
</usage>
<url>http://www.cnn.com/2011/09/28/us/...</url>
<language>english</language>
<microformats>
<a href="/cnn" rel="tag">cnn</a>
</microformats>
</results>
More Examples…
9
YouTube Client Request:
Header: {
cache-control=[no-cache],
content-type=[application/xml],
connection=[keep-alive],
host=[www.googleapis.com],
accept=[application/xml],
get/youtube/v3/subscriptions?mine=true&part=snippet&access_token=..
http/1.1=[null],
user-agent=[Apache CXF 2.7.11],
pragma=[no-cache]
}
YouTube Server Response:
Header: {
x-frame-options=[SAMEORIGIN],
content-type=[application/json;
charset=UTF-8],
cache-control=[private, max-age=300,must-revalidate,no-transform],
x-xss-protection=[1; mode=block],
x-content-type-options=[nosniff],
expires=[Tue, 14 Oct 2014 17:57:26 GMT],
etag=["PSjn-HSKiX6orvNhGZvglLI2lvk/PZz4CABe3efkukxgHuo_yc_qoJs"],
content-length=[324],
server=[GSE],
alternate-protocol=[443:quic,p=0.01],
date=[Tue, 14 Oct 2014 17:57:26 GMT],
vary=[X-Origin, Referer, Origin]
}
Body: {
"kind": "youtube#videoListResponse",
"etag": ""PSjn-HSKiX6orvNhGZvglLI2lvk/PZz4CABe3efkukxgHuo_yc_qo",
"pageInfo": { "totalResults": 1, "resultsPerPage": 1 }, “
items": [ {
"kind": "youtube#video",
"etag": ""PSjn- HSKiX6orvNhGZvglLI2lvk/9hUt36nrZXNpfqDh...",
"id": "SRQtW-sjDGw"
} ]
}
More Examples…
Alchemy Client Request:
Header: {
cache-control=[no-cache],
content-type=[application/xml],
connection=[keep-alive],
host=[access.alchemyapi.com],
accept=[application/xml],
path=/calls/url/URLGetRankedNamedEntities?...
get /calls/url/urlgetrankednamedentities?...
user-agent=[Apache CXF 2.7.5],
pragma=[no-cache]
}
Alchemy Server Response:
Header: {
content-type=[application/xml; charset=utf-8],
cache-control=[no-cache],
connection=[keep-alive],
access-control-allow-origin=[*],
content-length=[506],
server=[nginx],
date=[Fri, 15 Aug 2014 19:30:28 GMT]
}
Body:
<?xml version="1.0" encoding="UTF-8"?>
<results>
<status>OK</status>
<usage>By accessing AlchemyAPI or using
information generated by AlchemyAPI, you are
agreeing to be bound by the AlchemyAPI Terms of
Use:http://www.alchemyapi.com/company/terms.html
</usage>
<url>http://www.cnn.com/2011/09/28/us/...</url>
<language>english</language>
<microformats>
<a href="/cnn" rel="tag">cnn</a>
</microformats>
</results>
9
YouTube Client Request:
Header: {
cache-control=[no-cache],
content-type=[application/xml],
connection=[keep-alive],
host=[www.googleapis.com],
accept=[application/xml],
get/youtube/v3/subscriptions?mine=true&part=snippet&access_token=..
http/1.1=[null],
user-agent=[Apache CXF 2.7.11],
pragma=[no-cache]
}
YouTube Server Response:
Header: {
x-frame-options=[SAMEORIGIN],
content-type=[application/json;
charset=UTF-8],
cache-control=[private, max-age=300,must-revalidate,no-transform],
x-xss-protection=[1; mode=block],
x-content-type-options=[nosniff],
expires=[Tue, 14 Oct 2014 17:57:26 GMT],
etag=["PSjn-HSKiX6orvNhGZvglLI2lvk/PZz4CABe3efkukxgHuo_yc_qoJs"],
content-length=[324],
server=[GSE],
alternate-protocol=[443:quic,p=0.01],
date=[Tue, 14 Oct 2014 17:57:26 GMT],
vary=[X-Origin, Referer, Origin]
}
Body: {
"kind": "youtube#videoListResponse",
"etag": ""PSjn-HSKiX6orvNhGZvglLI2lvk/PZz4CABe3efkukxgHuo_yc_qo",
"pageInfo": { "totalResults": 1, "resultsPerPage": 1 }, “
items": [ {
"kind": "youtube#video",
"etag": ""PSjn- HSKiX6orvNhGZvglLI2lvk/9hUt36nrZXNpfqDh...",
"id": "SRQtW-sjDGw"
} ]
}
More Examples…
Alchemy Client Request:
Header: {
cache-control=[no-cache],
content-type=[application/xml],
connection=[keep-alive],
host=[access.alchemyapi.com],
accept=[application/xml],
path=/calls/url/URLGetRankedNamedEntities?...
get /calls/url/urlgetrankednamedentities?...
user-agent=[Apache CXF 2.7.5],
pragma=[no-cache]
}
Alchemy Server Response:
Header: {
content-type=[application/xml; charset=utf-8],
cache-control=[no-cache],
connection=[keep-alive],
access-control-allow-origin=[*],
content-length=[506],
server=[nginx],
date=[Fri, 15 Aug 2014 19:30:28 GMT]
}
Body:
<?xml version="1.0" encoding="UTF-8"?>
<results>
<status>OK</status>
<usage>By accessing AlchemyAPI or using
information generated by AlchemyAPI, you are
agreeing to be bound by the AlchemyAPI Terms of
Use:http://www.alchemyapi.com/company/terms.html
</usage>
<url>http://www.cnn.com/2011/09/28/us/...</url>
<language>english</language>
<microformats>
<a href="/cnn" rel="tag">cnn</a>
</microformats>
</results>
9
SBSs + Antipatterns = ?
An automatic approach to detect SOA antipatterns in SBSs may support their
easy maintenance and evolution.
Poor performance
Hard for comprehension
Low maintainability
Hard for evolution
Expensive maintenance life
Low reusability
+
Specification and Detection of SOA Antipatterns 10
Research Problems
• No specification of SOA antipatterns
• No dedicated approach and framework for the detection of SOA
antipatterns in SBSs
• Impact of SOA antipatterns is not yet verified in service-based systems
Specification and Detection of SOA Antipatterns 11
Research Questions
Research Questions
RQ1:
Do service-oriented antipatterns differ from the object-oriented antipatterns?
RQ2:
Do the service-oriented antipatterns vary in diverse SBSs developed using
different SOA technologies?
RQ3:
Can we efficiently specify and detect SOA antipatterns regardless of SOA
technologies?
RQ4:
How do the SOA antipatterns impact the maintenance and evolution of SBSs?
Specification and Detection of SOA Antipatterns 12
Related Work
Related Work
Specification and Detection of SOA Antipatterns 13
Related Work: Summary
What to Detect/
Technology OO CBSs SOA Other
Code Smells
Emden and Moonen, 2002
Khomh et al., 2009
Moha et al., 2010
Luo et al., 2010
Maneerat and Muenchaisri, 2011
X X X
Antipatterns
Correa et al., 2000
Marinescu, 2001, 2004
Boussaidi et al., 2005
Kreimer, 2005, Biehl, 2006
Salehie et al., 2006
Choinzon and Ueda, 2006
Rao and Reddy, 2007
Khomh et al., 2009, 2011
Llano and Pooley, 2009
Moha et al., 2010
Cortellessa et al., 2010
Luo et al., 2010, Settas et al., 2011
Stoianov and Sora, 2010
Kessentini et al., 2011
Parsons and Murphy, 2004
Parsons and Murphy, 2008
Chis, 2008 X Wong et al., 2010
Fourati et al., 2011
Design Patterns
Kramer and Prechelt, 1996
Antoniol et al., 1998
Heuzeroth et al., 2003
Tsantalis et al., 2006
Kaczor et al., 2006
Guéhéneuc and Antoniol, 2008
Stoianov and Sora, 2010
Maggioni and Arcelli, 2010
Kaczor et al., 2010
Rasool and Mäder, 2011
X Di Penta et al., 2007 X
Specification and Detection of SOA Antipatterns 14
Contributions…
Introduction: Contribution
With the goal to assess the design and QoS of SBSs:
• SODA (Service Oriented Detection for Antipatterns), a novel and
innovative approach
• SOFA (Service Oriented Framework for Antipatterns), a framework,
- to specify SOA antipatterns and detect them automatically
- to perform static and dynamic analyses
Specification and Detection of SOA Antipatterns 15
Our Detection Approach
Proposed SODA Approach
Specification and Detection of SOA Antipatterns 16
SOA Antipatterns Tree
Specification and Detection of SOA Antipatterns 17
Domain Analysis
“Multi Service also known as God Object
corresponds to a service that implements a
multitude of methods related to different
business and technical abstractions. This
aggregates too much into a single service, such
a service is not easily reusable because of the
low cohesion of its methods and is often
unavailable to end-users because of its overload,
which may induce a high response time”
(Dudney et al., 2003)
Textual
Description of
Antipatterns
1.Specifications
Rule Card
2.Generation
Detection
Algorithms
3.Detection
SBSTemplate
Services
involved in
antipatterns
Specification and Detection of SOA Antipatterns 18
Antipatterns Specification Language
Textual
Description of
Antipatterns
1.Specifications
Rule Card
2.Generation
Detection
Algorithms
3.Detection
SBSTemplate
Services
involved in
antipatterns
Specification and Detection of SOA Antipatterns 19
Specification Examples
1 RULE_CARD: GodObjectWebService {
2 RULE: GodObjectWebService { INTER LowCohesion MultiOperation HighResponseTime LowAvailability };
3 RULE: LowCohesion { COH VERY_LOW };
4 RULE: MultiOperation { NOD HIGH };
5 RULE: HighResponseTime { RT VERY_HIGH };
6 RULE: LowAvailability { A LOW };
7 };
1 RULE_CARD: GodComponent {
2 RULE: GodComponent { INTER HighEncapsulatedService MultiMethod HighParameter };
3 RULE: HighEncapsulatedService { NOSE HIGH };
4 RULE: MultiMethod { NMD VERY_HIGH };
5 RULE: HighParameter { TNP VERY_HIGH };
6 };
Textual
Description of
Antipatterns
1.Specifications
Rule Card
2.Generation
Detection
Algorithms
3.Detection
SBSTemplate
Services
involved in
antipatterns
Specification and Detection of SOA Antipatterns 20
Algorithm Generation
Textual
Description of
Antipatterns
1.Specifications
Rule Card
2.Generation
Detection
Algorithms
3.Detection
SBSTemplate
Services
involved in
antipatterns
Model Driven Engineering (MDE)
Parsing
1
Visiting &
Replacing
2
Templates
Models of Rule Cards
Rule
Cards
Algorithms
Specification and Detection of SOA Antipatterns 21
SOFA Detection Framework
Textual
Description of
Antipatterns
1.Specifications
Rule Card
2.Generation
Detection
Algorithms
3.Detection
SBSTemplate
Services
involved in
antipatterns
Specification and Detection of SOA Antipatterns 22
Subjects and Objects
Validation: Subjects
Service Component Architecture SOAP-based Web services
1. Multi Service
2. Tiny Service
3. Sand Pile
4. Chatty Service
5. The Knot
6. Nobody Home
7. Duplicated Service
8. Bottleneck Service
9. Service Chain
10. Data Service
11. God Component
12. Bloated Service
13. Stovepipe Service
1. God Object Web Service
2. Fine Grained Web Service
3. Ambiguous Name
4. Duplicated Web Service
5. Chatty Web Service
6. Low Cohesive Operations in the Same Port
7. Redundant Port
8. Maybe It is Not RPC
9. Data Web Service
10. CRUDy Interface
REST
1. Ignoring Status Code
2. Tunneling Everything Through GET
3. Tunneling Everything Through POST
4. Forgetting Hypermedia
5. Ignoring Caching
6. Misusing Cookies
7. Ignoring MIME Types
8. Breaking Self Descriptiveness
9. Contextless Resource Names
10. Singularised URI Nodes
Specification and Detection of SOA Antipatterns 23
Validation: Objects
Service Component Architecture
Home-Automation – an SCA-based demo system to automate household
FraSCAti – the largest open source SCA system and runtime library for SCA apps
REST APIs
12 REST APIs including BestBuy, DropBox, Facebook, Twitter, and YouTube
115 RESTful method calls
SOAP-based Web Services
120+ Weather- and Finance-related SOAP Web services
Specification and Detection of SOA Antipatterns 24
Detection Results in SCA
*Availability 100%
Detection Result: Multi Service in SCA
Mediator
Specification and Detection of SOA Antipatterns 25
Partial Results on SCA (FraSCAti)
Antipattern
Name
Services
Involved
Metrics Time Precision Recall
Tiny Service sca-parser NMD=1; CPL=0.56 0.067s
[1/1]
100%
[1/1]
100%
Bottleneck
Service
sca-composite
sca-parser
RT=41ms;CPL=0.96;
NIR=16;NOR=8
RT=45ms;CPL=0.84;
NIR=16;NOR=5
0.086s
[1/2]
50%
[1/1]
100%
Specification and Detection of SOA Antipatterns 26
Summary Results on SCA
SCA Systems Average Precision Average Recall
Average
Detection Time
Home-Automation 92.5% 100% 0.387s
FraSCAti 89.17% 95% 0.089s
Average 90.84% 97.5% 0.238s
Specification and Detection of SOA Antipatterns 27
Detection Results in Web Services
51
Detection of Chatty Web Service antipattern in TaarifCustoms Web service.
RULE_CARD: ChattyWebService {
RULE: ChattyWebService {INTER LowCohesion HighDataAccessor MultiOperation LowPerformance};
RULE: LowCohesion {COH LOW};
RULE: HighDataAccessor {ANAO VERY_HIGH};
RULE: MultiOperation {NOD HIGH};
RULE: LowPerformance {INTER HighRT LowA};
RULE: HighRT {RT HIGH};
RULE: LowA {A LOW};
};
23
 Low Cohesion
 High Accessor Methods
 High Methods
 High Response Time
 Low Availability
Detection Result: Chatty Web Service
Specification and Detection of SOA Antipatterns
Summary Results on Web Services
Experiments
Detection
Times
Detected
(True Positive)
Manually
Validated
Precision Recall
13 Weather
Web services
102.19s
7
(6)
6 85.71% 100%
109 Finance
Web services
192.91s
24
(22)
22 91.67% 100%
Average - - - 88.69% 100%
Specification and Detection of SOA Antipatterns 29
Detection in REST
SODA-R approach for REST
SODA-R: Service Oriented Detection for Antipatterns in REST
Step 1
Analysis
Description of
REST patterns
and antipatterns
Heuristics
Step 2
Algorithms
Detection
Detected
REST patterns
and antipatterns
REST APIs
Implementation
Application
of Algorithms
Specification and Detection of SOA Antipatterns 30
Detection Heuristics
1: ENTITY-LINKING(response-header, response-body, http-method)
2: body-links[]  EXTRACT-ENTITY-LINKS(response-body)
3: header-link  response-header.getValue(“Link”)
4: if (http-method = GET and (LENGTH(body-links[]) = 1 or header-link  NIL)) or
5: (http-method = POST and (“Location:”  response-header.getKeys() or
6: LENGTH(body-links[]) = 1))) then
7: print “Entity Linking detected”
8: end if
Heuristic of Entity Linking pattern
1: FORGET-HYPER-MEDIA(response-header, response-body, http-method)
2: body-links[]  EXTRACT-ENTITY-LINKS(response-body)
3: header-link  response-header.getValue(“Link”)
4: if (http-method = GET and (LENGTH(body-links[]) = 0 or header-link = NIL)) or
5: (http-method = POST and (“Location:”  response-header.getKeys() and
6: LENGTH(body-links[]) = 0))) then
7: print “Forgetting Hypermedia detected”
8: end if
Heuristic of Forgetting Hypermedia antipattern
Specification and Detection of SOA Antipatterns 31
Detection Phase
Heuristics
Detection
Algorithms
Service
Interfaces
Step 2.2
Dynamic
Invocation
REST requests
and responses
Client Authentication
REST
APIs
Detected
REST patterns
and antipatterns
Step 2.3
ApplicationImplementation
Algorithms
Interfaces
Step 2.1
Specification and Detection of SOA Antipatterns 32
Validation: Objects in REST
REST APIs Online Documentations
alchemyapi.com/api/
bbyopen.com/developer/
dev.bitly.com/api.html
charlieharvey.org.uk/about/api/
dropbox.com/developers/core/docs/
developers.facebook.com/docs/graph-api/
developer.musicgraph.com/api-docs/overview/
github.com/blackducksw/ohloh_api/
integrate.teamviewer.com/en/develop/documentation/
dev.twitter.com/docs/api/
developers.google.com/youtube/v3/
developer.zappos.com/docs/api-documentation/
Specification and Detection of SOA Antipatterns 33
REST Detection Results
Detection Results for Antipatterns
-
0.50
1.00
1.50
2.00
2.50
3.00
3.50
average_antipatterns_instance
Specification and Detection of SOA Antipatterns 34
Detection Results for Antipatterns
-
0.50
1.00
1.50
2.00
2.50
3.00
3.50
average_antipatterns_instance
Specification and Detection of SOA Antipatterns 34
-
0.50
1.00
1.50
2.00
2.50
3.00
3.50
average_patterns_instances
Detection Results for Patterns
Specification and Detection of SOA Antipatterns 35
-
0.50
1.00
1.50
2.00
2.50
3.00
3.50
average_patterns_instances
Detection Results for Patterns
Specification and Detection of SOA Antipatterns 35
-
0.50
1.00
1.50
2.00
2.50
3.00
3.50
Detection Results: Antipatterns vs. Pattern
Specification and Detection of SOA Antipatterns 36
Forgetting_Hypermedia Entity_Linking
-
0.50
1.00
1.50
2.00
2.50
3.00
3.50
Detection Results: Antipatterns vs. Pattern
Specification and Detection of SOA Antipatterns 36
Example Detection Results
(7)Alchemy-
(12)BestBuy-
(3)Bitly-
(4)CharlieHarvey-
(15)DropBox-
(29)Facebook-
(8)Musicgraph-
(3)Ohloh-
(8)TeamViewer-
(10)Twitter-
(9)YouTube-
(7)Zappos-
(115)Total-
AveragePrecision-
Recall-
DetectionTime-
Forgetting
Hypermedia
1/1 0/0 2/2 0/0 9/10 8/8 7/7 0/0 3/3 4/4 2/3 0/0 36/38 94.58%
19.54s
1/1 0/0 2/2 0/0 9/9 8/8 7/7 0/0 3/3 4/4 2/2 0/0 36/36 100%
Entity
Linking
6/6 11/11 1/1 4/4 3/3 21/21 1/1 2/2 1/1 5/5 6/6 4/4 65/65 100%
19.90s
6/6 11/11 1/1 4/4 3/3 21/21 1/1 2/2 1/1 5/5 6/7 4/4 65/66 98.81%
Specification and Detection of SOA Antipatterns 37
Four Hypotheses
H1: Generality
Our DSL allows the specification of various SOA antipatterns, from
simple to more complex ones
1 RULE_CARD: LowCohesiveOperations {
2 RULE: LowCohesiveOperations { INTER MultiOperation LowCohesivePT };
3 RULE: MultiOperation { NOD HIGH };
4 RULE: LowCohesivePT { ARIO LOW };
5 };
Specification and Detection of SOA Antipatterns 38
H1: Generality
Our DSL allows the specification of various SOA antipatterns, from
simple to more complex ones
1 RULE_CARD: CRUDyInterface {
2 RULE: CRUDyInterface { INTER ChattyInterface HighCRUDOperation };
3 RULE: ChattyInterface { RULE_CARD: ChattyWebService };
4 RULE: HighCRUDOperation { NCO > 1 };
5 };
1 RULE_CARD: ChattyWebService {
2 RULE: ChattyWebService { INTER LowCohesion HighDataAccessor
MultiOperation LowPerformance };
3 RULE: LowCohesion { COH LOW };
4 RULE: HighDataAccessor { ANAO VERY_HIGH };
5 RULE: MultiOperation { NOD HIGH };
6 RULE: LowPerformance { INTER HighRT LowA };
7 RULE: HighRT { RT HIGH };
8 RULE: LowA { A LOW };
9 };
1 RULE_CARD: LowCohesiveOperations {
2 RULE: LowCohesiveOperations { INTER MultiOperation LowCohesivePT };
3 RULE: MultiOperation { NOD HIGH };
4 RULE: LowCohesivePT { ARIO LOW };
5 };
Specification and Detection of SOA Antipatterns 38
H2: Accuracy
The detection algorithms have an average precision of more than
75% and a recall of 100%, i.e., more than three-quarters of
detected antipatterns are true positive and we do not miss any
existing antipatterns
Web Services 88.69% 100%
Average Precision Average Recall
SCA 90.84% 97.5%
REST 89.42% 94%
Specification and Detection of SOA Antipatterns 39
Average 89.65% 97.17%
H3: Extendibility
Our DSL and SOFA framework are extensible for adding new
metrics and new SOA antipatterns
Web Services 10 0 10
Antipatterns Patterns New Metrics
SCA 13 0 17
REST 8 5 -
Total 31 5 27
Specification and Detection of SOA Antipatterns 40
H4: Performance
The computation time required for the detection of antipatterns
using the generated algorithms is reasonably very low, i.e., in the
order of few seconds
Web Services 147.55s
Average Detection Time
SCA 0.238s
REST 21.43s
Average 51.41s
Specification and Detection of SOA Antipatterns 41
Impact of Antipatterns
Impact of Antipatterns
The Wilcoxon Rank Sum Test
42
To Conclude…
Conclusion
Specification and Detection of SOA Antipatterns 43
Conclusion
Specification and Detection of SOA Antipatterns 43
Conclusion
Specification and Detection of SOA Antipatterns 43
Conclusion
Specification and Detection of SOA Antipatterns 43
Current and Future Plan
• Antipatterns in service-oriented business processes, i.e., BPEL
• Semantic analysis of REST APIs based on dictionaries
(WordNet and Stanford Core NLP)
• A comprehensive tool support for the detection
• Further validation of the approach with more Web services and
RESTful APIs
Specification and Detection of SOA Antipatterns 44
Thanks and Questions?
Antipattern Template
Generated Code

More Related Content

Similar to Specification and Detection of SOA Antipatterns

Mobile App Performance: Getting the Most from APIs (MBL203) | AWS re:Invent ...
Mobile App Performance:  Getting the Most from APIs (MBL203) | AWS re:Invent ...Mobile App Performance:  Getting the Most from APIs (MBL203) | AWS re:Invent ...
Mobile App Performance: Getting the Most from APIs (MBL203) | AWS re:Invent ...
Amazon Web Services
 
Jecb sigmod2014
Jecb sigmod2014Jecb sigmod2014
Jecb sigmod2014
Khai Tran
 
Monitoring modern applications: Introduction to AWS xray
Monitoring modern applications: Introduction to AWS xrayMonitoring modern applications: Introduction to AWS xray
Monitoring modern applications: Introduction to AWS xray
Amazon Web Services
 
Being HAPI! Reverse Proxying on Purpose
Being HAPI! Reverse Proxying on PurposeBeing HAPI! Reverse Proxying on Purpose
Being HAPI! Reverse Proxying on Purpose
Aman Kohli
 
Server architecture
Server architectureServer architecture
Server architecture
Masters Academy
 
Micro service architecture
Micro service architectureMicro service architecture
Micro service architecture
uEngine Solutions
 
A Guide to Event-Driven SRE-inspired DevOps
A Guide to Event-Driven SRE-inspired DevOpsA Guide to Event-Driven SRE-inspired DevOps
A Guide to Event-Driven SRE-inspired DevOps
Andreas Grabner
 
Monitoring as an entry point for collaboration
Monitoring as an entry point for collaborationMonitoring as an entry point for collaboration
Monitoring as an entry point for collaboration
Julien Pivotto
 
Whatever it takes - Fixing SQLIA and XSS in the process
Whatever it takes - Fixing SQLIA and XSS in the processWhatever it takes - Fixing SQLIA and XSS in the process
Whatever it takes - Fixing SQLIA and XSS in the process
guest3379bd
 
[DSC Europe 22] Smart approach in development and deployment process for vari...
[DSC Europe 22] Smart approach in development and deployment process for vari...[DSC Europe 22] Smart approach in development and deployment process for vari...
[DSC Europe 22] Smart approach in development and deployment process for vari...
DataScienceConferenc1
 
Overcoming (organizational) scalability issues in your Prometheus ecosystem
Overcoming (organizational) scalability issues in your Prometheus ecosystemOvercoming (organizational) scalability issues in your Prometheus ecosystem
Overcoming (organizational) scalability issues in your Prometheus ecosystem
QAware GmbH
 
Into The Box 2018 - CBT
Into The Box 2018 - CBTInto The Box 2018 - CBT
Into The Box 2018 - CBT
Ortus Solutions, Corp
 
XCS110_All_Slides.pdf
XCS110_All_Slides.pdfXCS110_All_Slides.pdf
XCS110_All_Slides.pdf
ssuser01066a
 
2019 hashiconf consul-templaterb
2019 hashiconf consul-templaterb2019 hashiconf consul-templaterb
2019 hashiconf consul-templaterb
Pierre Souchay
 
Overcoming scalability issues in your prometheus ecosystem
Overcoming scalability issues in your prometheus ecosystemOvercoming scalability issues in your prometheus ecosystem
Overcoming scalability issues in your prometheus ecosystem
Nebulaworks
 
PRIVATE CLOUD SERVER IMPLEMENTATIONS FOR DATA STORAGE
PRIVATE CLOUD SERVER IMPLEMENTATIONS FOR DATA STORAGEPRIVATE CLOUD SERVER IMPLEMENTATIONS FOR DATA STORAGE
PRIVATE CLOUD SERVER IMPLEMENTATIONS FOR DATA STORAGE
Editor IJCTER
 
Introduction to AWS X-Ray
Introduction to AWS X-RayIntroduction to AWS X-Ray
Introduction to AWS X-Ray
Amazon Web Services
 
Webinar: Architecting Secure and Compliant Applications with MongoDB
Webinar: Architecting Secure and Compliant Applications with MongoDBWebinar: Architecting Secure and Compliant Applications with MongoDB
Webinar: Architecting Secure and Compliant Applications with MongoDB
MongoDB
 
Ops Jumpstart: MongoDB Administration 101
Ops Jumpstart: MongoDB Administration 101Ops Jumpstart: MongoDB Administration 101
Ops Jumpstart: MongoDB Administration 101
MongoDB
 

Similar to Specification and Detection of SOA Antipatterns (20)

Mobile App Performance: Getting the Most from APIs (MBL203) | AWS re:Invent ...
Mobile App Performance:  Getting the Most from APIs (MBL203) | AWS re:Invent ...Mobile App Performance:  Getting the Most from APIs (MBL203) | AWS re:Invent ...
Mobile App Performance: Getting the Most from APIs (MBL203) | AWS re:Invent ...
 
Jecb sigmod2014
Jecb sigmod2014Jecb sigmod2014
Jecb sigmod2014
 
Monitoring modern applications: Introduction to AWS xray
Monitoring modern applications: Introduction to AWS xrayMonitoring modern applications: Introduction to AWS xray
Monitoring modern applications: Introduction to AWS xray
 
Being HAPI! Reverse Proxying on Purpose
Being HAPI! Reverse Proxying on PurposeBeing HAPI! Reverse Proxying on Purpose
Being HAPI! Reverse Proxying on Purpose
 
Server architecture
Server architectureServer architecture
Server architecture
 
Micro service architecture
Micro service architectureMicro service architecture
Micro service architecture
 
Resume_Mohan Selvamoorthy_Sec
Resume_Mohan Selvamoorthy_SecResume_Mohan Selvamoorthy_Sec
Resume_Mohan Selvamoorthy_Sec
 
A Guide to Event-Driven SRE-inspired DevOps
A Guide to Event-Driven SRE-inspired DevOpsA Guide to Event-Driven SRE-inspired DevOps
A Guide to Event-Driven SRE-inspired DevOps
 
Monitoring as an entry point for collaboration
Monitoring as an entry point for collaborationMonitoring as an entry point for collaboration
Monitoring as an entry point for collaboration
 
Whatever it takes - Fixing SQLIA and XSS in the process
Whatever it takes - Fixing SQLIA and XSS in the processWhatever it takes - Fixing SQLIA and XSS in the process
Whatever it takes - Fixing SQLIA and XSS in the process
 
[DSC Europe 22] Smart approach in development and deployment process for vari...
[DSC Europe 22] Smart approach in development and deployment process for vari...[DSC Europe 22] Smart approach in development and deployment process for vari...
[DSC Europe 22] Smart approach in development and deployment process for vari...
 
Overcoming (organizational) scalability issues in your Prometheus ecosystem
Overcoming (organizational) scalability issues in your Prometheus ecosystemOvercoming (organizational) scalability issues in your Prometheus ecosystem
Overcoming (organizational) scalability issues in your Prometheus ecosystem
 
Into The Box 2018 - CBT
Into The Box 2018 - CBTInto The Box 2018 - CBT
Into The Box 2018 - CBT
 
XCS110_All_Slides.pdf
XCS110_All_Slides.pdfXCS110_All_Slides.pdf
XCS110_All_Slides.pdf
 
2019 hashiconf consul-templaterb
2019 hashiconf consul-templaterb2019 hashiconf consul-templaterb
2019 hashiconf consul-templaterb
 
Overcoming scalability issues in your prometheus ecosystem
Overcoming scalability issues in your prometheus ecosystemOvercoming scalability issues in your prometheus ecosystem
Overcoming scalability issues in your prometheus ecosystem
 
PRIVATE CLOUD SERVER IMPLEMENTATIONS FOR DATA STORAGE
PRIVATE CLOUD SERVER IMPLEMENTATIONS FOR DATA STORAGEPRIVATE CLOUD SERVER IMPLEMENTATIONS FOR DATA STORAGE
PRIVATE CLOUD SERVER IMPLEMENTATIONS FOR DATA STORAGE
 
Introduction to AWS X-Ray
Introduction to AWS X-RayIntroduction to AWS X-Ray
Introduction to AWS X-Ray
 
Webinar: Architecting Secure and Compliant Applications with MongoDB
Webinar: Architecting Secure and Compliant Applications with MongoDBWebinar: Architecting Secure and Compliant Applications with MongoDB
Webinar: Architecting Secure and Compliant Applications with MongoDB
 
Ops Jumpstart: MongoDB Administration 101
Ops Jumpstart: MongoDB Administration 101Ops Jumpstart: MongoDB Administration 101
Ops Jumpstart: MongoDB Administration 101
 

More from Francis Palma

Using Interactive GA for Requirements Prioritization
Using Interactive GA for Requirements PrioritizationUsing Interactive GA for Requirements Prioritization
Using Interactive GA for Requirements Prioritization
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
 
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
 
Detection of SOA Antipatterns
Detection of SOA AntipatternsDetection of SOA Antipatterns
Detection of SOA Antipatterns
Francis Palma
 
Unifying Service Oriented Technologies for the Specification and Detection of...
Unifying Service Oriented Technologies for the Specification and Detection of...Unifying Service Oriented Technologies for the Specification and Detection of...
Unifying Service Oriented Technologies for the Specification and Detection of...
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
 
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
 
Investigating the Change-proneness of Service Patterns and Antipatterns
Investigating the Change-proneness of Service Patterns and AntipatternsInvestigating the Change-proneness of Service Patterns and Antipatterns
Investigating the Change-proneness of Service Patterns and Antipatterns
Francis Palma
 
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
 
Detection of Process Antipatterns: An BPEL Perspective
Detection of Process Antipatterns: An BPEL PerspectiveDetection of Process Antipatterns: An BPEL Perspective
Detection of Process Antipatterns: An BPEL Perspective
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
 

More from Francis Palma (12)

Using Interactive GA for Requirements Prioritization
Using Interactive GA for Requirements PrioritizationUsing Interactive GA for Requirements Prioritization
Using Interactive GA for Requirements Prioritization
 
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...
 
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
 
Detection of SOA Antipatterns
Detection of SOA AntipatternsDetection of SOA Antipatterns
Detection of SOA Antipatterns
 
Unifying Service Oriented Technologies for the Specification and Detection of...
Unifying Service Oriented Technologies for the Specification and Detection of...Unifying Service Oriented Technologies for the Specification and Detection of...
Unifying Service Oriented Technologies for the Specification and Detection of...
 
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
 
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
 
Investigating the Change-proneness of Service Patterns and Antipatterns
Investigating the Change-proneness of Service Patterns and AntipatternsInvestigating the Change-proneness of Service Patterns and Antipatterns
Investigating the Change-proneness of Service Patterns and Antipatterns
 
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
 
Detection of Process Antipatterns: An BPEL Perspective
Detection of Process Antipatterns: An BPEL PerspectiveDetection of Process Antipatterns: An BPEL Perspective
Detection of Process Antipatterns: An BPEL Perspective
 
Specification and Detection of SOA Antipatterns
Specification and Detection of SOA AntipatternsSpecification and Detection of SOA Antipatterns
Specification and Detection of SOA Antipatterns
 

Recently uploaded

The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Thierry Lestable
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Albert Hoitingh
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Ramesh Iyer
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
Vlad Stirbu
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
Sri Ambati
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
Elena Simperl
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 

Recently uploaded (20)

The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
GenAISummit 2024 May 28 Sri Ambati Keynote: AGI Belongs to The Community in O...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 

Specification and Detection of SOA Antipatterns

  • 1. Specification and Detection of SOA Antipatterns Francis Palma francis.palma@polymtl.ca Ptidej Team, DGIGL, École Polytechnique de Montréal Latece, Département d'informatique, Université du Québec à Montréal Supervisors: Dr. Naouel Moha and Dr. Yann-Gaël Guéhéneuc
  • 2. B.Sc. in Computer Science and Engineering 2005 2
  • 3. B.Sc. in Computer Science and Engineering 2005 M.Sc. in Software Engineering 2010 2
  • 4. B.Sc. in Computer Science and Engineering 2005 M.Sc. in Software Engineering 2010 Research Collaborator 2011 Jan – 2011 Aug 2
  • 5. B.Sc. in Computer Science and Engineering 2005 M.Sc. in Software Engineering 2010 Research Collaborator 2011 Jan – 2011 Aug PhD Candidate… 2011 Fall to present 2
  • 6. Good Things in Lille…
  • 7.
  • 8.
  • 10. Background • Traditional architectural models vs. Service-Oriented Architecture (SOA) • Service-based Systems (SBSs) [Palma et al. 2013] • Different SOA technological/architectural choices: o SOAP-based Web service o SCA (Service Component Architecture) o REST-style (REpresentational State Transfer), etc. Specification and Detection of SOA Antipatterns 3
  • 11. SOA Technologies XML-RPC-based Web services SOAP-based Web services Service Component Architecture REST-style Specification and Detection of SOA Antipatterns 4
  • 12. An Example SBSs evolve to fit new user requirements, execution contexts: - may degrade design and quality of service (QoS) - may cause the appearance of common poor solutions: Antipatterns Specification and Detection of SOA Antipatterns 5
  • 13. Motivation • Maintenance and evolution phase consumes resources of more than 60% (Harrison and Cook, 1990) • SOA antipatterns: - evolution may introduce antipatterns or - existing antipatterns might hinder evolution Main objective: To ease the maintenance and evolution of SBSs by detecting SOA antipatterns • Detection of SOA antipatterns - assessing statically: the design quality - assessing dynamically: the QoS Specification and Detection of SOA Antipatterns 6
  • 14. Antipatterns Example Tiny Service  Few Methods  Low Cohesion  Very High Coupling Specification and Detection of SOA Antipatterns 7
  • 15. Antipatterns Example Tiny Service Multi Service  Many Methods  Very Low Cohesion  High Response Time  Low Availability  Few Methods  Low Cohesion  Very High Coupling Specification and Detection of SOA Antipatterns 7
  • 16. More Examples… DropBox Server Response 1: Header: { x-frame-options=[SAMEORIGIN], x-dropbox-request-id=[b9a25269beb2c75fa7d7e21e1638bb9d], Connection=[keep-alive], Server=[nginx], pragma=[no-cache], cache-control=[no-cache], x-server-response-time=[64], x-dropbox-http-protocol=[None], set-cookie=[gvc=MjExODUyMTE….. expires=Tue, 26 Mar 2019 18:34:14 GMT], Transfer-Encoding=[chunked], Date=[Thu, 27 Mar 2014 18:34:14 GMT], Content-Type=[application/json], X-RequestId=[c64da98881e565a90a5dd9aecea9f049] } Body: { "hash": "f9d780e7655fe43261b4de9ec9a926eb", "revision": 2, "rev": "21e8a5a19", "thumb_exists": false, "bytes": 0, "modified": "Tue, 28 Jan 2014 21:45:31 +0000", "path": "/test", "is_dir": true, "icon": "folder", "root": "dropbox", "contents": [ { "revision": 3, "rev": "31e8a5a19", "thumb_exists": false, "bytes": 4, "modified": "Tue, 28 Jan 2014 21:46:30 +0000", "client_mtime": "Tue, 28 Jan 2014 21:46:30", "path": "/test/test.txt", "is_dir": false, "icon": "page_white_text", "root": "dropbox", "mime_type": "text/plain", "size": "4 bytes“ } ], "size": "0 bytes“ } 8
  • 17. More Examples… DropBox Server Response 1: Header: { x-frame-options=[SAMEORIGIN], x-dropbox-request-id=[b9a25269beb2c75fa7d7e21e1638bb9d], Connection=[keep-alive], Server=[nginx], pragma=[no-cache], cache-control=[no-cache], x-server-response-time=[64], x-dropbox-http-protocol=[None], set-cookie=[gvc=MjExODUyMTE….. expires=Tue, 26 Mar 2019 18:34:14 GMT], Transfer-Encoding=[chunked], Date=[Thu, 27 Mar 2014 18:34:14 GMT], Content-Type=[application/json], X-RequestId=[c64da98881e565a90a5dd9aecea9f049] } Body: { "hash": "f9d780e7655fe43261b4de9ec9a926eb", "revision": 2, "rev": "21e8a5a19", "thumb_exists": false, "bytes": 0, "modified": "Tue, 28 Jan 2014 21:45:31 +0000", "path": "/test", "is_dir": true, "icon": "folder", "root": "dropbox", "contents": [ { "revision": 3, "rev": "31e8a5a19", "thumb_exists": false, "bytes": 4, "modified": "Tue, 28 Jan 2014 21:46:30 +0000", "client_mtime": "Tue, 28 Jan 2014 21:46:30", "path": "/test/test.txt", "is_dir": false, "icon": "page_white_text", "root": "dropbox", "mime_type": "text/plain", "size": "4 bytes“ } ], "size": "0 bytes“ } No hyperlinks to follow!No hyperlinks to follow! No hyperlinks to follow!No hyperlinks to follow! 8
  • 18. More Examples… No hyperlinks to follow!No hyperlinks to follow! No hyperlinks to follow!No hyperlinks to follow! DropBox Server Response 1: Header: { x-frame-options=[SAMEORIGIN], x-dropbox-request-id=[b9a25269beb2c75fa7d7e21e1638bb9d], Connection=[keep-alive], Server=[nginx], pragma=[no-cache], cache-control=[no-cache], x-server-response-time=[64], x-dropbox-http-protocol=[None], set-cookie=[gvc=MjExODUyMTE….. expires=Tue, 26 Mar 2019 18:34:14 GMT], Transfer-Encoding=[chunked], Date=[Thu, 27 Mar 2014 18:34:14 GMT], Content-Type=[application/json], X-RequestId=[c64da98881e565a90a5dd9aecea9f049] } Body: { "hash": "f9d780e7655fe43261b4de9ec9a926eb", "revision": 2, "rev": "21e8a5a19", "thumb_exists": false, "bytes": 0, "modified": "Tue, 28 Jan 2014 21:45:31 +0000", "path": "/test", "is_dir": true, "icon": "folder", "root": "dropbox", "contents": [ { "revision": 3, "rev": "31e8a5a19", "thumb_exists": false, "bytes": 4, "modified": "Tue, 28 Jan 2014 21:46:30 +0000", "client_mtime": "Tue, 28 Jan 2014 21:46:30", "path": "/test/test.txt", "is_dir": false, "icon": "page_white_text", "root": "dropbox", "mime_type": "text/plain", "size": "4 bytes“ } ], "size": "0 bytes“ } 8
  • 19. More Examples… DropBox Server Response 2: Header: { x-frame-options=[SAMEORIGIN], x-dropbox-request-id=[cd12e1e844327464485842b11b530071] Connection=[keep-alive], Server=[nginx], pragma=[no-cache], cache-control=[no-cache], x-server-response-time=[110], x-dropbox-http-protocol=[None], set-cookie=[gvc=MzIwNTkxODQzNjQy.....; expires=Sat, 06 Apr 2019 22:11:47 GMT; Transfer-Encoding=[chunked], Date=[Mon, 07 Apr 2014 22:11:47 GMT], Content-Type=[application/json], X-RequestId=[d509463440ada422459335fd3c71d309] } Body: { "referral_link": "https://db.tt/AaWjP9HP", "display_name": "Francis Palma", "uid": 118690394, "country": "CA", "quota_info": { "datastores": 0, "shared": 293074019, "quota": 2147483648, "normal": 1661304356 }, "team": null, "email": "francis.polymtl@yahoo.ca" } No hyperlinks to follow!No hyperlinks to follow! No hyperlinks to follow!No hyperlinks to follow! DropBox Server Response 1: Header: { x-frame-options=[SAMEORIGIN], x-dropbox-request-id=[b9a25269beb2c75fa7d7e21e1638bb9d], Connection=[keep-alive], Server=[nginx], pragma=[no-cache], cache-control=[no-cache], x-server-response-time=[64], x-dropbox-http-protocol=[None], set-cookie=[gvc=MjExODUyMTE….. expires=Tue, 26 Mar 2019 18:34:14 GMT], Transfer-Encoding=[chunked], Date=[Thu, 27 Mar 2014 18:34:14 GMT], Content-Type=[application/json], X-RequestId=[c64da98881e565a90a5dd9aecea9f049] } Body: { "hash": "f9d780e7655fe43261b4de9ec9a926eb", "revision": 2, "rev": "21e8a5a19", "thumb_exists": false, "bytes": 0, "modified": "Tue, 28 Jan 2014 21:45:31 +0000", "path": "/test", "is_dir": true, "icon": "folder", "root": "dropbox", "contents": [ { "revision": 3, "rev": "31e8a5a19", "thumb_exists": false, "bytes": 4, "modified": "Tue, 28 Jan 2014 21:46:30 +0000", "client_mtime": "Tue, 28 Jan 2014 21:46:30", "path": "/test/test.txt", "is_dir": false, "icon": "page_white_text", "root": "dropbox", "mime_type": "text/plain", "size": "4 bytes“ } ], "size": "0 bytes“ } 8
  • 20. More Examples… DropBox Server Response 2: Header: { x-frame-options=[SAMEORIGIN], x-dropbox-request-id=[cd12e1e844327464485842b11b530071] Connection=[keep-alive], Server=[nginx], pragma=[no-cache], cache-control=[no-cache], x-server-response-time=[110], x-dropbox-http-protocol=[None], set-cookie=[gvc=MzIwNTkxODQzNjQy.....; expires=Sat, 06 Apr 2019 22:11:47 GMT; Transfer-Encoding=[chunked], Date=[Mon, 07 Apr 2014 22:11:47 GMT], Content-Type=[application/json], X-RequestId=[d509463440ada422459335fd3c71d309] } Body: { "referral_link": "https://db.tt/AaWjP9HP", "display_name": "Francis Palma", "uid": 118690394, "country": "CA", "quota_info": { "datastores": 0, "shared": 293074019, "quota": 2147483648, "normal": 1661304356 }, "team": null, "email": "francis.polymtl@yahoo.ca" } DropBox Server Response 1: Header: { x-frame-options=[SAMEORIGIN], x-dropbox-request-id=[b9a25269beb2c75fa7d7e21e1638bb9d], Connection=[keep-alive], Server=[nginx], pragma=[no-cache], cache-control=[no-cache], x-server-response-time=[64], x-dropbox-http-protocol=[None], set-cookie=[gvc=MjExODUyMTE….. expires=Tue, 26 Mar 2019 18:34:14 GMT], Transfer-Encoding=[chunked], Date=[Thu, 27 Mar 2014 18:34:14 GMT], Content-Type=[application/json], X-RequestId=[c64da98881e565a90a5dd9aecea9f049] } Body: { "hash": "f9d780e7655fe43261b4de9ec9a926eb", "revision": 2, "rev": "21e8a5a19", "thumb_exists": false, "bytes": 0, "modified": "Tue, 28 Jan 2014 21:45:31 +0000", "path": "/test", "is_dir": true, "icon": "folder", "root": "dropbox", "contents": [ { "revision": 3, "rev": "31e8a5a19", "thumb_exists": false, "bytes": 4, "modified": "Tue, 28 Jan 2014 21:46:30 +0000", "client_mtime": "Tue, 28 Jan 2014 21:46:30", "path": "/test/test.txt", "is_dir": false, "icon": "page_white_text", "root": "dropbox", "mime_type": "text/plain", "size": "4 bytes“ } ], "size": "0 bytes“ } No hyperlinks to follow!No hyperlinks to follow! No hyperlinks to follow!No hyperlinks to follow! 8
  • 21. Alchemy Client Request: Header: { cache-control=[no-cache], content-type=[application/xml], connection=[keep-alive], host=[access.alchemyapi.com], accept=[application/xml], path=/calls/url/URLGetRankedNamedEntities?... get /calls/url/urlgetrankednamedentities?... user-agent=[Apache CXF 2.7.5], pragma=[no-cache] } Alchemy Server Response: Header: { content-type=[application/xml; charset=utf-8], cache-control=[no-cache], connection=[keep-alive], access-control-allow-origin=[*], content-length=[506], server=[nginx], date=[Fri, 15 Aug 2014 19:30:28 GMT] } Body: <?xml version="1.0" encoding="UTF-8"?> <results> <status>OK</status> <usage>By accessing AlchemyAPI or using information generated by AlchemyAPI, you are agreeing to be bound by the AlchemyAPI Terms of Use:http://www.alchemyapi.com/company/terms.html </usage> <url>http://www.cnn.com/2011/09/28/us/...</url> <language>english</language> <microformats> <a href="/cnn" rel="tag">cnn</a> </microformats> </results> More Examples… 9
  • 22. Alchemy Client Request: Header: { cache-control=[no-cache], content-type=[application/xml], connection=[keep-alive], host=[access.alchemyapi.com], accept=[application/xml], path=/calls/url/URLGetRankedNamedEntities?... get /calls/url/urlgetrankednamedentities?... user-agent=[Apache CXF 2.7.5], pragma=[no-cache] } Alchemy Server Response: Header: { content-type=[application/xml; charset=utf-8], cache-control=[no-cache], connection=[keep-alive], access-control-allow-origin=[*], content-length=[506], server=[nginx], date=[Fri, 15 Aug 2014 19:30:28 GMT] } Body: <?xml version="1.0" encoding="UTF-8"?> <results> <status>OK</status> <usage>By accessing AlchemyAPI or using information generated by AlchemyAPI, you are agreeing to be bound by the AlchemyAPI Terms of Use:http://www.alchemyapi.com/company/terms.html </usage> <url>http://www.cnn.com/2011/09/28/us/...</url> <language>english</language> <microformats> <a href="/cnn" rel="tag">cnn</a> </microformats> </results> More Examples… 9
  • 23. Alchemy Client Request: Header: { cache-control=[no-cache], content-type=[application/xml], connection=[keep-alive], host=[access.alchemyapi.com], accept=[application/xml], path=/calls/url/URLGetRankedNamedEntities?... get /calls/url/urlgetrankednamedentities?... user-agent=[Apache CXF 2.7.5], pragma=[no-cache] } Alchemy Server Response: Header: { content-type=[application/xml; charset=utf-8], cache-control=[no-cache], connection=[keep-alive], access-control-allow-origin=[*], content-length=[506], server=[nginx], date=[Fri, 15 Aug 2014 19:30:28 GMT] } Body: <?xml version="1.0" encoding="UTF-8"?> <results> <status>OK</status> <usage>By accessing AlchemyAPI or using information generated by AlchemyAPI, you are agreeing to be bound by the AlchemyAPI Terms of Use:http://www.alchemyapi.com/company/terms.html </usage> <url>http://www.cnn.com/2011/09/28/us/...</url> <language>english</language> <microformats> <a href="/cnn" rel="tag">cnn</a> </microformats> </results> More Examples… 9
  • 24. YouTube Client Request: Header: { cache-control=[no-cache], content-type=[application/xml], connection=[keep-alive], host=[www.googleapis.com], accept=[application/xml], get/youtube/v3/subscriptions?mine=true&part=snippet&access_token=.. http/1.1=[null], user-agent=[Apache CXF 2.7.11], pragma=[no-cache] } YouTube Server Response: Header: { x-frame-options=[SAMEORIGIN], content-type=[application/json; charset=UTF-8], cache-control=[private, max-age=300,must-revalidate,no-transform], x-xss-protection=[1; mode=block], x-content-type-options=[nosniff], expires=[Tue, 14 Oct 2014 17:57:26 GMT], etag=["PSjn-HSKiX6orvNhGZvglLI2lvk/PZz4CABe3efkukxgHuo_yc_qoJs"], content-length=[324], server=[GSE], alternate-protocol=[443:quic,p=0.01], date=[Tue, 14 Oct 2014 17:57:26 GMT], vary=[X-Origin, Referer, Origin] } Body: { "kind": "youtube#videoListResponse", "etag": ""PSjn-HSKiX6orvNhGZvglLI2lvk/PZz4CABe3efkukxgHuo_yc_qo", "pageInfo": { "totalResults": 1, "resultsPerPage": 1 }, “ items": [ { "kind": "youtube#video", "etag": ""PSjn- HSKiX6orvNhGZvglLI2lvk/9hUt36nrZXNpfqDh...", "id": "SRQtW-sjDGw" } ] } More Examples… Alchemy Client Request: Header: { cache-control=[no-cache], content-type=[application/xml], connection=[keep-alive], host=[access.alchemyapi.com], accept=[application/xml], path=/calls/url/URLGetRankedNamedEntities?... get /calls/url/urlgetrankednamedentities?... user-agent=[Apache CXF 2.7.5], pragma=[no-cache] } Alchemy Server Response: Header: { content-type=[application/xml; charset=utf-8], cache-control=[no-cache], connection=[keep-alive], access-control-allow-origin=[*], content-length=[506], server=[nginx], date=[Fri, 15 Aug 2014 19:30:28 GMT] } Body: <?xml version="1.0" encoding="UTF-8"?> <results> <status>OK</status> <usage>By accessing AlchemyAPI or using information generated by AlchemyAPI, you are agreeing to be bound by the AlchemyAPI Terms of Use:http://www.alchemyapi.com/company/terms.html </usage> <url>http://www.cnn.com/2011/09/28/us/...</url> <language>english</language> <microformats> <a href="/cnn" rel="tag">cnn</a> </microformats> </results> 9
  • 25. YouTube Client Request: Header: { cache-control=[no-cache], content-type=[application/xml], connection=[keep-alive], host=[www.googleapis.com], accept=[application/xml], get/youtube/v3/subscriptions?mine=true&part=snippet&access_token=.. http/1.1=[null], user-agent=[Apache CXF 2.7.11], pragma=[no-cache] } YouTube Server Response: Header: { x-frame-options=[SAMEORIGIN], content-type=[application/json; charset=UTF-8], cache-control=[private, max-age=300,must-revalidate,no-transform], x-xss-protection=[1; mode=block], x-content-type-options=[nosniff], expires=[Tue, 14 Oct 2014 17:57:26 GMT], etag=["PSjn-HSKiX6orvNhGZvglLI2lvk/PZz4CABe3efkukxgHuo_yc_qoJs"], content-length=[324], server=[GSE], alternate-protocol=[443:quic,p=0.01], date=[Tue, 14 Oct 2014 17:57:26 GMT], vary=[X-Origin, Referer, Origin] } Body: { "kind": "youtube#videoListResponse", "etag": ""PSjn-HSKiX6orvNhGZvglLI2lvk/PZz4CABe3efkukxgHuo_yc_qo", "pageInfo": { "totalResults": 1, "resultsPerPage": 1 }, “ items": [ { "kind": "youtube#video", "etag": ""PSjn- HSKiX6orvNhGZvglLI2lvk/9hUt36nrZXNpfqDh...", "id": "SRQtW-sjDGw" } ] } More Examples… Alchemy Client Request: Header: { cache-control=[no-cache], content-type=[application/xml], connection=[keep-alive], host=[access.alchemyapi.com], accept=[application/xml], path=/calls/url/URLGetRankedNamedEntities?... get /calls/url/urlgetrankednamedentities?... user-agent=[Apache CXF 2.7.5], pragma=[no-cache] } Alchemy Server Response: Header: { content-type=[application/xml; charset=utf-8], cache-control=[no-cache], connection=[keep-alive], access-control-allow-origin=[*], content-length=[506], server=[nginx], date=[Fri, 15 Aug 2014 19:30:28 GMT] } Body: <?xml version="1.0" encoding="UTF-8"?> <results> <status>OK</status> <usage>By accessing AlchemyAPI or using information generated by AlchemyAPI, you are agreeing to be bound by the AlchemyAPI Terms of Use:http://www.alchemyapi.com/company/terms.html </usage> <url>http://www.cnn.com/2011/09/28/us/...</url> <language>english</language> <microformats> <a href="/cnn" rel="tag">cnn</a> </microformats> </results> 9
  • 26. SBSs + Antipatterns = ? An automatic approach to detect SOA antipatterns in SBSs may support their easy maintenance and evolution. Poor performance Hard for comprehension Low maintainability Hard for evolution Expensive maintenance life Low reusability + Specification and Detection of SOA Antipatterns 10
  • 27. Research Problems • No specification of SOA antipatterns • No dedicated approach and framework for the detection of SOA antipatterns in SBSs • Impact of SOA antipatterns is not yet verified in service-based systems Specification and Detection of SOA Antipatterns 11
  • 29. Research Questions RQ1: Do service-oriented antipatterns differ from the object-oriented antipatterns? RQ2: Do the service-oriented antipatterns vary in diverse SBSs developed using different SOA technologies? RQ3: Can we efficiently specify and detect SOA antipatterns regardless of SOA technologies? RQ4: How do the SOA antipatterns impact the maintenance and evolution of SBSs? Specification and Detection of SOA Antipatterns 12
  • 31. Related Work Specification and Detection of SOA Antipatterns 13
  • 32. Related Work: Summary What to Detect/ Technology OO CBSs SOA Other Code Smells Emden and Moonen, 2002 Khomh et al., 2009 Moha et al., 2010 Luo et al., 2010 Maneerat and Muenchaisri, 2011 X X X Antipatterns Correa et al., 2000 Marinescu, 2001, 2004 Boussaidi et al., 2005 Kreimer, 2005, Biehl, 2006 Salehie et al., 2006 Choinzon and Ueda, 2006 Rao and Reddy, 2007 Khomh et al., 2009, 2011 Llano and Pooley, 2009 Moha et al., 2010 Cortellessa et al., 2010 Luo et al., 2010, Settas et al., 2011 Stoianov and Sora, 2010 Kessentini et al., 2011 Parsons and Murphy, 2004 Parsons and Murphy, 2008 Chis, 2008 X Wong et al., 2010 Fourati et al., 2011 Design Patterns Kramer and Prechelt, 1996 Antoniol et al., 1998 Heuzeroth et al., 2003 Tsantalis et al., 2006 Kaczor et al., 2006 Guéhéneuc and Antoniol, 2008 Stoianov and Sora, 2010 Maggioni and Arcelli, 2010 Kaczor et al., 2010 Rasool and Mäder, 2011 X Di Penta et al., 2007 X Specification and Detection of SOA Antipatterns 14
  • 34. Introduction: Contribution With the goal to assess the design and QoS of SBSs: • SODA (Service Oriented Detection for Antipatterns), a novel and innovative approach • SOFA (Service Oriented Framework for Antipatterns), a framework, - to specify SOA antipatterns and detect them automatically - to perform static and dynamic analyses Specification and Detection of SOA Antipatterns 15
  • 36. Proposed SODA Approach Specification and Detection of SOA Antipatterns 16
  • 37. SOA Antipatterns Tree Specification and Detection of SOA Antipatterns 17
  • 38. Domain Analysis “Multi Service also known as God Object corresponds to a service that implements a multitude of methods related to different business and technical abstractions. This aggregates too much into a single service, such a service is not easily reusable because of the low cohesion of its methods and is often unavailable to end-users because of its overload, which may induce a high response time” (Dudney et al., 2003) Textual Description of Antipatterns 1.Specifications Rule Card 2.Generation Detection Algorithms 3.Detection SBSTemplate Services involved in antipatterns Specification and Detection of SOA Antipatterns 18
  • 39. Antipatterns Specification Language Textual Description of Antipatterns 1.Specifications Rule Card 2.Generation Detection Algorithms 3.Detection SBSTemplate Services involved in antipatterns Specification and Detection of SOA Antipatterns 19
  • 40. Specification Examples 1 RULE_CARD: GodObjectWebService { 2 RULE: GodObjectWebService { INTER LowCohesion MultiOperation HighResponseTime LowAvailability }; 3 RULE: LowCohesion { COH VERY_LOW }; 4 RULE: MultiOperation { NOD HIGH }; 5 RULE: HighResponseTime { RT VERY_HIGH }; 6 RULE: LowAvailability { A LOW }; 7 }; 1 RULE_CARD: GodComponent { 2 RULE: GodComponent { INTER HighEncapsulatedService MultiMethod HighParameter }; 3 RULE: HighEncapsulatedService { NOSE HIGH }; 4 RULE: MultiMethod { NMD VERY_HIGH }; 5 RULE: HighParameter { TNP VERY_HIGH }; 6 }; Textual Description of Antipatterns 1.Specifications Rule Card 2.Generation Detection Algorithms 3.Detection SBSTemplate Services involved in antipatterns Specification and Detection of SOA Antipatterns 20
  • 41. Algorithm Generation Textual Description of Antipatterns 1.Specifications Rule Card 2.Generation Detection Algorithms 3.Detection SBSTemplate Services involved in antipatterns Model Driven Engineering (MDE) Parsing 1 Visiting & Replacing 2 Templates Models of Rule Cards Rule Cards Algorithms Specification and Detection of SOA Antipatterns 21
  • 42. SOFA Detection Framework Textual Description of Antipatterns 1.Specifications Rule Card 2.Generation Detection Algorithms 3.Detection SBSTemplate Services involved in antipatterns Specification and Detection of SOA Antipatterns 22
  • 44. Validation: Subjects Service Component Architecture SOAP-based Web services 1. Multi Service 2. Tiny Service 3. Sand Pile 4. Chatty Service 5. The Knot 6. Nobody Home 7. Duplicated Service 8. Bottleneck Service 9. Service Chain 10. Data Service 11. God Component 12. Bloated Service 13. Stovepipe Service 1. God Object Web Service 2. Fine Grained Web Service 3. Ambiguous Name 4. Duplicated Web Service 5. Chatty Web Service 6. Low Cohesive Operations in the Same Port 7. Redundant Port 8. Maybe It is Not RPC 9. Data Web Service 10. CRUDy Interface REST 1. Ignoring Status Code 2. Tunneling Everything Through GET 3. Tunneling Everything Through POST 4. Forgetting Hypermedia 5. Ignoring Caching 6. Misusing Cookies 7. Ignoring MIME Types 8. Breaking Self Descriptiveness 9. Contextless Resource Names 10. Singularised URI Nodes Specification and Detection of SOA Antipatterns 23
  • 45. Validation: Objects Service Component Architecture Home-Automation – an SCA-based demo system to automate household FraSCAti – the largest open source SCA system and runtime library for SCA apps REST APIs 12 REST APIs including BestBuy, DropBox, Facebook, Twitter, and YouTube 115 RESTful method calls SOAP-based Web Services 120+ Weather- and Finance-related SOAP Web services Specification and Detection of SOA Antipatterns 24
  • 47. *Availability 100% Detection Result: Multi Service in SCA Mediator Specification and Detection of SOA Antipatterns 25
  • 48. Partial Results on SCA (FraSCAti) Antipattern Name Services Involved Metrics Time Precision Recall Tiny Service sca-parser NMD=1; CPL=0.56 0.067s [1/1] 100% [1/1] 100% Bottleneck Service sca-composite sca-parser RT=41ms;CPL=0.96; NIR=16;NOR=8 RT=45ms;CPL=0.84; NIR=16;NOR=5 0.086s [1/2] 50% [1/1] 100% Specification and Detection of SOA Antipatterns 26
  • 49. Summary Results on SCA SCA Systems Average Precision Average Recall Average Detection Time Home-Automation 92.5% 100% 0.387s FraSCAti 89.17% 95% 0.089s Average 90.84% 97.5% 0.238s Specification and Detection of SOA Antipatterns 27
  • 50. Detection Results in Web Services
  • 51. 51 Detection of Chatty Web Service antipattern in TaarifCustoms Web service. RULE_CARD: ChattyWebService { RULE: ChattyWebService {INTER LowCohesion HighDataAccessor MultiOperation LowPerformance}; RULE: LowCohesion {COH LOW}; RULE: HighDataAccessor {ANAO VERY_HIGH}; RULE: MultiOperation {NOD HIGH}; RULE: LowPerformance {INTER HighRT LowA}; RULE: HighRT {RT HIGH}; RULE: LowA {A LOW}; }; 23  Low Cohesion  High Accessor Methods  High Methods  High Response Time  Low Availability Detection Result: Chatty Web Service Specification and Detection of SOA Antipatterns
  • 52. Summary Results on Web Services Experiments Detection Times Detected (True Positive) Manually Validated Precision Recall 13 Weather Web services 102.19s 7 (6) 6 85.71% 100% 109 Finance Web services 192.91s 24 (22) 22 91.67% 100% Average - - - 88.69% 100% Specification and Detection of SOA Antipatterns 29
  • 54. SODA-R approach for REST SODA-R: Service Oriented Detection for Antipatterns in REST Step 1 Analysis Description of REST patterns and antipatterns Heuristics Step 2 Algorithms Detection Detected REST patterns and antipatterns REST APIs Implementation Application of Algorithms Specification and Detection of SOA Antipatterns 30
  • 55. Detection Heuristics 1: ENTITY-LINKING(response-header, response-body, http-method) 2: body-links[]  EXTRACT-ENTITY-LINKS(response-body) 3: header-link  response-header.getValue(“Link”) 4: if (http-method = GET and (LENGTH(body-links[]) = 1 or header-link  NIL)) or 5: (http-method = POST and (“Location:”  response-header.getKeys() or 6: LENGTH(body-links[]) = 1))) then 7: print “Entity Linking detected” 8: end if Heuristic of Entity Linking pattern 1: FORGET-HYPER-MEDIA(response-header, response-body, http-method) 2: body-links[]  EXTRACT-ENTITY-LINKS(response-body) 3: header-link  response-header.getValue(“Link”) 4: if (http-method = GET and (LENGTH(body-links[]) = 0 or header-link = NIL)) or 5: (http-method = POST and (“Location:”  response-header.getKeys() and 6: LENGTH(body-links[]) = 0))) then 7: print “Forgetting Hypermedia detected” 8: end if Heuristic of Forgetting Hypermedia antipattern Specification and Detection of SOA Antipatterns 31
  • 56. Detection Phase Heuristics Detection Algorithms Service Interfaces Step 2.2 Dynamic Invocation REST requests and responses Client Authentication REST APIs Detected REST patterns and antipatterns Step 2.3 ApplicationImplementation Algorithms Interfaces Step 2.1 Specification and Detection of SOA Antipatterns 32
  • 57. Validation: Objects in REST REST APIs Online Documentations alchemyapi.com/api/ bbyopen.com/developer/ dev.bitly.com/api.html charlieharvey.org.uk/about/api/ dropbox.com/developers/core/docs/ developers.facebook.com/docs/graph-api/ developer.musicgraph.com/api-docs/overview/ github.com/blackducksw/ohloh_api/ integrate.teamviewer.com/en/develop/documentation/ dev.twitter.com/docs/api/ developers.google.com/youtube/v3/ developer.zappos.com/docs/api-documentation/ Specification and Detection of SOA Antipatterns 33
  • 59. Detection Results for Antipatterns - 0.50 1.00 1.50 2.00 2.50 3.00 3.50 average_antipatterns_instance Specification and Detection of SOA Antipatterns 34
  • 60. Detection Results for Antipatterns - 0.50 1.00 1.50 2.00 2.50 3.00 3.50 average_antipatterns_instance Specification and Detection of SOA Antipatterns 34
  • 61. - 0.50 1.00 1.50 2.00 2.50 3.00 3.50 average_patterns_instances Detection Results for Patterns Specification and Detection of SOA Antipatterns 35
  • 62. - 0.50 1.00 1.50 2.00 2.50 3.00 3.50 average_patterns_instances Detection Results for Patterns Specification and Detection of SOA Antipatterns 35
  • 63. - 0.50 1.00 1.50 2.00 2.50 3.00 3.50 Detection Results: Antipatterns vs. Pattern Specification and Detection of SOA Antipatterns 36
  • 64. Forgetting_Hypermedia Entity_Linking - 0.50 1.00 1.50 2.00 2.50 3.00 3.50 Detection Results: Antipatterns vs. Pattern Specification and Detection of SOA Antipatterns 36
  • 65. Example Detection Results (7)Alchemy- (12)BestBuy- (3)Bitly- (4)CharlieHarvey- (15)DropBox- (29)Facebook- (8)Musicgraph- (3)Ohloh- (8)TeamViewer- (10)Twitter- (9)YouTube- (7)Zappos- (115)Total- AveragePrecision- Recall- DetectionTime- Forgetting Hypermedia 1/1 0/0 2/2 0/0 9/10 8/8 7/7 0/0 3/3 4/4 2/3 0/0 36/38 94.58% 19.54s 1/1 0/0 2/2 0/0 9/9 8/8 7/7 0/0 3/3 4/4 2/2 0/0 36/36 100% Entity Linking 6/6 11/11 1/1 4/4 3/3 21/21 1/1 2/2 1/1 5/5 6/6 4/4 65/65 100% 19.90s 6/6 11/11 1/1 4/4 3/3 21/21 1/1 2/2 1/1 5/5 6/7 4/4 65/66 98.81% Specification and Detection of SOA Antipatterns 37
  • 67. H1: Generality Our DSL allows the specification of various SOA antipatterns, from simple to more complex ones 1 RULE_CARD: LowCohesiveOperations { 2 RULE: LowCohesiveOperations { INTER MultiOperation LowCohesivePT }; 3 RULE: MultiOperation { NOD HIGH }; 4 RULE: LowCohesivePT { ARIO LOW }; 5 }; Specification and Detection of SOA Antipatterns 38
  • 68. H1: Generality Our DSL allows the specification of various SOA antipatterns, from simple to more complex ones 1 RULE_CARD: CRUDyInterface { 2 RULE: CRUDyInterface { INTER ChattyInterface HighCRUDOperation }; 3 RULE: ChattyInterface { RULE_CARD: ChattyWebService }; 4 RULE: HighCRUDOperation { NCO > 1 }; 5 }; 1 RULE_CARD: ChattyWebService { 2 RULE: ChattyWebService { INTER LowCohesion HighDataAccessor MultiOperation LowPerformance }; 3 RULE: LowCohesion { COH LOW }; 4 RULE: HighDataAccessor { ANAO VERY_HIGH }; 5 RULE: MultiOperation { NOD HIGH }; 6 RULE: LowPerformance { INTER HighRT LowA }; 7 RULE: HighRT { RT HIGH }; 8 RULE: LowA { A LOW }; 9 }; 1 RULE_CARD: LowCohesiveOperations { 2 RULE: LowCohesiveOperations { INTER MultiOperation LowCohesivePT }; 3 RULE: MultiOperation { NOD HIGH }; 4 RULE: LowCohesivePT { ARIO LOW }; 5 }; Specification and Detection of SOA Antipatterns 38
  • 69. H2: Accuracy The detection algorithms have an average precision of more than 75% and a recall of 100%, i.e., more than three-quarters of detected antipatterns are true positive and we do not miss any existing antipatterns Web Services 88.69% 100% Average Precision Average Recall SCA 90.84% 97.5% REST 89.42% 94% Specification and Detection of SOA Antipatterns 39 Average 89.65% 97.17%
  • 70. H3: Extendibility Our DSL and SOFA framework are extensible for adding new metrics and new SOA antipatterns Web Services 10 0 10 Antipatterns Patterns New Metrics SCA 13 0 17 REST 8 5 - Total 31 5 27 Specification and Detection of SOA Antipatterns 40
  • 71. H4: Performance The computation time required for the detection of antipatterns using the generated algorithms is reasonably very low, i.e., in the order of few seconds Web Services 147.55s Average Detection Time SCA 0.238s REST 21.43s Average 51.41s Specification and Detection of SOA Antipatterns 41
  • 73. Impact of Antipatterns The Wilcoxon Rank Sum Test 42
  • 75. Conclusion Specification and Detection of SOA Antipatterns 43
  • 76. Conclusion Specification and Detection of SOA Antipatterns 43
  • 77. Conclusion Specification and Detection of SOA Antipatterns 43
  • 78. Conclusion Specification and Detection of SOA Antipatterns 43
  • 79. Current and Future Plan • Antipatterns in service-oriented business processes, i.e., BPEL • Semantic analysis of REST APIs based on dictionaries (WordNet and Stanford Core NLP) • A comprehensive tool support for the detection • Further validation of the approach with more Web services and RESTful APIs Specification and Detection of SOA Antipatterns 44
  • 81.