Service oriented architecture has become a popular architectural style in industry [1]. SOA encourages
the development of low‑cost, flexible, distributed and reusable business solutions by combining
services that are independent, portable and interoperable program units accessible over the internet.
In practice SOA can be analysed using various technologies and architectural styles, including SCA
(service component architecture), REST (representational state transfer) and web services.
Web services are the main part of the SOA technologies used today to develop service‑based systems
(SBSs) [2]. Amazon, eBay, Google, FedEx, PayPal and many other companies are all influenced by web
services. Web services are commonly referred to as SOAP‑based or REST‑based; the main focus of the
present research is SOAP‑based web services.
Service‑based systems evolve to meet different user requirements or to adjust to changed execution
contexts. These changes may cause design and implementation issues, and often introduce poor practices
called antipatterns. It is therefore important to find the antipatterns that affect the quality of
services, not only in service‑based systems but also in individual web services. Antipatterns have
been shown to negatively affect the quality of services and the maintenance and evolution of software
systems [3, 4, 5].
Moving towards a list of antipatterns, J2EE antipatterns were the first discussed in the literature
[6]. A major portion of the discussion concerns God Object web services and Fine Grained web services
[6]. A God Object web service is one that has a large number of low‑cohesion operations in its
interface, relating to different levels of business abstraction; this may cause high response times
and reduce the availability of services. A Fine Grained web service, by contrast, has very few
cohesive operations, which could be implemented as part of a larger abstraction.
Different techniques have been reported in the literature to help identify and detect antipatterns in
web services [7, 8, 9, 10, 11, 12, 13]. These techniques use static analysis of web services through
their WSDL (Web Services Description Language) files, but their detection methodologies are not clear
with regard to the detection rules for these services; they mostly highlight the definition of web
service antipatterns and their possible solution in terms of refactoring techniques. Another important
factor is that their detection techniques mostly focus on either code‑first or contract‑first web
services, so the results vary depending on how the options are implemented. The tools used for the
code‑first approach are Java2WSDL, EasyWSDL and Visual Studio WSDL; the contract‑first tools
discussed are highly dependent on generating a WSDL description for the interfaces and implementing
them later.
Antipattern detection for SOAP‑based web services using static and dynamic analysis was proposed by
Palma et al. [14]. That methodology is based on the underlying SOFA (service oriented framework) with
tool support called SODA‑W, and detects ten antipatterns in SOAP‑based web services. Its major
focus is the rule‑based detection of the service interface using static source code metrics, and the
calculation of dynamic properties of web services such as availability and response time. That
research is based on a set of metrics used to identify antipatterns in web services, defined using
Backus–Naur Form (BNF) and extensible to new technologies such as SCA and REST. Ouni et al. proposed
a search‑based approach for the detection of antipatterns using a genetic algorithm that measures
static service interface metrics [32]. This approach was later extended by adding code‑level metrics
and measuring the structural properties of SOAP services using both service‑level and code‑level
metrics [33]. The fixed‑threshold problem and the pitfalls of the rule‑based technique [14] are
overcome with dynamic threshold adaptation after implementing a parallel evolutionary algorithm (PE‑A)
[34].
All of the research mentioned above focuses either on SOAP‑based web services or on the WSDL file.
The web service description language is a main part of the web service, so it is important to implement
an approach that assesses the quality of the WSDL as well as of the web service. Service quality is
not addressed properly and the focus remains on the structural properties of the WSDL file. Despite
the wide adoption of web service technologies, no methodology or tool support is available that
detects both WSDL interface and code‑level antipatterns in order to improve service quality, and
there is still a need to check quality‑of‑service issues other than availability and reliability.