Article Preview
TopIntroduction
Service Oriented Architectures (SOA) are a mainstream development paradigm of distributed applications for open and large networks, like the Internet (Papazoglou et al., 2008; Lazovik et al., 2006). SOA caters for the development of highly-scalable systems, whose elementary units are Web services. Individual Web services often provide limited functionalities; therefore, they are unable to meet in isolation complex requirements. Service composition is a powerful mechanism, which coordinates multiple Web services to support complex business goals. Service compositions manifest a number of interesting features, such as loosely-coupling, standard data exchanging, and protocols-based application invoking. As a consequence, service compositions provide a solid solution for application integration in the distributed, dynamic, and heterogeneous environments, and they are increasingly adopted for system re-engineering and optimization (Sun et al., 2011; Karunamurthy et al., 2012; Cheng et al., 2017).
When service compositions act as an infrastructure to realize dynamic and vertical integration of business processes, they may face frequent changes due to quickly-changing requirements or dynamic environments. Service compositions are expected to be adaptive and configurable, and many efforts have been reported to address this issue (Erradi & Maheshwari, 2005; Ezenwoye & Sadjadi, 2006; Colombo et al., 2006; Hammas et al., 2015; Sheng et al., 2009; Ardagna & Pernici, 2007; Laleh et al., 2017; Yau et al., 2009). One approach is to make service compositions adaptable resorting to the proxy (or broker) pattern (Erradi & Maheshwari, 2005; Ezenwoye & Sadjadi, 2006; Colombo et al., 2006; Hammas et al., 2015). A request message is first sent to a proxy, the message is then passed to the targeted Web service, finally the targeted Web service executes the required operations and returns the result to the proxy, and the proxy transfers the result to the invoker. This approach focuses on service selection or replacement in service composition instances at run-time. Another approach is based on annotations (Sheng et al., 2009; Ardagna & Pernici, 2007; Laleh et al., 2017). Constraints, policies or rules of service compositions are specified in a declarative manner, and then predefined goals are satisfied.
A recent trend is to address the adaptation issue via modelling the variability of service compositions (Nguyen et al., 2011; Galster & Avgeriou, 2013; Wang & Wang, 2013; Alférez et al., 2014; Nguyen et al., 2016). There are two ways, namely, imperative and declarative (Aiello et al., 2010). The imperative method focuses on the procedure of constructing a process and defining fixed sets of variations. For instance, Provop is a framework capturing all process variants in a single process model, which defines the optional element to implement the changes of the basic process model (Hallerbach et al., 2008). The declarative method focuses on expressing the logic of a process without explicitly describing its control flows. Pesic et al. (2007) proposed an approach to support variability of workflow systems via constraint-based models. Changes can be done by handling constraints and activities at run-time. Service compositions resemble workflow systems in the context of SOA, while manifesting many new features. Supporting variability of service compositions is still not mature and significant efforts are required in this direction.