Beruflich Dokumente
Kultur Dokumente
where:
is a set of features which can be partitioned into disjoint sets of mandatory
features M and variant features V,
is the hierarchical (or compose-of) relation, i.e. a set of parent
and child relationships,
.
3.4 Service customisation mode
57
and B exclude the selection of feature C) might be necessary, we only consider
simple require and exclude constraints (i.e. feature A requires/excludes fea-
ture B) in this thesis.
In general, customisation options are represented as a set of features and various re-
strictions among features (e.g. feature cardinality, group cardinality, or cross-tree
constraints). An example of customisation options based on the feature model in Figure
3.2 is shown in Example 3.1.
3.4.1.1 Advantages of exploiting feature models
Comparing to approaches exposing variability in the technical service interface de-
scriptions as customisation options, there are a number of advantages in exploiting feature
models (Nguyen 2011b):
Reducing complexity: As a characteristic of service variability, the number of
variation points and variants increases when we go down the levels of abstraction
at which variability is modeled. Variability at the requirement level exhibits few-
er variation points and variants compared to the service interface level. Therefore,
our approach simplifies the customisation task for service consumers.
Technical blindness: Since variability is described at the requirement level, ra-
ther than the technical level, consumers do not have to be familiar with technical
realisation of services in order to perform customisation. In addition, during the
customisation process, consumers are able to reason about what a service variant
can achieve at a high level of abstraction, rather than the differences in low level
technical details of each service variant.
Example 3.1 - An example of customisation options
Chapter 3 - Feature-based Service Customisation Framework
58
Dependencies among customisation options: Instead of describing the depend-
encies among customisation options using natural languages, feature models
enable the capturing of these dependencies as cross-tree constraints. This pro-
vides a consistent way for representing customisation options and facilitates the
reasoning of customisation decisions. In addition, the capability also facilitates
the automated validation of customisation decisions (discussed in section 3.4.3.1).
3.4.2 Customisation request as selected and disabled features
Given customisation options represented by a feature model, service consumers will
customise the service by deciding the features they want (i.e. selected features) and
features they do not want (i.e. disabled features). This is similar to configuring a feature
model to derive a feature configuration. In our approach, the set of enabled features and
disabled features (i.e. a feature configuration) becomes consumers customisation
decisions and is contained in a customisation request to which service providers will
react.
We also define as the set of customisation request . An example of a customi-
sation request is presented in Example 3.2.
Customisation options comprise of a set of mandatory features, a set of variant fea-
tures, and restrictions among variant features. A customisation request helps to resolve
variability in the feature model. In other words, the state of a number of variant features
will be decided. This variability resolution helps service providers to resolve variability in
service implementations in order to derive appropriate service variants. The details of the
service variant derivation process will be discussed in the next section. Here we discuss
the semantics of customisation requests.
Definition 3.2 - Customisation request
Given customisation options
, a
customisation request is a 2-tuple of the form (S,R) being S the set of features to
be selected and R the set of features to be removed (or disabled).
Example 3.2 - A customisation request
3.4 Service customisation mode
59
A customisation request is specified by service consumers. It might be ill-formed
(e.g. containing non-existing features) or well-formed. In addition, due to the restrictions
among variant features, the state of undecided variant features might be inferred from the
state of variant features specified in a customisation request. This inference brings about
different variations of customisation requests which are equivalent with respect to
variability resolution (aka. semantically equivalent customisation requests). A customisa-
tion request might be complete or partial. A complete customisation request has the state
of all variant features decided (by directly specified or indirectly inferred), while for
partial customisation requests the state of one or more variant features cannot be inferred
and is undecided. Lastly, a customisation request might be valid or invalid. Valid custom-
isation requests conform to customisation options (or the feature model) and can be used
for variability resolution while invalid customisation requests are not.
In the following subsections, we provide formal definitions and examples of differ-
ent variations and different types of customisation requests.
3.4.2.1 Ill-formed and well-formed customisation requests
An ill-formed customisation request explicitly violates the restrictions specified by a
feature model. It is meaningless with respect to variability resolution in the feature model,
as well as in the service implementation. Since customisation requests are specified by
service consumers, it is unavoidable for service providers to receive such ill-formed ones.
It is service providers role to verify the well-formedness of customisation requests
10
.
10
In Chapter 4, we discuss alternative approaches for service providers to realise the customisation
framework. One approach is that service providers prepare a dedicated UI (User Interface) (e.g. a
Web application) which service consumers can use to specify customisation requests. This
Definition 3.3 - Ill-formed and well-formed customisation requests
Given customisation options
and a
customisation request . is said to be ill-formed if it has any of
following violation properties:
i. a non-existing feature is specified, i.e. or
ii. there exists a feature which is both selected and disabled, i.e. ,
iii. there exists a mandatory feature which is disabled, i.e. .
Otherwise, is called well-formed.
Chapter 3 - Feature-based Service Customisation Framework
60
3.4.2.2 Inferred customisation request
A customisation request and its inferred versions are equivalent with respect to variability
resolution. A customisation request might be well-formed but one of its inferred versions
might become ill-formed. Therefore, expanding a customisation request by inferring more
features not only produces different variations of the customisation request, but also helps
to verify the conformance of the customisation request with respect to the feature model.
There are different rules for inferring additional features depending on restrictions
under consideration. The list of restrictions and the corresponding inference rules are as
follow (Batory 2006; Mendona 2008; Benavides 2010).
Mandatory features : Since mandatory features must not be disabled, any
mandatory feature which is not yet selected might be added to . For instance,
from the customisation request (Example 3.2), we can add the features
SwinsureInsuranceWebService and PolicyCreation to its selected feature list
(Example 3.3).
Feature hierarchy: A hierarchical relation implies that when a child feature is
selected, the parent feature must be selected as well. For instance, from the cus-
tomisation request (Example 3.3) in which the feature Accidental Damage
approach helps to avoid the use of ill-formed customisation requests. However, the approach has a
number of disadvantages so that we choose an alternative one which allows service consumers to
arbitrarily specify customisation requests.
Definition 3.4 - Inferred customisation request
Given customisation options
and a
customisation request , an inferred customisation request
Example 3.3 - An inferred customisation request after adding mandatory
features
3.4 Service customisation mode
61
is selected, it is possible to conclude that the feature Extra Cover must be se-
lected (Example 3.4).
Group cardinality
Example 3.4 - An inferred customisation request after considering the feature
hierarchy
Example 3.5 - An inferred customisation request after considering group
cardinalities
Example 3.6 - An inferred customisation request after considering cross-tree
constraints
Chapter 3 - Feature-based Service Customisation Framework
62
that when f1 is selected, f2 must be selected or when f2 is disabled, f1 must be
disabled. Similar inference applies to exclude relationships. For instance, from
the customisation request (Example 3.5) and feature constraints as shown in
Example 3.1, it is possible to conclude that the features Policy Update and
Extended Third Party Liability must be disabled (Example 3.6).
3.4.2.3 Maximally inferred customisation request
Restrictions in a feature model might be applied multiple times until no further inference
is possible. The final customisation request is defined as maximally inferred customisa-
tion request. For instance,
and
and a
customisation request , a customisation request
is
defined as the maximally inferred customisation request from CR if
is an inferred
customisation request and there does not exist an inferred customisation request from
.
3.4 Service customisation mode
63
and
and
cannot be further
inferred. Therefore,
or
Equation 3.1
Equation 3.2
In a similar way, we also have
Equation 3.3
Equation 3.4
Since
and
, we have
Equation 3.5
Equation 3.6
Expand the left hand side of Equation 3.1 with Equation 3.5 and recall that union
operation is associative we have
Equation 3.7
Compare the left hand side of Equation 3.3 with the left hand side of Equation 3.7
and recall that union operation is symmetric, we can conclude that
. In a similar
fashion, we have
. Therefore
To facilitate our explanation, we also define maximise function as below.
Definition 3.6 - Maximise function
Given customisation options
, a
maximise function F
MA X
: is a function which maps a customisation
request to its maximally inferred customisation request.
Chapter 3 - Feature-based Service Customisation Framework
64
3.4.2.4 Normalised customisation request
Since all mandatory features must be selected, customisation decisions are in fact made
against variant features only. As defined in Definition 3.3, mandatory features should not
be specified as disabled to make a customisation request well-formed. In addition, there is
no need to specify mandatory features in the selected feature list. To simplify customisa-
tion requests, we introduce the concept of normalised customisation requests (Definition
3.7) and normalise function (Definition 3.8).
3.4.2.5 Optimised customisation request
Optimised customisation requests are the most complete and succinct form of customisa-
tion requests. There does not exist an undecided variant feature that can be further
inferred from these optimised customisation requests. In addition, it does not require the
unnecessary specification of mandatory features in its selected feature list. While opti-
mised customisation requests are semantically equivalent to the original customisation
Definition 3.9 - Optimised customisation request
Given customisation options
and a
customisation request , an optimised customisation request
F
N O R M
(F
M A X
( )).
Definition 3.8 - Normalise function
Given customisation options
, a
normalise function F
N O R M
: is a function which maps a customisation
request to its normalised customisation request.
Definition 3.7 - Normalised customisation request
Given customisation options
and a
customisation request , a normalised customisation request
and
.
3.4 Service customisation mode
65
requests, they provide a better view of variability resolution at the feature level (i.e. what
variant features have already been decided and what variant features require further
decision) than the original ones. Consequently, optimised customisation requests help to
resolve variability in the service implementation to its maximal extent. An example of
optimised customisation requests inferred from the customisation request (Example
3.2) is shown in Example 3.7.
Another advantage of optimised customisation requests is the support in validating a
customisation request. We will discuss this advantage in section 3.4.2.6. It should be
noted that the optimised customisation request, normalised customisation requests,
inferred customisation requests are all semantically equivalent to the original customisa-
tion request. Consequently, the resulting customisation responses are the same regardless
of what variation of a customisation request is sent from service consumers. On the other
hand, the consideration of only optimal customisation requests helps to simplify the
explanation while not losing its generality.
3.4.2.6 Valid customisation request
Given all the operations to expand and simplify a customisation request following
restrictions defined in a feature model, we are able to define the validity of customisation
requests. A valid customisation request conforms to the feature model and can be used to
resolve variability in the feature model as well as variability in service implementation. In
contrast, invalid customisation requests cannot help to resolve variability.
The well-formedness and the validity of a customisation request are not the same.
An ill-formed customisation request is certainly invalid. However, even a well-formed
customisation request might be invalid if after expanding it to reach its optimised version,
Example 3.7 - An optimised customisation request
Definition 3.10 - Valid customisation request
Given customisation options
, a
customisation request is valid if its optimised customisation request
is well-formed.
Chapter 3 - Feature-based Service Customisation Framework
66
we get an ill-formed one. For instance, the customisation request
is well-formed. However, based on the
inference rule for require constraints, we are able to derive an inferred customisation
request which is ill-formed. As
such, ill-formed customisation requests explicitly violate constraints defined in the feature
model, while invalid well-formed customisation requests implicitly violate those con-
straints. Such violation only reveals when we expand the customisation request based on
restrictions among features. Well-formed customisation requests which are till well-
formed after their expansion based on all restrictions are valid customisation requests.
3.4.2.7 Complete and partial customisation requests
A customisation request might be complete or partial. In a complete customisation
request, the state of all variant features has already been decided. There is not any
variability left unresolved in the feature model. In contrast, a partial customisation request
leaves one or more variant features undecided. Partial customisation requests only
partially resolve variability in the feature model.
The completeness of customisation requests defines the extent to which variability in
the feature model should be resolved. For instance,
, a
customisation request is said to be complete if its optimised customisa-
tion request
.
Otherwise, when there exist variant feature undecided, i.e.
, is
said to be partial.
Example 3.8 - A complete customisation request
3.4 Service customisation mode
67
3.4.3 Feature-based service variant derivation
In the previous section, we discussed different variations of a customisation request, its
validity, as well as its completeness with respect to variability. In this section, we discuss
the internal activities within service providers to process those customisation requests.
3.4.3.1 The validation of customisation requests
Customisation requests are specified by service consumers and can be arbitrary. There-
fore, customisation requests need to be validated before being processed further. The
validation of a customisation request is similar to the validation of the feature configura-
tion contained in the customisation request with respect to a feature model. This
validation is one among many operations for automated analysis of feature models. The
validation is generally performed by translating both the feature model and the feature
configuration to propositional formulas in which features become propositional variables.
A satisfiability solver or SAT solver (En 2004; Mari 2009) is then used to determine if
those propositional formulas are satisfiable (i.e. the customisation request is valid)
(Batory 2006; Benavides 2010). Section 6.4.1 of this thesis discusses our prototype
implementation for validating customisation requests based on this approach.
3.4.3.2 Service variant derivation
Given a valid customisation request, the customisation engine will derive and deploy a
service variant. The feature configuration encapsulated in the customisation request will
drive this derivation process so that a service variant is automatically generated. The
Figure 3.7 - Overview of service variant derivation process
Feature
configuration
Variability
instantiation
Configurable
artefacts
Service
variant
Configurable
service
interface
Configurable
service
implementation
Variant
service
interface Variant
service
implementation
Feature
model
mapped
input
input
output
contain
contain
Chapter 3 - Feature-based Service Customisation Framework
68
overview of this derivation process is demonstrated in Figure 3.7.
As the result of the domain engineering process (Figure 3.6), a customisable service
is developed as configurable artefacts which represent both configurable service interface
and configurable service implementation. All software variants within these configurable
artefacts are mapped to variant features in the feature model. The variability instantiation
process takes into account this mapping and propagates customisation decisions at the
feature level to the configurable artefacts so that variation points within domain artefacts
are resolved. The result of the process is a service variant represented as a variant service
interface and a variant service implementation.
3.4.3.3 Handling complete and partial customisation requests
As defined in section 3.4.2.7, a valid customisation request might be complete or partial.
These two types of customisation requests have different usage contexts. For complete
customisation requests, since all variabilities in the feature model have already been
decided, all variation points in configurable artefacts are resolved. Consequently, the
resulting service variant has determined behavior and is ready to be invoked by end-users
(Figure 3.8). In contrast, partial customisation requests do not contain sufficient infor-
mation to resolve all variant features. Consequently, a number of variation points in
configurable artefacts are left un-resolved. The resulting service variant still has undeter-
mined behavior and is not ready to be consumed by end-users. Instead, the resulting
service variant is still a customisable service with refined variability (i.e. more limited
customisation options). Therefore, partial customisation requests are useful when service
Figure 3.8 - Complete customisation versus partial customisation
Customisable service
Complete
customisation
input
Complete
customisation
request
input
Broker
result
Determined
service variant
Second-tier
broker
Partial
customisation
input
Partial
customisation
request
input
Broker (aka.
First-tier broker)
result
Refined
customisable service
End-user
consume consume
3.4 Service customisation mode
69
brokers (aka. first-tier brokers) wish to re-broker customisable services to second-tier
brokers with refined customisation options. The use of partial customisation requests
enables multi-stage service customisation by multi-tier brokers.
While for either case, the result of the variant derivation process is a service variant,
we will use two terms Determined service variant and Refined customisable service
in this thesis when we need to explicitly distinguish the two cases. As an example, let us
consider a customisation request shown in Example 3.9. Customising the Swinsure
Insurance Web Service based on this customisation request will result in a new customis-
able service for getting quotes related to residential building insurance policies.
Consumers of the new customisable service (i.e. second-tier brokers) are still able to
customise two extra covers (i.e. Accidental Damage and Fusion Cover) as well as
choose to disable or enable policy purchase with an appropriate payment method.
3.4.4 Customisation response
The result of the customisation process is various depending on the type of customisation
requests. For complete customisation requests, determined service variants are conven-
tional services. Therefore, customisation responses will be the service interface
descriptions of those services (i.e. WSDL descriptions) or the URIs from which the
WSDL descriptions can be retrieved. In the case of partial customisation requests,
customisation responses should give second-tier brokers the ability to comprehend and
customise the refined customisable services in a similar way to what first-tier brokers do
with the original customisable services. In Chapter 4, we introduce a language, called
WSVL (Web Service Variability description Language) for describing customisable
services and facilitating first-tier brokers in customising the services. Hence, for partial
customisation requests, customisation responses will be the WSVL descriptions of refined
customisable services or the URIs from which the WSVL descriptions can be retrieved.
Example 3.9 - A partial customisation request
Chapter 3 - Feature-based Service Customisation Framework
70
3.5 Analysis of the customisation framework against service
variability characteristics
We analyse our customisation framework against characteristics of service variability that
we identified in Chapter 2. In particular, the customisation framework has addressed the
following characteristics (cf. Figure 3.9):
Who (Provider/Consumer): In our customisation framework, service consumers
are presented with customisation options which are specified by a feature model.
Consumers are able to decide features they want and features they dont want ac-
cording to their requirements. Based on consumer decisions, service providers
derive service variants matching specific needs of service consumers. Therefore,
the customisation framework supports service consumers as the ones who per-
form customisation.
Automated: While engineering techniques are dependent on the type of services
(i.e. atomic or composite)
11
, both atomic services and composite services are de-
11
The details of these engineering techniques will be discussed in Chapter 6 (for customisable
atomic services) and Chapter 7 (for customisable composite services).
Figure 3.9 - Service variability characteristics addressed in this chapter
Service variability
Variability modeling
Variability instantiation
Internal
Composition
variability
Partner
variability
External
Automated Inter-
dependencies
Exposed
variability
Variability
communication
Formality Technology
independence
Self-
describing
Staged
instantiation
Who
(Provider/
Consumer)
Level
(Interface/
Implementation)
Recursive Abstraction
level
Requirement
Architecture Implementation
Variation
points and
variants
Variability
constraints
Intra-
dependencies
Customisation mechanism
3.5 Analysis of the customisation framework against service variability
characteristics
71
veloped as configurable artefacts. In particular, service variability at the highest
level of abstraction (i.e. the feature model) is refined to configurable points (i.e.
variation points and variants) in the software architecture, then to configurable
points in the implementation of the service during the domain engineering pro-
cess. This enables the comprehensive modeling of variability in configurable
artefacts. In addition, the presence conditions of software variants in such config-
urable artefacts are captured. This enables the automated derivation of service
variants according to the feature configuration contained in a customisation re-
quest.
Requirement abstraction level: Service variability is modeled at the requirement
level by means of feature models. In addition, service consumers are allowed to
customise services at this level of abstraction. As discussed in section 2.2.4.2,
modeling service variability and enabling service customisation at the require-
ment level help to reduce consumer overhead of dealing with a large number of
customisation options.
Staged instantiation: In our customisation framework, we maintain the mapping
between variability in the feature model and variability in configurable artefacts.
This mapping defines the presence conditions of software variants in configurable
artefacts as propositional formulas of variant features. Consequently, the mapping
enables the propagation of customisation decisions (i.e. feature configurations) at
the feature level towards lower levels of abstraction during the service variant
derivation process. In other words, our customisation framework supports staged
instantiation and helps to simplify service customisation.
Level (I nterface/Implementation): During the domain engineering process, vari-
abilities in domain artefacts (i.e. both service interface and service
implementation) are explicitly captured by exploiting the template approach. In
addition, the identification of such variabilities is all driven by high-level service
variability captured in the feature model so that they are consistent to each other.
During the application engineering process, variability instantiation is performed
at both the service interface level and the service implementation level by collec-
tively pruning unnecessary elements from domain artefacts.
The explanation of some characteristics (i.e. Automated, Staged instantiation and
Level (I nterface/Implementation)) is not comprehensive due to the missing details of
concrete techniques. We will re-analyse these characteristics in Chapter 6 and Chapter 7
when we present techniques for engineering atomic and composite services respectively.
Chapter 3 - Feature-based Service Customisation Framework
72
3.6 Summary
In this chapter, we have described a feature-based approach for realising the customisa-
tion framework. A customisable service operates at two modes: customisation mode and
consumption mode. The customisation mode enables the customisation of the service to
produce service variants that are conventional services. Service variants are consumed in
the consumption mode in a same way as conventional services. To realise the customisa-
tion mode, we exploit the concept of feature models. In particular, we use a feature model
to capture service variability and represent customisation options. Service consumers are
able to customise services by specifying selected features and disabled features in
customisation requests. There are different variations of customisation requests. In
addition, a customisation request might be valid or invalid, complete or partial. We also
discussed the internal behavior of customisable services to produce customisation
responses. The internal realisation of customisable services is based on SPL techniques.
In particular, a customisable service is developed as configurable artefacts where all
configuration points are mapped to variant features. The mapping enables the automated
derivation of service variants given a feature configuration contained in customisation
requests. The internal behavior of a service will be slightly different with respect to
complete and partial customisation requests. We also explained in the chapter how the
approach addresses service variability characteristics and enables an efficient customisa-
tion framework. This chapter discussed our key concepts in supporting customisable
services. In the following chapters, we present our techniques to realise these concepts,
and enable the composition and delivery of customisable services.
73
4. Web Service Variability Description Language (WSVL)
This chapter discusses WSVL (Web Service Variability description Language) which is
our extension of WSDL for describing the service interface of customisable services. A
WSVL document plays the role of a customisation contract which specifies and enforces
the use of service variability information. It formalises the interactions between service
providers and service consumers so that the customisation framework can be realised in a
service-oriented way. WSVL is our approach for an interface description language
(Figure 4.1).
Section 4.1 discusses motivations for a customisation contract. In particular, we de-
scribe three functions that a customisable service should perform with respect to service
consumers: i) variability communication, ii) service customisation, and iii) variant
provisioning. The first two functions are specific to customisable services, while the last
function is also performed by conventional Web services. We discuss alternative options
for the realisation and the provisioning of these three functions in subsection 4.1.1 and
4.1.2 respectively. Based on these discussions, we propose the concept and describe the
benefits of customisation contracts in subsection 4.1.3.
In section 4.2, we describe WSVL in detail. There are four types of information cap-
tured in a WSVL document: i) customisation options, ii) customisation endpoint, iii)
service capability, and iv) feature mapping. After presenting the overview of the language
in subsection 4.2.1, we elaborate each type of information in a separate subsection. The
explanation is demonstrated with examples from a WSVL document describing the
Swinsure Insurance Web service presented in Chapter 3. While the semantics of each
type of information is constrained by our WSVL XML schema, there are additional
Figure 4.1 - Focus of this chapter
Customisation
framework
Atomic service
realisation
I
m
p
l
e
m
e
n
t
a
t
i
o
n
I
n
t
e
r
f
a
c
e
Consumer Partner Interface description
language
Composite service
realisation
Provisioning architecture
2
This chapter
Chapter 4 - Web Service Variability Description Language (WSVL)
74
restrictions which cannot be enforced by the schema. When appropriate, we will discuss
these additional restrictions in the corresponding subsections.
Section 4.3 presents our MDE (Model-Driven Engineering) techniques for engineer-
ing WSVL documents. The techniques enable the creation of WSVL documents which
not only conform to the WSVL XML schema but also satisfy additional restrictions
discussed in section 4.2. After describing the overview of engineering techniques in the
subsection 4.3.1, we dedicate each individual subsection for discussing techniques and
prototype tools for developing one type of information in WSVL. The validation of
additional restrictions is also discussed respectively. In the last subsection 4.3.5, we
present a transformation technique which helps developers verify the correctness of
engineering models before generating a WSVL document.
In section 4.4, we evaluate the use of WSVL against characteristics of service varia-
bility that we identified in Chapter 2. We then conclude the chapter in section 4.5.
4.1 Motivations for WSVL
There are three functions that a customisable service should perform with respect to
service consumers (Figure 4.2). The first function, called variability communication,
enables the specification and the exchange of service variability information. This
function is necessary to advise customisation options to service consumers, as well as
facilitates service consumers in using service variability. The second function, called
service customisation, allows consumers to customise the service and derive service
variants. The third function, called variant provisioning, refers to the provisioning of
service variants with particular service capabilities matching consumer requirements. The
Figure 4.2 - Overview of WSVL
I
m
p
l
e
m
e
n
t
a
t
i
o
n
I
n
t
e
r
f
a
c
e
Consumer
Service customisation
Variant provisioning
Customisation
engine
Service
variant
WSVL
Variability communication
4.1 Motivations for WSVL
75
first two functions are performed in the customisation mode, while the last function is
conducted in the consumption mode described in Chapter 3.
The variant provisioning function is the fundamental function which is also per-
formed by conventional Web services using the messaging paradigm
12
(Chappell 2004),
while the other two functions are specific to customisable services. The implementation
and the provisioning of these two functions in a proper way help to broaden the use of
customisable services. In the following sub-sections, we discuss these two functions and
their alternative realisation in detail. The discussion leads to the concept of customisation
contracts for customisable services.
4.1.1 Exploiting the messaging paradigm for implementing the service
customisation function
There are two alternative approaches for implementing the service customisation func-
tion. In the first approach, the service customisation function is performed through a
dedicated UI (User Interface) (e.g. a Web application) prepared by service providers.
Service consumers use the UI to select and disable features to formulate customisation
requests. The submission of customisation requests then triggers the customisation engine
to derive service variants. In contrast, the second approach exploits the messaging
paradigm used by conventional Web services. Specifically, service providers explicitly
specify the service customisation function as sets of exchanged customisation messages
(i.e. customisation requests and customisation responses). Consumers are free to use any
method or technology for invoking the service customisation function.
A dedicated UI provides a simple way to implement service customisation function.
However, there are a number of disadvantages. Firstly, the UI might (and very likely)
vary from one service provider to another. For each service to be customised, service
consumers are restricted to one specific mechanism (e.g. graphical notations, designs) for
customising services. Consequently, the variation in UI will increase consumer overhead
when a consumer needs to consume a number of customisable services from different
providers. Secondly, a dedicated UI cannot support dynamic service customisation. In
such dynamic environments as service ecosystems where there exist variability inter-
dependencies
13
between customisable composite services and customisable partner
services, it is required that the customisation of the composite services will automatically
12
By messaging paradigm, we mean that the capability of conventional Web services are
described through an explicit specification of request messages and response messages.
13
Variability inter-dependencies will be further discussed in section 4.2.6.2.
Chapter 4 - Web Service Variability Description Language (WSVL)
76
trigger the customisation of partner services. This dynamism is not possible with a static
dedicated UI. Thirdly, the use of dedicated UIs makes it difficult for service consumers to
integrate service customisation process into their own development environments.
Typically, customisation procedure is not explicit and is not abstracted as an API (Appli-
cation Programming Interface). The missing of such API hinders its integration.
In contrast to dedicated UIs, the explicit specification of customisation requests and
customisation responses using the messaging paradigm opens up the opportunity for
service consumers to have a consistent way of performing service customisation regard-
less of who and how many service providers are involved. In addition, service consumers
are able to dynamically customise services based on their runtime needs. Last but not
least, service consumers are able to incorporate service customisation as an integral part
of their software development environments. Given these advantages, in our approach,
we exploit the messaging paradigm for realising the service customisation function.
Specifically, the service customisation function is explicitly specified as a set of customi-
sation requests and customisation responses.
4.1.2 Exposing service variability at both feature level and technical level in
service variability communication
Variability communication refers to the description and exchange of service variability
information to guide service consumers in using a customisable service. There are two
types of service variability information which is useful to consumers. Firstly, customisa-
tion options (i.e. service variability at the feature level) facilitate service consumers in
comprehending and utilising the service customisation function. Secondly, the description
of common and variant service capabilities (i.e. service variability at the service interface
level) allows consumers to reuse service variability.
In some circumstances, service consumers are not only concerned with the capability
of one particular service variant after customisation, but also interested in variant service
capabilities (i.e. service variability at the service interface level) among multiple service
variants before customisation. For instance, a service consumer might have variable
requirements and the service consumer needs to dynamically associate those require-
ments with those variant service capabilities. Depending on runtime conditions, the
service consumer will switch between different service variants by performing service
customisation on-the-fly. We refer to this usage as the reuse of service variability
14
.
While dynamic service customisation is already supported by the service customisation
14
Service variability reuse will be demonstrated with an example in section 4.2.6.2.
4.2 Web Service Variability description Language (WSVL)
77
function, the reuse of service variability is only possible if variant capabilities are also
exposed as a part of service variability information.
In summary, to broaden the use of customisable services, it is important to expose
service variability information at both the feature level and the service interface level.
This is the exposed variability discussed in Chapter 2.
4.1.3 Customisation contracts and WSVL
Given the requirements of specifying the service customisation function using the
messaging paradigm as well as exposing service variability information at both the
feature level and the service interface level, we propose the use of XML-based customisa-
tion contracts for customisable services. While such description might be informally
specified using natural languages, the use of a formalised customisation contract (i.e.
based on a standardised XML schema) will have the following benefits:
Variability communication is simplified to describing customisation contracts,
while the exchange of customisation contracts can be performed in a similar way
to the exchange of WSDL-based service contracts.
Service variability descriptions and service customisation are consistent among
all service providers.
Service consumers are only bound (aka. coupled) to the standardised customisa-
tion contract not the realisation of the customisable service, thus enabling loose
coupling between service providers and service consumers.
A formalised description facilitates the automation in using the customisable ser-
vice. For instance, it enables the automated generation of elements for modeling
variant service capabilities at the consumer side
15
.
In the subsequent section, we describe WSVL which is our extension of WSDL for
describing customisation contracts.
4.2 Web Service Variability description Language (WSVL)
4.2.1 Overview of WSVL
WSVL is an extension of WSDL (Christensen 2001)
16
for describing customisable
services. Similar to WSDL, WSVL is specified by an XML schema. And a WSVL
15
This automated generation will be discussed in section 7.5.1.
Chapter 4 - Web Service Variability Description Language (WSVL)
78
document representing a customisation contract is an XML document which contains
XML elements defined by both the WSVL XML schema and the WSDL XML schema. A
WSVL document captures four types of information: customisation options, customisa-
tion endpoint, service capability, and feature mapping (Figure 4.3). In the following
sections, we describe each of these types in detail. All examples are snippets of a WSVL
document for the Swinsure Insurance Web service (cf. section 3.1)
17
. While key concepts
of WSVL are explained here, the full WSVL XML schema is presented in the Appendix
A.
4.2.2 Description of customisation options
Customisation options are important information for service consumers to understand and
customise a service. As defined in Chapter 3, customisation options are represented by a
feature model. Therefore, we define XML notations for representing feature models.
These XML notations capture two pieces of information: feature hierarchy and feature
constraints.
16
While there are two version of WSDL (i.e. WSDL 1.1 and WSDL 2.0), we design WSVL as an
extension of WSDL 1.1 due to its popularity and widespread adoption. However, two versions are
relatively similar and our extension can also be applied to WSDL 2.0 and yield the similar result.
17
A complete WSVL document for the Swinsure Insurance Web service can be found from
Appendix B or our prototype system deployed on Amazon cloud: http://ec2-107-21-175-
19.compute-1.amazonaws.com:8080/swinsureCustomizationFrontend?wsvl.
Figure 4.3 - Components of WSVL
Description of customisation options
Description of customisation endpoint
Description of service capability
Description of feature mapping
Web Service Variability description Language (WSVL)
4.2 Web Service Variability description Language (WSVL)
79
A feature hierarchy description captures the hierarchy of a feature model using XML
elements <<wsvl:feature>> and <<wsvl:featureGroup>>. In addition, we use contain-
ment relationships among XML elements to represent composed-of relationships in
feature models. To represent feature cardinalities and group cardinalities, we define two
properties (i.e. minCardinality and maxCardinality) for corresponding elements (i.e.
<<wsvl:feature>> and <<wsvl:featureGroup>>).
A feature constraint description captures cross-tree constraints among features. We
define elements <<wsvl:requireConstraint>> and <<wsvl:excludeConstraint>> for
describing require and exclude constraints respectively. Feature constraints refer to
feature elements defined in the feature hierarchy part. Example 4.1 is a snippet of the
customisation options description. In this and other examples, our XML notations are
defined in the namespace with the prefix wsvl:, while WSDL notations are used with
the prefix wsdl:.
There are a number of techniques in literature for representing feature models in
XML (e.g. Antkiewicz 2004; Cechticky 2004; Benavides 2005). Our XML notations are
adapted from (Cechticky 2004; Benavides 2005) with the following modifications:
We represent feature cardinalities and group cardinalities as XML attributes ra-
ther than XML elements to improve readability.
Example 4.1 - Description of customisation options
<wsvl:featureHierarchy>
<wsvl:feature name=PolicyQuery" minCardinality=0" maxCardinality="1/>
<wsvl:feature name="PolicyCreation" minCardinality="1" maxCardinality="1">
<wsvl:feature name="Quote" minCardinality="1" maxCardinality="1">
<wsvl:feature name="PolicyType" minCardinality="1" maxCardinality="1">
<wsvl:featureGroup minCardinality="1" maxCardinality="1">
<wsvl:feature name="Residential/>
<wsvl:feature name="Business/>
</wsvl:featureGroup>
</wsvl:feature>
</wsvl:feature>
</wsvl:feature>
</wsvl:featureHierarchy>
<wsvl:featureConstraint>
<wsvl:requireConstraint>
<wsvl:featureRef ref="fd:PolicyUpdate"/>
<wsvl:requiredFeatureRef ref="fd:PolicyQuery"/>
</wsvl:requireConstraint>
<wsvl:excludeConstraint>
<wsvl:featureRef ref="fd:Residential"/>
<wsvl:excludedFeatureRef ref="fd:ExtendedThirdPartyLiability"/>
</wsvl:excludeConstraint>
</wsvl:featureConstraint>
Chapter 4 - Web Service Variability Description Language (WSVL)
80
We do not use macro elements since in WSVL there is no requirement for the ex-
tension of this representation.
We do not differentiate different types of features (i.e. solitary features or
grouped features) since we do not need to directly support reasoning on this rep-
resentation of feature models.
It should be noted that our XML notations are only one possible solution for the de-
scription of customisation options. Other alternative representations could also be used
within the WSVL for the same purpose. The emphasis is the role of the representation of
feature models within the WSVL, rather than the representation itself.
4.2.2.1 Restrictions on customisation options
While the WSVL XML schema enforces the constraints on the well-formedness and the
validity of a WSVL document, there are still restrictions that cannot be enforced by an
XML schema. These restrictions come from the semantics of customisation options as a
representation of a feature model.
A feature model represents a family of service variants. The number of complete fea-
ture configurations
18
derived from a feature model defines the number of determined
service variants. For a feature model to be meaningful, the number of complete feature
configurations should be greater than one. When the number of complete feature configu-
rations is one, the service in question is not customisable at all. And an invalid feature
model does not have even one complete feature configuration. For instance, Figure 4.4
demonstrates an invalid feature model. The two features f1 and f2 are alternative while
there exists a require constraint between the two.
18
A complete feature configuration has the status of all variant features decided (cf. section 2.1.3).
And service customisation with respect to a complete customisation request, which contains a
complete feature configuration, results in a determined service variant (cf. section 3.4.3.3).
Figure 4.4 - Example of an invalid feature model
Root feature
f1 f2
[1-1]
require
4.2 Web Service Variability description Language (WSVL)
81
Therefore, a feature model (aka. customisation options) should accommodate more
than one complete feature configuration (aka. service variant) to be meaningful. This
restriction cannot be enforced by an XML schema. Instead, it should be validated when
the feature model is developed. We discuss this issue in section 4.3 when we consider the
engineering of WSVL documents.
4.2.3 Description of customisation endpoint
The customisation endpoint description specifies complete information related to the
service customisation function. The description specifies the abstract definition of the
customisation function through the definition of a set of customisation operations and
their customisation messages. With respect to the concrete definition of the customisation
function, the description contains information about mapping such customisation messag-
es to transport and messaging protocols, and information about endpoints where
customisation operations can be invoked.
As described in Chapter 3, for each customisation operation, the customisation re-
quest contains two sets of variant features (i.e. a set of selected variant features and a set
of disabled variant features). A customisation request might be complete or partial
depending on purposes of service consumers. As for a complete customisation request,
the customisation response might contain the WSDL description of a determined service
variant or an URI from which the WSDL description can be retrieved. Similarly, for a
partial customisation request, the customisation response might contain the WSVL
description of a refined customisable service or an URI from which the WSVL descrip-
tion can be retrieved.
In general, a customisation endpoint description defines a service interface for man-
agement purposes. Hence, it is possible to reuse existing WSDL notations to represent
this information. However, we argue that a good design principle is to make explicit
which information is for customisation purposes and which information is for conven-
tional service consumption purpose. This separation of notations will facilitate the
interpretation of the information at the consumer side, especially when tooling support is
used. Therefore, we define new XML notations which inherit WSDL notations for this
specific purpose.
Example 4.2 presents the customisation endpoint description for the Swinsure Insur-
ance Web service. The snippet defines one customisation operation, namely
customisationOperation (line 22-27). The operation accepts a complete customisation
request defined by a set of enabled features and a set of disabled features (line 16-18 and
Chapter 4 - Web Service Variability Description Language (WSVL)
82
line 1-8). And the operation returns the URL of the service variants WSDL (line 19-21
and line 9-15). This is the abstract definition of the customisation function.
With respect to the concrete definition of the customisation function, the binding el-
ement, <<wsvl:binding>>, specifies that the customisation messages of the operation
customisationOperation will be formatted as SOAP messages and transported using
HTTP protocol (line 28-31). In addition, the element <<wsvl:port>> defines the
endpoint where the customisation operation can be invoked (line 32-36). As can be seen
in this example, the customisation endpoint description provides complete information so
that the service customisation function can be used by service consumers.
Example 4.2 - Description of customisation endpoint
1: <xsd:element name="customisationOperationRequest">
2: <xsd:complexType>
3: <xsd:sequence>
4: <xsd:element name="enabledFeatureList" type="xsd:string/>
5: <xsd:element name="disabledFeatureList" type="xsd:string/>
6: </xsd:sequence>
7: </xsd:complexType>
8: </xsd:element>
9: <xsd:element name="customisationOperationResponse">
10: <xsd:complexType>
11: <xsd:sequence>
12: <xsd:element name="wsdlURI" type="xsd:anyURI"/>
13: </xsd:sequence>
14: </xsd:complexType>
15: </xsd:element>
16: <wsdl:message name="customisationOperationRequest">
17: <wsdl:part element="tns:customisationOperationRequest" name="parameters/>
18: </wsdl:message>
19: <wsdl:message name="customisationOperationResponse">
20: <wsdl:part element="tns:customisationOperationResponse" name="parameters/>
21: </wsdl:message>
22: <wsvl:portType name=customisationPortType">
23: <wsvl:operation name=customisationOperation>
24: <wsdl:input message="tns:customisationOperationRequest"/>
25: <wsdl:output message="tns:customisationOperationResponse"/>
26: </wsvl:operation>
27: </wsvl:portType>
28: <wsvl:binding name="swinsureBinding" type="customisationPortType">
29: <soap:binding style="document transport="http://schemas.xmlsoap.org/soap/http"/>
30: <wsvl:operation name=customisationOperation/>
31: </wsvl:binding>
32: <wsvl:service name="swinsureWebService">
33: <wsvl:port binding="swinsureBinding" name="swinsurePort">
34: <soap:address location="http://ec2-107-21-175-19.compute-1.amazonaws.com:8080/
swinsureCustomizationFrontend"/>
35: </wsvl:port>
36: </wsvl:service>
4.2 Web Service Variability description Language (WSVL)
83
An example of SOAP messages for a customisation request and a customisation re-
sponse based on this customisation endpoint description is illustrated in Example 4.3.
This is extracted from our prototype implementation of the Swinsure Insurance Web
service (as a customisable atomic service) detailed in Chapter 6. The customisation
request is formulated by our consumer tool and is sent to the customisation endpoint (cf.
line 34 in Example 4.2). As a result, the Swinsure Insurance Web service returns the
customisation response.
4.2.4 Description of service capability
The service capability description defines the capability of a customisable service. It
accommodates common and variant capabilities of all service variants following the
template approach as described in Chapter 3. That is, the description is the superset of all
capabilities found in service variants. During the customisation process, only capabilities
matching consumer requirements are retained while other irrelevant capabilities are
purged from this service capability description to produce capabilities of one particular
service variant.
Example 4.3 - An example of customisation messages
<soap:Envelope>
<soap:Body>
<customizationOperationRequest>
<enabledFeatureList>Residential, Extra Cover, Accidental Damage
</enabledFeatureList>
<disabledFeatureList>Policy Query, Policy Update, Extended Third Party
Liability, Fusion Cover, Purchase
</disabledFeatureList>
</customizationOperationRequest>
</soap:Body>
</soap:Envelope>
<soap:Envelope>
<soap:Body>
<customizationOperationResponse>
<wsdlURI>http://ec2-107-21-175-19.compute-
1.amazonaws.com:8080/swinsureServiceVariant/3/Quoting?wsdl=3_full
</wsdlURI>
</customizationOperationResponse>
</soap:Body>
</soap:Envelope>
Customisation request
Customisation response
Chapter 4 - Web Service Variability Description Language (WSVL)
84
As described in section 4.1.2, this service capability description facilitates the com-
munication of service variability. All common and variant capabilities are explicitly
specified so that service consumers know what to expect from a service variant. As a part
of a customisation contract, this information is essential to enable the loose coupling
between service consumers and service providers. Regardless of how service providers
change their internal service implementation, service consumers can expect the same
capability for the resulting service variants. In addition, the service capability description
enables service consumers to model service variability at the technical level without
having to derive a service variant in advance. Consequently, it facilitates dynamic service
customisation and service variability reuse.
It should be noted that service capability is only described at the abstract level by
specifying definitions for portTypes, operations, messages, and data types. It is not
necessary to define concrete information related to the binding of those operations and
service endpoints. This information will be dynamically generated when a service variant
is derived and deployed. Specifying the capability of customisable services in this way
reflects the dynamism of the lifecycle of service variants. We will discuss the details of
service variant lifecycle in the Chapter 5.
Since the service capability description is the definition of the capability of conven-
tional services (i.e. service variants), we utilise WSDL notations for this purpose.
Example 4.4 presents a snippet of the service capability description for the Swinsure
Insurance Web service. The example demonstrates two portTypes, called quotingPort-
Type and purchasingPortType. While the portType quotingPortType is common to
all service variants, the portType purchasingPortType is a variant capability and is
only present in some service variants. In addition, the portType quotingPortType has
five operations which are all variant capabilities.
Example 4.4 - Description of service capability
<wsdl:portType name="quotingPortType">
<wsdl:operation name="getQuote4Residential"/>
<wsdl:operation name="getQuote4ResidentialWithExtra"/>
<wsdl:operation name="getQuote4Business"/>
<wsdl:operation name="getQuote4BusinessWithExtra"/>
<wsdl:operation name=addAccidentalDamage"/>
</wsdl:portType>
<wsdl:portType name="purchasingPortType/>
4.2 Web Service Variability description Language (WSVL)
85
4.2.5 Description of feature mapping
In WSVL, the customisation options description specifies service variability at the feature
level, while the service capability description defines service variability at the service
interface level. As explained in section 2.1.4.1, variability at the service interface level is
the refinement of the variability at the feature level. On other words, variant service
capabilities are refinement of variant features. Therefore, the feature mapping description
in WSVL is used to specify these refinement relationships. The description helps to
indicate what capability is available for a customisation request (i.e. a feature configura-
tion) without the need to actually customise the service.
The availability (aka. presence condition) of a variant capability is specified by a
propositional formula of variant features and is expressed as If the variant features A
1
,
A
2
,, A
n
are selected and the variant features B
1
, B
2
,, B
m
are disabled, this variant
capability is available. That is, the availability of a variant capability is decided by the
conjunction of two sets of features. The first set contains selected variant features, while
the second set contains disabled variant features. When this condition establishes with
respect to one customisation request, the variant capability is available to a service
variant. Otherwise, the variant capability is not available to the service variant.
In WSVL, this relationship is represented by the conjunction of links and one link
specifies one mapping between a variant feature and a variant capability. A link has
additional attributes specifying whether the inclusion or exclusion of the feature decides
the availability and the type of the capability (i.e. portType, operation, or dataType).
Specifying mapping in this way removes the necessity of enforcing the use of a particular
constraint language to describe propositional formulas in XML. Consequently it helps to
loosen the coupling between service providers and service consumers.
Example 4.5 presents a snippet of the feature mapping description for the Swinsure
Insurance Web service. The first two links map two variant features (i.e. Residential
and ExtraCover) with different presence attributes to the same operation
getQuote4Residential. The links collectively define that the operation
getQuote4Residential only exists in a service variant if the feature Residential is
enabled and the feature ExtraCover is disabled. In other words, the propositional
formula representing the presence condition of the variant capability
getQuote4Residential is Residential ExtraCover. In contrast, when both the
feature Residential and ExtraCover are selected, this operation
getQuote4Residential is excluded from service capability of service variants, while the
operation getQuote4ResidentialWithExtra is available. This is defined by the next two
Chapter 4 - Web Service Variability Description Language (WSVL)
86
links. Similarly, the next link specifies that when the feature AccidentalDamange is
selected, the operation addAccidentalDamage is available. And the last link defines
that the portType purchasingPortType only exists if the feature Purchase is enabled.
4.2.5.1 Restrictions on the feature mapping description
The feature mapping description enables the derivation of the capabilities of a service
variant with respect to one customisation request. There are two restrictions that cannot
be enforced by the WSVL XML schema. These restrictions guarantee the meaningfulness
of WSVL documents as customisation contracts for customisable services.
R1 (Mandatory features should not be specified in the propositional formula):
Mandatory features are always selected and the use of them in specifying the
presence conditions of variant capabilities is meaningless. In other words, all fea-
tures used in a propositional formula should be variant features.
R2 (A propositional formula should not always be false): Due to relationships
among features in a feature model, a propositional formula among variant fea-
tures might always be false. For instance, a propositional formula like If the
feature A
1
and A
2
are selected where A
1
and A
2
are alternative are always
Example 4.5 - Description of feature mapping
<mappingInfo>
<link name="LResidential1">
<featureRef ref="fd:Residential" presence="true"/>
<serviceElementRef ref="tns:getQuote4Residential target="operation" />
</link>
<link name=" LResidential2">
<featureRef ref="fd:ExtraCover" presence=false"/>
<serviceElementRef ref="tns:getQuote4Residential target="operation" />
</link>
<link name="LResidentialWithExtra1">
<featureRef ref="fd:Residential" presence="true"/>
<serviceElementRef ref="tns:getQuote4ResidentialWithExtra target="operation" />
</link>
<link name=" LResidentialWithExtra2">
<featureRef ref="fd:ExtraCover" presence=true"/>
<serviceElementRef ref="tns:getQuote4ResidentialWithExtra target="operation" />
</link>
<link name=" LAccidentalDamage">
<featureRef ref="fd:AccidentalDamage" presence=true"/>
<serviceElementRef ref="tns:addAccidentalDamage target="operation" />
</link>
<link name="LPurchase">
<featureRef ref="fd:Purchase" presence="true"/>
<serviceElementRef ref="tns:purchasingPortType target="portType" />
</link>
</mappingInfo>
4.2 Web Service Variability description Language (WSVL)
87
false. Another example is a mistakenly specified propositional formula like If
the feature A
1
is selected and the feature A
1
is disabled which is always false.
The use of such propositional formula for marking the presence condition of a
variant capability does not make sense since the variant capability becomes una-
vailable to all service variants.
It should be noted that a propositional formula of the form If the variant features
A
1
, A
2
,, A
n
are selected and the variant features B
1
, B
2
,, B
m
are disabled cannot be
always true. Therefore, the restriction a propositional formula should not always be
true, which is opposite to R2, does not need to be considered.
4.2.6 WSVL and variability dependencies
The WSVL supports variability dependencies in two different perspectives. Firstly, the
language enables the capture of variability intra-dependencies when exposing service
variability (i.e. exposed variability). Secondly, the language facilitates the modeling of
variability inter-dependencies between a customisable composite service and its cus-
tomisable partner services. This ability enables the reuse of service variability. We
discuss these two perspectives in the following subsections.
4.2.6.1 Variability intra-dependencies
A WSVL document exposes variant service capabilities in a superimposed form (cf.
Example 4.4). The presence of a variant service capability might require or exclude the
presence of another variant service capability. That is, there are dependencies among
these variant service capabilities that we call variability intra-dependencies (cf. section
2.2.3.2). For instance, with the description of service capabilities in Example 4.4, the
existence of the operation getQuote4Residential excludes the existence of other three
operations getQuote4ResidentialWithExtra, getQuote4Business,
getQuote4BusinessWithExtra because these four operations are alternative operations
for getting an insurance quote. Similarly, the operation addAccidentalDamage is used
to add Accidental Damage extra cover for an existing quote. Its existence requires the
existence of either the operation getQuote4ResidentialWithExtra or the operation
getQuote4BusinessWithExtra.
In WSVL, variability intra-dependencies are not directly specified. Instead, they are
indirectly captured through the mapping between variant service capabilities and variant
features. This is possible because the identification of variant service capabilities is driven
by variant features. And variant service capabilities are only the refinement of variant
Chapter 4 - Web Service Variability Description Language (WSVL)
88
features at the service interface level. For instance, the exclude relationship between
the two operations getQuote4Residential and getQuote4ResidentialWithExtra exists
because they refine the optional feature Extra Cover in case the feature Residential
is selected. Or the require relationship between the operation addAccidentalDamage
and the operation getQuote4ResidentialWithExtra exists because they both represent
the case when Extra Cover and Accidential Damage are selected.
Therefore, the description of feature mapping in WSVL enables the capturing of var-
iability intra-dependencies between variant service capabilities (i.e. service variability at
the service interface level). Note that WSVL also exposes service variability at the feature
level. And variability intra-dependencies at the feature level are captured by restrictions
specified in the feature model. In summary, WSVL facilitates the exposure of service
variability as well as the capturing of its variability intra-dependencies.
4.2.6.2 Variability inter-dependencies and service variability reuse
To explain how WSVL helps to support variability inter-dependencies and service
variability reuse, let us consider a scenario in Figure 4.5. Swinbroker is a consumer that
provides an insurance quoting business process. This business process is also customisa-
ble and its users can select one among three process variants for calculating insurance
quotes related to three types of policies: i) residential policy without extra cover, ii)
business policy without extra cover, and iii) business policy with extended third party
liability. In its business process, Swinbroker has a general task, called Quoting, for
calculating the quote. This task is a variation point (or placeholder) where three different
variant tasks need to be bound (or replaced) for three types of insurance policies.
Figure 4.5 - Swinbroker business process
Quoting
getQuote4Residential
Swinbroker Swinsure WS
{Residential=true,
ExtraCover=false}
PostQuoteProcessing
PreQuoteProcessing
getQuote4Business
{Business=true ,
ExtraCover=false}
Sub-process Task
getQuote4BusinessWithExtra
{Business=true ,
ExtraCover=true,
ExtendedThirdParty
Liability=true}
4.3 Engineering and validating WSVL documents
89
Note that all three variant tasks are already provided by the Swinsure Insurance Web
service through three variant capabilities (aka. service operations) as shown in Figure 4.5.
Therefore, the Swinbroker does not have to realise this variability on its own. Instead, the
Swinbroker defines the mapping between the task Quoting and the three operations
provided by the Swinsure Insurance Web service. At runtime, when a user chooses one of
its process variants, the Swinbroker will dynamically customise the Swinsure Insurance
Web service to get a particular service variant with an appropriate service operation to
invoke. For instance, for users who require the process variant providing the first type of
insurance policies, Swinbroker process will utilise the first mapping to: 1) customise the
Swinsure Insurance Web service with the following setting as annotated to the mapping
Residential=true, ExtraCover=false, 2) invoke the operation
getQuote4Residential of the service variant, which is resulted from the customisation,
to realise the Quoting task.
The descriptions of service capability and feature mapping of the Swinsure Insur-
ance Web service allow Swinbroker to capture these dependencies at the process
modeling level (aka. design time) without the need of actually customising the Swinsure
Insurance Web service in advance. In addition, such descriptions enable the reuse of
service variability provided by the Swinsure Insurance Web service in realising variabil-
ity within Swinbrokers business process. In Chapter 7, we will further elaborate the
implication and benefits of capturing variability inter-dependencies when we discuss
customisable composite services.
4.3 Engineering and validating WSVL documents
While a WSVL document for a customisable service can be created manually by using an
XML editor and the WSVL XML schema, this approach is not effective and error-prone.
The reason is twofold. Firstly, it is difficult to verify and enforce additional restrictions
discussed in section 4.2.2.1 and section 4.2.5.1. Secondly, the WSVL document is not
created by following SPL principles of systematic identification and management of
service variability. In this section, we describe an MDE (Model-Driven Engineering)
technique for developing WSVL documents. The technique can be used together with
techniques described in Chapter 6 and Chapter 7 for engineering customisable atomic
services and customisable composite services.
Chapter 4 - Web Service Variability Description Language (WSVL)
90
4.3.1 Overview
The engineering process of any WSVL document is comprised of two parts. One part is
for engineering artefacts specific to one particular customisable service that we call
service-specific activities. The other part is for engineering artefacts which is specific to
the service platform that supports the customisable service. We refer to this part as
platform-specific activity (Figure 4.6).
Service-specific activities start with the feature modeling activity for modeling ser-
vice variability. The resulting feature model not only facilitates the identification of
service variability at technical levels, but also is used as the input for producing the
description of customisation options in a WSVL document. This is done by transforming
the feature model to the customisation options description based on the WSVL XML
schema.
The next service-specific activity is service capability modeling. Based on the identi-
fied variability in the feature model, developers will design service capabilities, deciding
common and variant service capabilities. These variant service capabilities are refinement
of service variability at the feature level (i.e. variant features). The result of this activity is
a service interface model template which is the superset of service interface models for all
service variants. The service interface model template facilitates the implementation of
the service, as well as is used as the input for producing the description of service
capability. It should be noted that the implementation of customisable services will be
discussed in subsequent chapters. This chapter only focuses on the service interface
description of customisable services in WSVL.
The next service-specific activity is feature mapping. This activity produces a fea-
ture mapping model which captures the correspondence between variability in the feature
model (i.e. variant features) with variability in the service capability (i.e. variant service
capabilities). The feature mapping model enables the verification of restrictions discussed
Figure 4.6 - Overview of engineering WSVL documents
Feature modeling
Service capability
modeling
Feature mapping
Customisation function
modeling
Customisation options
description
Service capability
description
Feature mapping
description
Customisation function
description
Service-specific activities Platform-specific activity
4.3 Engineering and validating WSVL documents
91
in section 4.2.5.1. In addition, it is used to produce the description of feature mapping in a
WSVL document. In subsequent chapters, we also discuss how to utilise this feature
mapping model to enable the realisation of variability within service implementation.
The platform-specific activity encompasses the activity for modeling the customi-
sation function. In this activity, developers model different types of customisation
operations as discussed in section 4.2.3. Since customisation operations are Web service
operations, this activity can be done in the same way as conventional service interface
modeling. The result of this activity is called a customisation model which is used to
produce the description of customisation endpoint. Again, this transformation is similar to
the generation of WSDL document from a service interface model. The main reason why
we call this activity platform-specific is that, the same customisation operations can be
applied to all customisable services provisioned by one service provider. Therefore,
instead of repeating the same activity in the development process of each individual
customisable service, it is more efficient to integrate the activity into the service platform
and have it reused among all customisable services. Next chapter, we discuss an architec-
ture which utilises this approach for provisioning customisable services.
In the following subsections, we describe the details of each activity in the service-
specific activities. As the customisation function modeling is the same as conventional
service interface modeling, we omit its detail here.
4.3.2 Feature modeling and prototype tool
Figure 4.7 presents the feature metamodel which is adapted from (Czarnecki 2005d).
Figure 4.7 - Feature metamodel (adapted from (Czarnecki 2005d))
Chapter 4 - Web Service Variability Description Language (WSVL)
92
There are three types of features: i) root feature, ii) solitary features which do not belong
to a feature group, and iii) grouped features which are contained in one feature group. A
feature model contains one root feature. Any feature can contain feature groups or
solitary features. And a feature group contains a number of grouped features. A solitary
feature has feature cardinality and a feature group has group cardinality. A grouped
feature does not need feature cardinality since its variability is alternatively decided by
the group cardinality associated with its feature group.
Note that this feature metamodel explicitly differentiate different types of features
(e.g. solitary features or grouped features). This differentiation is important to support the
reasoning on feature models within this tool. However, such differentiation is not im-
portant when representing a feature model in an XML format as discussed in section
4.2.2. There is no need to specify types of features in its XML representation since
feature types can be inferred from such representation.
A feature model is instantiated from this feature metamodel. Cross-tree constraints
are specified as propositional formulas among features of the feature model. Figure 4.8
presents a screenshot of our feature modeling tool. This tool extends an open source tool
for feature modeling (Antkiewicz 2004) by adding new functions related to the pro-
Figure 4.8 - Feature modeling tool
Root feature
Solitary features with
feature cardinality [1-1]
Solitary feature with
feature cardinality [0-1]
Feature group with
group cardinality # [1-1]
Grouped feature
Feature group with
group cardinality [1-1]
Feature constraints
4.3 Engineering and validating WSVL documents
93
cessing and manipulation of WSVL. In later chapters, we also introduce new functions
related to service customisation. As can be seen from the screenshot, in addition to the
model elements introduced in the feature metamodel, constraints among features are
propositional formulas associated with the root feature. This feature modeling tool
facilitates the creation of feature models, feature configurations, and customisation
options descriptions.
4.3.2.1 Validation of restrictions on feature models
The feature modeling tool uses propositional logic for supporting reasoning on feature
models (Antkiewicz 2004). In particular, the tool enables the validation of feature models
as well as the enumeration of complete feature configurations. Therefore, the tool helps to
enforce the restriction discussed in section 4.2.2.1 before generating the description of
customisation options. Another advantage of the feature modeling tool is the automated
support when producing feature configurations. Based on the constraints defined in the
feature model, the tool automatically propagates the selection and/or disabling of features.
This function helps to improve efficiency while maintaining the validity of the resulting
feature configurations (Antkiewicz 2004).
4.3.3 Service capability modeling and prototype tool
Figure 4.9 presents a service interface metamodel which is based on UML notations for
modeling WSDL-based service interfaces (Marcos 2003). A service is comprised of one
or more interfaces which in turn consist of one or more portTypes. Each portType defines
a number of operations. An operation specifies types of messages for input, output and
fault. This metamodel enables the modeling of service interfaces at the abstract level.
Figure 4.9 - Service interface metamodel
Chapter 4 - Web Service Variability Description Language (WSVL)
94
A service capability model is instantiated from this metamodel. The resulting service
capability model contains both common and variant service capabilities since we use the
template approach for capturing service variability. That is, all common and variant
capabilities are modeled in a super-imposed form (cf. section 3.3.1 for discussion about
the template approach).
Figure 4.10 presents the screenshot of our service capability modeling tool. This tool
is developed using the EMF (Eclipse Modeling Framework) (Eclipse 2012b). The tool is
an Eclipse plugin that provides an interactive interface so that elements of a service
Figure 4.10 - Service capability modeling tool
4.3 Engineering and validating WSVL documents
95
capability model can be instantiated. As can be seen from the figure, both common
capabilities (e.g. the portType quotingPortType) and variant capabilities (e.g. the
portType purchasingPortType or the operations getQuote4Residential) are modeled
in one service capability model.
4.3.4 Feature mapping and prototype tool
Figure 4.11 presents the metamodel for mapping between variant features and variant
capabilities. A MappingModel consists of three types of elements: FeatureModelRef,
ServiceModelRef, and Link. FeatureModelRef and ServiceModelRef are references
pointing to the corresponding feature model and service capability model. Links are used
to relate variant features in the feature model to variant capabilities in the service capabil-
ity model. To this end, a Link consists of a Feature and a number of ServiceElements
which respectively have references to elements within the corresponding feature model
and service capability model. A Feature has an attribute presence to denote whether
the selection or disabling of the feature involves in the relation with ServiceElement. In
addition, a ServiceElement also has an attribute target to denote the type of the service
element (i.e. portType, operation, or data type). The semantic of the attribute presence
and target is similar to their counterparts in WSVL. It should be noted that while
FeatureModelRef and ServiceModelRef are references to models (i.e. feature model and
service capability model), FeatureElementRef and ServiceElementRef are references to
model elements within those models.
Figure 4.12 presents our feature mapping tool which facilitates the instantiation of a
Figure 4.11 - Feature mapping metamodel
Chapter 4 - Web Service Variability Description Language (WSVL)
96
feature mapping model from the mapping metamodel. This tool is implemented as an
extension of an open source Eclipse plugin, called Atlas Model Weaver (AMW) (Didonet
2006). In the screenshot, the feature model is presented on the left panel, while the
service capability model is presented in the right panel. The middle panel shows the
mapping model. Two links are expanded in the screenshot to demonstrate the mapping
with respect to the operation getQuote4Residential. While the first link references the
feature Residential with the attribute presence set to true, the second link refer-
ences the feature Extra Cover with the attribute presence set to false (as shown
on the bottom of the figure). This mapping captures the same semantic as the description
of feature mapping.
4.3.4.1 Validation of restrictions on feature mapping
To validate the feature mapping against restrictions discussed in section 4.2.5.1, we rely
on the FAMA (FeAture Model Analyser) framework (Benavides 2012). The FAMA
framework supports automated analysis of feature models. In particular, it accepts as the
input a feature model (described in an XML format) and provides such operations as the
validation of a feature model or validation of a feature configuration.
The validation of the feature mapping model is performed for each variant capabil-
ity. In particular, our validation program scans through the mapping model to build up
propositional formulas (i.e. a list of selected features and a list of disabled features) with
respect to each variant capability. Each propositional formula is then validated by
querying the FAMA framework. The validation of R1 restriction (cf. section 4.2.5.1) is
straight-forward. We first get the list of mandatory features from the feature model and
compare features used in a propositional formula against this list.
Figure 4.12 - Feature mapping tool
FEATURE MODEL MAPPING MODEL SERVICE CAPABILITY MODEL
FeatureRef
ServiceElementRef
Link
Presence attribute
4.3 Engineering and validating WSVL documents
97
With regards to R2 restriction, an always-false formula is the one that violates con-
straints specified in the feature model. In other words, an always-false formula implies an
invalid feature configuration. Therefore, we query the FAMA framework to check if a
propositional formula is always false or not.
Example 4.6 presents the Java snippet for validating R2 restriction. First, we load the
feature model (line 1-6). Second, we create a configuration with the set of enabled
features and the set of disabled features (line 8-19). Third, we apply the configuration to
the feature model (line 21-22). Fourth, we make a query about the validity of the resulting
feature model (line 24-26). Fifth, we check the result of the query (line 28-31).
4.3.5 Verifying and using engineering models
To help developers verify the correctness of engineering models (i.e. the feature model,
the service capability model, and the feature mapping model), we have developed a
MDE-based verification framework which simulates the operation of the service customi-
Example 4.6 - Java snippet for validating feature configuration
1: // Instantiate the main class of the FAMA framework
2: mQuestionTrader = new QuestionTrader();
3:
4: // Load a feature model
5: VariabilityModel fm = mQuestionTrader.openFile("models/swinsure.xml");
6: mQuestionTrader.setVariabilityModel(fm);
7:
8: // Create a configuration //
9: Configuration cf = new Configuration();
10:
11: // Enabled features //
12: for (VariabilityElement feature : enabledFeatureList) {
13: cf.addElement(feature, 1);
14: }
15:
16: // Disabled features //
17: for (VariabilityElement feature : disabledFeatureList) {
18: cf.addElement(feature, 0);
19: }
20:
21: // Apply the configuration
22: mQuestionTrader.addStagedConfiguration(cf);
23:
24: // Create ValidQuetion//
25: ValidQuestion vq = (ValidQuestion)mQuestionTrader.createQuestion("Valid");
26: mQuestionTrader.ask(vq);
27:
28: if (vq.isValid())
29: System.out.println("Valid configuration");
30: else
31: System.out.println("Invalid configuration");
Chapter 4 - Web Service Variability Description Language (WSVL)
98
sation (Figure 4.13). This verification framework accepts all three engineering models as
its inputs. In addition, it accepts a feature configuration model which represents a feature
configuration as an instantiated model of the feature metamodel. The verification frame-
work uses the following model transformation rules to derive a variant service model
corresponding to the given feature configuration:
For each variant capability captured in the feature mapping model, its proposi-
tional formula is composed and evaluated against the feature configuration.
If the evaluation result is true, the variant capability is retained (i.e. it is available
to the corresponding service variant).
If the evaluation result is false, the variant capability is purged from the service
capability model.
The purge of model elements in the service capability model follows the con-
tainment relationships of the metamodel. That is, when a model element is
deleted, all contained elements are also removed from the service capability mod-
el. For instance, the removal of the portType purchasingPorType induces the
removal of two operations purchasePolicyByCreditCard and purchasePoli-
cyByCoverNote as well as their child elements (cf. Figure 4.10).
The verification framework allows developers to see the resulting variant service
models with respect to one feature configuration. Based on this, developers are able to
decide if they need to revise any engineering model. We implemented these model
transformation rules using ATL (Atlas Transformation Language) (Jouault 2008). ATL is
a hybrid model transformation language which combines both declarative and imperative
constructs for specifying transformation. ATL also comes with a complete environment
for editing, debugging, compiling and executing model transformations. Figure 4.14
Figure 4.13 - Model transformation process
Feature mapping
model
<<in>>
<<out>>
<<in>>
Model
transformation
Service capability
model
Feature configuration
model
Feature model
Variant service
model
<<in>>
<<in>>
4.3 Engineering and validating WSVL documents
99
presents screenshots of how the verification framework works. After creating a feature
configuration in the feature modeling tool, developers are able to execute the command
Generate service variant from the context menu (cf. the top right part of the figure).
The command will execute ATL-based model transformation rules (cf. the bottom left
part of the figure) to produce variant service model (cf. the bottom right part of the figure)
from the service capability model (cf. the top left part of the figure).
After verifying the correctness of models produced during the engineering process,
developers are able to automatically generate necessary information for a WSVL docu-
ment. To this end, we have developed a set of XSLT transformations. These
transformations help to generate the description of customisation options, the description
of service capability, and the description of feature mapping from the feature model, the
service capability model, and the feature mapping model respectively (cf. Figure 4.6).
This information is combined with the platform-specific customisation endpoint descrip-
tion to produce a complete WSVL document for a customisable service as described in
section 4.3.1.
Figure 4.14 - Screenshots for verifying correctness of engineering models
Service capability model
Model transformation rules
Feature modeling tool
Variant service model
Chapter 4 - Web Service Variability Description Language (WSVL)
100
4.4 Analysis of WSVL against service variability characteristics
We analyse WSVL as our solution for an interface description language against charac-
teristics of service variability that we identified in Chapter 2. In particular, WSVL has
addressed the following characteristics (Figure 4.15):
Exposed variability: WSVL captures exposed variability by presenting service
variability information at both the feature level and the service interface level.
Service variability at the feature level enables the realisation of the service cus-
tomisation function using the messaging paradigm, while service variability at the
service interface level facilitates the reuse of service variability. As such, WSVL
sufficiently captures the exposed variability required for the interactions between
service providers and service consumers.
Variability intra-dependencies: WSVL provides mechanisms for capturing vari-
ability intra-dependencies for exposed variability. In particular, the restrictions in
a feature model (e.g. feature constraints) facilitate the capturing of variability in-
tra-dependencies for service variability at the feature level. And the description of
feature mapping supports the capturing of variability intra-dependencies for ser-
vice variability at the service interface level.
Formality: WSVL is formally specified by an XML schema. This formality
Figure 4.15 - Service variability characteristics addressed in this chapter
Level
(Interface/
Implementation)
Partner
variability
Composition
variability
Implementation Architecture
Variation
points and
variants
Intra-
dependencies
Service variability
Variability modeling
Variability instantiation
Internal
External
Automated Inter-
dependencies
Exposed
variability
Variability
communication
Formality Technology
independence
Self-
describing
Staged
instantiation
Who
(Provider/
Consumer)
Recursive Abstraction
level
Requirement
Variability
constraints
Customisation enabler
4.4 Analysis of WSVL against service variability characteristics
101
guarantees the interoperability between service providers and service consumers
in communicating customisation contracts. In addition, it enables the consistency
in describing and using customisation contracts across different service providers.
The specification of WSVL in terms of an XML schema also facilitates the auto-
mated usage of service variability information. This feature will be discussed in
section 7.5.1 in the context of composing customisable services.
Technology-independence: WSVL uses XML in a similar way to WSDL to ena-
ble platform-agnostic and programming language-independent representation of
customisation contracts. In addition, the representation of necessary information
(i.e. service capability description, customisation options description, and feature
mapping description) is abstracted away from the way the information is created
(i.e. service capability model, feature model, and feature mapping model). In this
way, WSVL removes the dependencies between the interface description of a
customisable service and the underlying techniques for engineering the customis-
able service. This technology-independence enables the loose coupling between
service providers and service consumers, thus helps to broaden the use of cus-
tomisable services. For comparison, as described in Chapter 2, (Stollberg 2010)
exposes service variability at the service interface level by presenting EMF-based
service variability model to service consumers. This representation is technology-
dependent. It restricts service consumers to use the same framework (i.e. EMF) in
customising services and consequently limits the use of customisable services.
Who (Provider/Consumer): A WSVL document explicitly specifies the customi-
sation options, and the abstract and concrete definitions of the service
customisation function. This information is sufficient to service consumers as the
ones who performs service customisation.
Self-describing: As discussed, a WSVL document captures sufficient information
so that service consumers can comprehend and utilise the service customisation
function. In addition, the document makes explicit common and variant service
capabilities, as well as their presence conditions through the description of ser-
vice capability and the description of feature mapping. This information enables
the consistent view of a customisable service (i.e. what to expect before customi-
sation is consistent with what can achieve after customisation). Altogether, the
WSVL document becomes a self-describing customisation contract which guides
and governs the use of a customisable service.
Chapter 4 - Web Service Variability Description Language (WSVL)
102
Recursive: WSVL uses the messaging paradigm to realise the service customisa-
tion function. This design enables dynamic customisation of customisable
services. Consequently, it supports recursive service customisation since the cus-
tomisation of a composite service can dynamically trigger the customisation of
partner services.
4.5 Summary
In this chapter, we have described WSVL which is our extension of WSDL for describing
customisable services. The WSVL helps to enable the customisation framework intro-
duced in Chapter 3 by specifying both the customisation options and the service
customisation function in a service-oriented way. In addition, the language captures and
enables the communication of service variability so that service consumers are able to not
only consume a service variant but also reuse the service variability exposed by the
customisable service. The WSVL helps to define customisation contracts which guide,
govern and guarantee the use of customisable services. It enables loose coupling between
service providers and service consumers since service consumers are only bound to this
contract and are not constrained by specific details of the service implementation. In the
next three chapters, we will discuss how to engineer and provision customisable atomic
and composite services which conform to these WSVL descriptions.
103
5. An Architecture for Provisioning Customisable Services
In the last two chapters, we have mainly discussed service customisation from service
consumers point of view (i.e. the external view of service customisation). From this
chapter on, we provide the detail of the internal view (i.e. how service providers internal-
ly enable service customisation). In particular, this chapter discusses specific issues
related to the provisioning of customisable services. We present a service provisioning
architecture that facilitates the deployment and provisioning of customisable services
(Figure 5.1). The service provisioning architecture is generic and applicable to both
customisable atomic services and customisable composite services. In the subsequent
chapters (i.e. Chapter 6 and Chapter 7), we will discuss how to engineer each type of
customisable services for use with this service provisioning architecture.
Section 5.1 motivates the possibility and benefits of extending existing service plat-
forms for accommodating customisable services. We then describe additional functions
which are missing in existing service platforms for the provisioning of customisable
services in section 5.2. Section 5.3 discusses the service provisioning architecture in
detail. Section 5.4 discusses the operation of the service provisioning architecture with
respect to partial customisation requests. In particular, we describe how the service
provisioning architecture processes partial customisation requests in a much similar way
to complete customisation requests.
Similar to other chapters, we analyse our techniques for provisioning customisable
services against service variability characteristics in section 5.5. We then conclude the
chapter in section 5.6.
Figure 5.1 - Focus of this chapter
This chapter
Customisation
framework
Atomic service
realisation
I
m
p
l
e
m
e
n
t
a
t
i
o
n
I
n
t
e
r
f
a
c
e
Consumer Partner Interface description
language
Composite service
realisation
Provisioning architecture 3
Chapter 5 - An Architecture for Provisioning Customisable Services
104
5.1 Benefits of extending existing service platforms
As discussed in Chapter 3, a customisable service has two distinct operation modes: the
customisation mode and the consumption mode. In contrast, conventional Web services
only operate in the consumption mode. This difference implies that, existing service
platforms
19
cannot be used as-is for provisioning customisable services. On the other
hand, as discussed in Chapter 3, both of these modes exploit the messaging paradigm to
enable the interactions between service providers and service consumers. This similarity
shows that, a customisable service can be generally seen as the combination of two
services which are internally interconnected. These two services realise the two operation
modes respectively, while their internal relationships represents the course of service
customisation. This observation suggests the feasibility of extending existing service
platforms for supporting the provisioning of customisable services. The extension will
introduce additional components for addressing issues specific to customisable services,
while reusing existing service platforms for addressing general concerns (e.g. messages
parsing or processing).
Extending existing service platforms, rather than developing a new service platform
from scratch, has the following benefits:
Low introduction cost: An extended platform will require much less cost than
newly-developed ones.
Higher interoperability: Both customisable services and conventional services
are provisioned in the same platform which consequently support their interoper-
ability in creating a service ecosystem from a service provider.
Higher productivity: Software developers who are already familiar with existing
service platforms can easily switch to support customisable services.
Altogether, such extensions help to lower the barrier for introducing customisable
services. In this chapter, we propose such an extension that we call a service provisioning
architecture. Our extension is not specific to any particular service platform. Instead, it
can be used as a blueprint so that service providers are able to extend their in-house
service platforms for accommodating customisable services.
19
In this thesis, we use two terms service platform and service framework interchangeably to
indicate middleware systems used for supporting the development and provisioning of Web
services. Examples of such middleware systems are Apache CXF (http://cxf.apache.org) or
Apache Axis (http://axis.apache.org).
5.2 Additional functions for provisioning customisable services
105
5.2 Additional functions for provisioning customisable services
In addition to functions required by conventional services, there are three additional
functions which are essential for the provisioning of WSVL-based customisable services
(Nguyen 2012a):
The validation of the customisation requests: A customisation request must be
valid with respect to the feature model representing customisation options. Oth-
erwise, it cannot be used to derive a service variant. While a feature model and a
customisation request are specific to a customisable service, the validation of the
customisation request against the feature model is a common function to all cus-
tomisable services. Such validation relies on automated analysis techniques for
feature models as discussed in section 3.4.3.1. Therefore, it is possible and pref-
erable to have a dedicated component which is built into service platforms for the
realisation of this validation function. In this way, such component can be effi-
ciently reused among all customisable services.
The dynamic derivation and deployment of service variants: Given a valid cus-
tomisation request, a service variant is dynamically derived and deployed. The
capability of the derived service variant is a subset of the service capability de-
scription specified in the WSVL document as discussed in section 4.2.4. Similar
to the validation function, while the implementation of service capabilities is spe-
cific to each customisable service, the component for controlling the derivation
and deployment of service variants should be built into service platforms.
The management of the lifecycle of service variants: There are various usages of
service variants once they are deployed. They might be available permanently or
temporarily depending on contracts between service providers and service con-
sumers. The same service variants might be requested by a number of service
consumers. Therefore, it is essential to manage the lifecycle of service variants
once they are derived and deployed. Again, this common function should also be
built as a service platform component.
5.3 The service provisioning architecture
5.3.1 Overview
Figure 5.2 presents the architecture for deploying and provisioning customisable services
(Nguyen 2012a). The service provisioning architecture comprises of a number of compo-
nents performing different functions of service customisation.
Chapter 5 - An Architecture for Provisioning Customisable Services
106
Each customisable service exposes two types of endpoint, customisation endpoint
and variant endpoint, where the service customisation function and the variant provision-
ing function are respectively provided. The customisation endpoint is uniquely specified
in the WSVL document for exchanging customisation messages, while variant endpoints
are dynamically created for exchanging messages related to consuming particular service
variants. In general, a new variant endpoint is created each time a new valid customisa-
tion request is received.
5.3.2 Components of the architecture
The functions of components of the service provisioning architecture are described
below:
Customisation frontend: This is a conventional service for providing the service
customisation function. Its capability is specified in the customisation endpoint
description of the WSVL document. The customisation frontend is an intermedi-
ary between service consumers and the customisable service in question.
Feature model manager: This component manages feature models for all cus-
tomisable services and provides a set of operations with respect to feature models.
In particular, the component supports the registration of feature models and the
validation of customisation requests (i.e. feature configurations). In addition, the
component helps to verify whether a customisation request is complete or partial,
Figure 5.2 - Overview of the service provisioning architecture
Service platform
Customisation
frontend
Feature
model
manager
Runtime customisation and
management engine
Configurable
service
implementation
Variant profile
repository
Service variant
Customisation
endpoint
Variant
endpoint
5.3 The service provisioning architecture
107
as well as deriving the optimised customisation request
20
. As well as these
runtime functions, the component can also be used at design time to facilitate the
domain engineering process of customisable services.
Variant profile repository: This component keeps track of deployed service vari-
ants with respect to customisation requests. In particular, it maintains the
correspondence between customisation requests and variant endpoints. It also
contains other endpoint information like the deployment status (e.g. active, ex-
pired), deployment time, and deployment types (e.g. permanently, temporary) to
facilitate the management of service variant lifecycles.
Configurable service implementation: These are configurable artefacts produced
during the domain engineering process. Configurable artefacts contain software
variants in a super-imposed form
21
. These software variants are mapped to variant
features in the feature model so that a feature configuration can be used to resolve
variability in these configurable artefacts. Note that these configurable artefacts
are specific to the types of services (i.e. atomic or composite) in question. We will
elaborate these artefacts in Chapter 6 (for customisable atomic services) and
Chapter 7 (for customisable composite services).
Runtime customisation and management engine (or Runtime engine): This
component plays the central role in deriving, deploying and managing service
variants. Its main function is to resolve variability in the configurable service im-
plementation and produce application artefacts
21
which comprise service
variants. In addition, it supports the dynamic deployment of service variants as
well as monitoring the operation of deployed service variants. Lastly, it facilitates
the management of lifecycles of service variants through interactions with the
component Variant profile repository (e.g. register a new variant endpoint or up-
date the state of existing variant endpoints).
Service variant: This is dynamically derived from the configurable service im-
plementation according to a customisation request. The deployment lifetime of
this component depends on service providers policies and contracts between ser-
vice providers and service consumers. For the multi-tenanted SaaS application
20
See section 3.4.2 for the definition of different types of customisation requests.
21
See section 3.3 for the discussion of the domain engineering process for customisable services,
configurable artefacts, and application artefacts
Chapter 5 - An Architecture for Provisioning Customisable Services
108
model (Ghaddar 2012), this component is usually deployed temporarily according
to the payment by service consumers.
Among above components, the components Customisation frontend, Configurable
service implementation, and Service variant are specific to one customisable service.
Other components are common to all customisable services. The component Service
variant is only the runtime component produced by the runtime engine. While the
component Customisation frontend needs to be uniquely deployed for each customisable
service, its operations are likely common to all customisable services. In other words,
they can also be shared among customisable services in a similar fashion to other com-
mon components. Therefore, to provide a new customisable service in this service
provisioning architecture, service providers only need to develop the component Config-
urable service implementation and reuse other components.
There is a mapping between information in WSVL documents and this service pro-
visioning architecture. In particular, the description of customisation endpoint in a WSVL
document represents the capability of the component Customisation frontend. The
description of customisation options is managed by the component Feature model
manager. Lastly, the description of service capability and the description of feature
mapping are utilised in developing the component Configurable service implementation.
Note that the description of the function of each component is not comprehensive.
We only describe above the key functions which collectively enable the provisioning of
customisable services. Service providers who wish to exploit this service provisioning
architecture to extend their existing service platforms need to adapt these components by
considering additional functions according to their service provisioning policies and
strategies.
5.3.3 Interaction among components
In this section, we describe the interactions between components of the service provision-
ing architecture to process an incoming customisation request.
i. Upon the arrival of a customisation request, the Customisation frontend queries
the Feature model manager about the validity of the customisation request.
ii. If the customisation request is invalid, the Customisation frontend notifies the
service consumer. Otherwise, the Customisation frontend queries the Feature
model manager to check if the customisation request is complete or partial. In
case of partial customisation request, the Customisation frontend retrieves the
optimised customisation request from the Feature model manager. The opti-
5.4 Handling partial customisation requests
109
mised customisation request will help to resolve variability in the configurable
service implementation to the full extent with respect to the given customisation
request. The final customisation request is passed to the Runtime engine.
iii. The Runtime enginefirst queries the Variant profile repository to check if a ser-
vice variant matching the customisation request is already deployed. If yes, the
Runtime engine updates the existing service variant (e.g. updating its deploy-
ment status), updates the Variant profile repository (e.g. by adding association
between the existing variant endpoint and this service consumer), and returns the
variant endpoint to the Customisation frontend. The Customisation frontend
will formulate and return an appropriate customisation response message to the
service consumer so that the consumer can start consuming the service variant.
iv. In case there does not exist an already deployed service variant matching the cus-
tomisation request, the Runtime engineis going to derive a new service variant.
The derivation of a service variant is performed by referring variability resolution
decisions at the feature level to resolve variability within the Configurable ser-
vice implementation to produce a particular service variant.
v. The Runtime engine will dynamically deploy the resulting service variant to a
new variant endpoint. Information related to the new service variant is updated to
the Variant profile repository before the new variant endpoint is returned to the
service consumer through the Customisation frontend.
5.4 Handling partial customisation requests
5.4.1 Overview
As discussed in Chapter 3, there are two types of customisation requests: complete
customisation requests and partial customisation requests
22
. For complete customisation
requests, variability in the feature model is completely decided. Consequently, variability
in the configurable service implementation is completely resolved to produce a service
variant which is ready to be consumed by end-users. In this case, a service variant, which
is called determined service variant in section 3.4.3.3, is a conventional service
described by a WSDL document. In contrast, the resolution of variability in the feature
model for partial customisation requests is not complete. Consequently, the resulting
22
In all of our discussion related to variability resolution from this section on, we assume that the
customisation request in question is valid. Invalid customisation requests are already rejected by
the Customisation frontend and are not used by the runtime engine to resolve variability.
Chapter 5 - An Architecture for Provisioning Customisable Services
110
service variant, which is called refined customisable service, is still a customisable
service. A refined customisable service is again described by a new WSVL document.
While the operations of the service provisioning architecture with respect to both
complete and partial customisation requests are similar and have already been described
in section 5.3.3, the only difference between the two relates to the derivation of service
variants. In this section, we assume that the service provisioning architecture is already
capable of deriving determined service variants with respect to complete customisation
requests. This detail which is specific to the type of services will be discussed in Chapter
6 and Chapter 7 respectively. We will describe our solution to handle partial customisa-
tion requests and derive refined customisable services based on that capability.
Figure 5.3 presents components of the service provisioning architecture for pro-
cessing partial customisation requests. There are two main differences compared to the
service provisioning architecture shown in Figure 5.2. Firstly, the runtime-generated
component Service variant is replaced by a Variant customisation frontend, and the
Variant endpoint is replaced by a Variant customisation endpoint. This change of names
not only reflects the change in functions of those entities but also demonstrates how
similar the new entities are with respect to the existing entities Customisation frontend
and Customisation endpoint of the service provisioning architecture.
In the following subsections, we describe the operation of the runtime engine with
respect to the derivation of refined customisable services. In particular, we describe how
the runtime engine derives the WSVL description for a refined customisable service
(section 5.4.2), what will be deployed as the runtime representation of the refined
Figure 5.3 - Handling partial customisation requests
Feature
model
manager
Runtime customisation and
management engine
Configurable
service
implementation
Customisation
endpoint
Service platform
Variant
customisation
endpoint
Variant customisation
frontend
Customisation
frontend
5.4 Handling partial customisation requests
111
customisable service (section 5.4.3), and how the refined customisable service processes
customisation messages destined to it (section 5.4.4).
5.4.2 Deriving WSVL documents for refined customisable services
Variability of a refined customisable service is represented by a feature model resulted
from specialising the original feature model. This specialisation is based on the feature
configuration contained in the partial customisation request to which the refined cus-
tomisable service is generated. Similarly, the WSVL description of the refined
customisable service is also a result of specialising the WSVL description of the original
customisable service. In this section, we describe the process of deriving the WSVL
description of the refined customisable service. In particular, section 5.4.2.1 discusses
how to specialise the original feature model and produce the description of customisation
options. Section 5.4.2.2 describes the specialisation of the service capability description.
Section 5.4.2.3 describes the specialisation of the feature mapping description. And
section 5.4.2.4 discusses the deployment of variant customisation endpoint and the
derivation of the complete WSVL description.
5.4.2.1 Specialising feature model and customisation options description
Upon the reception of a partial customisation request from the component Customisation
frontend, the runtime engine specialises the feature model with the feature configuration
contained in the customisation request. The specialised feature model is a new feature
model in which selected features become mandatory, disabled features are removed, and
undecided variant features remain variant
23
. In addition, other properties of the feature
model (i.e. group cardinalities, cross-tree constraints) are also specialised according to the
feature configuration. The specialisation of feature models is also called staged-
configuration of feature models in literature (Czarnecki 2005d).
For instance, specialising the feature model of the Swinsure Insurance Web service
(cf. section 3.1) with respect to the customisation request CR=({Residential}, {Business,
ExtendedThirdPartyLiability, PolicyUpdate, PolicyQuery}) results in a specialised
feature model shown in Figure 5.4. The following operations have been performed to
produce this specialised feature model:
23
Note that the customisation request is an optimised customisation request. Therefore, there exist
no undecided variant features that can be further inferred from this customisation request.
Chapter 5 - An Architecture for Provisioning Customisable Services
112
i. The selected feature Residential become mandatory (i.e. its feature cardinality
is [1-1]), while four disabled features Business, ExtendedThirdPartyLiabil-
ity, PolicyUpdate, PolicyQuery are removed.
ii. The group cardinality [1-1] for the parent feature PolicyType is no longer nec-
essary since the feature Residential has already been selected. Besides, the
group cardinality [1-3] for the parent feature ExtraCover is updated to [1-2]
since the feature ExtendedThirdPartyLiability has already been removed.
iii. Both two feature constraints (i.e. PolicyUpdate requires PolicyQuery and
Residential excludes ExtendedThirdPartyLiability) are no longer neces-
sary since either relevant features are removed or these feature constraints
establish with the specialised feature model.
After specialising the feature model, the runtime engine registers the new feature
model to the component Feature model manager. In addition, the description of customi-
sation options in the new WSVL document (which describes the refined customisable
service) is generated from this specialised feature model.
5.4.2.2 Specialising service capability description
Service capability description is specialised by evaluating the propositional formula
associated with each variant service capability. If the evaluation result is true with respect
to the feature configuration, the variant service capability becomes mandatory (or
common capability). If the evaluation result is false, the variant service capability is
purged from the description. Importantly, if the propositional formula is undecided due to
Figure 5.4 - A specialised feature model
Swinsure Insurance Web Service
Policy Creation
Quote Purchase
[1-1]
Policy Type Extra Cover
Residential
[1-1] [0-1]
[1-1] [0-1]
[1-2]
Accidental Damage Fusion Cover
Payment Method
[1-1]
[1-1]
Credit Card Cover Note
[1-1]
5.4 Handling partial customisation requests
113
the existence of undecided variant features, the propositional formula is specialised by
removing all decided variant features. And the variant service capability remains variant
in the new WSVL document. In this case, the specialised propositional formula will be
used to define the presence condition for this variant service capability.
Note that the presence condition of a variant service capability is expressed as If the
variant features A
1
, A
2
,, A
n
are selected and the variant features B
1
, B
2
,, B
m
are
disabled, this variant capability is available. Its associated propositional formula is
</feature>
<requires feature="Advance" requires="Monitoring"/>
<excludes feature="Private-IP-address" excludes="DHCP-options"/>
</feature-model>
b) Registering AWS feature model with Feature model manager
a) XML representation of AWS feature model (ec2.xml)
8.2 Redesign the AWS as a customisable service
199
Figure 8.11 demonstrates how the AWS feature model is registered to the Feature
model manager in our prototype system. As discussed in section 6.4.1, the implementa-
tion of the component Feature model manager is based on the FAMA framework.
Therefore, the AWS feature model is first represented in XML notations defined by the
FAMA framework (cf. the top part of the figure). The XML representation is then used to
instantiate a QuestionTrader object which is used by the Feature model manager to
manage each and every feature model for all customisable services (cf. the bottom part of
the figure).
Figure 8.12 demonstrates how to register the customisable AWS with the Variant
profile repository. The top part of the figure shows the skeleton for the implementation
class of the Variant profile repository, called VariantManager in our prototype imple-
mentation. As can be seen from the skeleton, there are methods for retrieving or updating
existing service variants, and registering new service variants. In addition, there is a
dedicated thread for managing service variant lifecycle, such as un-deploying expired
service variants (cf. Chapter 5). The bottom part of the figure demonstrates how a new
customisable service (i.e. the customisable AWS in this case) registers itself to the
Variant profile repository before deployment. This is actually performed by the compo-
nent Customisation frontend.
Figure 8.13 presents an excerpt of the component Runtime customisation and man-
Figure 8.12 - Service registration with Variant profile repository
public class CustomizationPortTypeServer {
private VariantManager mVariantManager;
protected CustomizationPortTypeServer() throws Exception {
// Initialize a variant manager
mVariantManager = VariantManager.getInstances();
CustomizationPortType implementor =
new CustomizationPortTypeImpl(mVariantManager);
EndpointImpl endpoint = (EndpointImpl)Endpoint.publish(
"http://localhost:8080/ec2CustomizationFrontend",
implementor);
// Log incoming and outgoing messages
ep.getServer().getEndpoint().getInInterceptors().add(new LoggingInInterceptor());
ep.getServer().getEndpoint().getOutInterceptors().add(new LoggingOutInterceptor());
public class VariantManager implements VariantManagerInterface {
public int lookupVariantIndex(HashMap<String, Boolean> featureConfiguration) {}
public void updateVariant(int variantIndex) {}
public void registerNewVariant(HashMap<String, Boolean> featureConfiguration,
int variantIndex) {}
public void registerEndpoint(EndpointImpl endpoint) {}
private class VariantLifeCycle implements Runnable {}
}
b) Register the customisable AWS before deploying Customisation frontend
a) Variant profile repository implementation class
Chapter 8 - Case Study and Evaluation
200
agement engine. As can be seen from the excerpt, the runtime engine searches for an
existing service variant with respect to a feature configuration. If such service variant
exists, the engine updates the service variant and returns a customisation response without
deploying new service variant. Otherwise, the engine dynamically derive and deploy a
new service variant with a new variant endpoint which is then returned to customers.
After this step, the customisable AWS is fully deployed in our service middleware
and fully functioning with the following functionalities:
The AWS customisation frontend mediates all incoming customisation requests
to other components of the service provisioning architecture (i.e. Feature model
manager and Runtime customisation and management engine) and returns ap-
propriate customisation responses as the result of service customisation.
To customise the service, customer programs send a complete feature configura-
tion to the AWS customisation frontend. The feature configuration will be
validated by the Feature model manager. Invalid feature configurations will be
rejected. For a valid feature configuration, the Variant profile repository is con-
sulted to check if the corresponding service variant has already been deployed
and is still active. Otherwise, the Runtime customisation and management en-
ginewill dynamically derive and deploy a new service variant.
8.3 Evaluation
In this section, we study the performance of service variants which are dynamically
generated and deployed by the redesigned customisable AWS interface. The comparison
Figure 8.13 - An excerpt of the Runtime customisation and management engine
implementation
/* Active variant already exists */
if ((variantIndex = mVariantManager.lookupVariantIndex(mFeatureConfiguration)) != -1) {
// Update variant state
mVariantManager.updateVariant(variantIndex);
// Return the existing endpoint
response.setWsdlURI(variantIndex);
return response;
}
/* Create new variant index */
variantIndex = mVariantManager.getVariantIndex(mFeatureConfiguration);
/* Perform customisation */
performCustomisation();
/* Dynamic deployment */
servicePort = serviceClass.newInstance();
serviceLocation = createVariantEndpoint(variantIndex);
variantEndpoint = (EndpointImpl)Endpoint.publish(serviceLocation, servicePort);
8.3 Evaluation
201
with the performance of the super-service AWS will help to highlight efficiency brought
about by our service customisation approach. In particular, we identify three metrics that
capture the consumption and provisioning perspectives of a running Web service (Section
8.3.1). We then describe automated experiments for collecting the data of these three
metrics in two settings: service variants generated by the customisable AWS and the
super-service AWS (Section 8.3.2). The comparison between two sets of data will be
discussed in Section 8.3.3.
8.3.1 Metrics
We define three metrics that account for the efficiency of provisioning and consuming
services: 1) the number of service operations, 2) the number of loaded classes, and 3) the
memory consumption (i.e. the size of permanent generation memory pool). While the first
metric captures the consumption perspective, the other two metrics represent the provi-
sioning perspective of a service.
The number of service operations: This is the number of service operations in
the service interface description of a service. This number accounts for the size of
a service interface description. The more number of service operations a service
interface description has, the more complex it would be for consumer developers
to comprehend and consume the service.
The number of loaded implementation classes: When a service is deployed, a
number of classes is loaded to make the service ready for being invoked by cus-
tomer programs. These classes comprise of middleware classes and
implementation classes. The former term refers to classes required by the service
middleware for its proper operation, such as classes for processing and exchang-
ing SOAP messages. In contrast, the latter term refers to implementation classes
specific to the business logic of one service. In the context of JAX-WS program-
ming frontend and JAXB data binding, these classes represents the service class
and data types defined in the WSDL document. While the number of middleware
classes is quite similar across services deployed on the same service middleware,
the number of implementation classes is service specific and represents runtime
resources required for that service.
The size of permanent generation memory pool: The memory consumption of a
deployed service is characterized by a number of memory pools used by the Java
Virtual Machine (JVM) (Oracle 2013). Most of these memory pools are dynamic
due to the operation of garbage collection and optimization mechanisms within
Chapter 8 - Case Study and Evaluation
202
the JVM. The only exception is the permanent generation memory pool (aka.
PermGen memory) which is rather stable. This memory pool contains reflective
data of classes and method objects required for the execution of a Java program at
runtime. Therefore, the size of the PermGen memory is a good indicator of
memory consumption for a deployed service (Masamitsu 2006).
8.3.2 Experimental settings
8.3.2.1 Variant selection
As discussed in section 8.2.2.1, there are totally 75096 possible service variants. Our
experiments shown that for each service variant, the experiment time is 23 minutes.
This experiment time is mainly comprised of the following 3 periods:
The time for producing a complete feature configuration and sending a customi-
sation request to the customisable AWS
The time for deriving a corresponding service variant, and
The time for deploying the service variant and waiting the two metrics (i.e. the
number of loaded classes and the PermGen size) to be stable
Among these three components, the last takes the most experiment time. Given the
experiment time for one service variant, running experiment against all possible service
variants is impractical. Therefore, we identify three typical types of service variants to
which the experiment will be performed. Each service variant type involves around 300
service variants (i.e. correspond to 1015 hour experiment) and produces representative
data for our analysis. For each service variant type, all service variants belonging to the
type will be requested resulting in the dynamic derivation and deployment of these
service variants. Service variants of each type will be analysed to determine the average
and spread of their creation time. The three service variant types are as follow:
Light-weight service variants: Service variants belonging to this type do not re-
quire advanced functions for managing subnets, instances, machine images, and
external storages. In addition, they only support the standard instances (i.e. re-
served and spot instances are not required). For these service variants, a number
of variant features in the AWS feature model that represent those functions are
not required and are disabled. Figure 8.14 shows the feature configuration tem-
plate for these service variants. The selection or disabling of a number of features
have already been decided and are common to all service variants of this type.
Service variants of this type are different with respect to customisation decisions
related to open variant features (i.e. ones with empty boxes). Also, as can be seen
8.3 Evaluation
203
from the top of the figure, there are totally 288 service variants belonging to this
type.
Medium-weight service variants: Similar to light-weight service variants, these
service variants do not require advanced functions for managing subnets or in-
stances. Also, they do not support reserved instances. However, service variants
of this type are able to include advanced functions for managing machine images
and external storages, as well as supporting spot instances if necessary. In addi-
Figure 8.14 - Light-weight service variants
Legend
Service variant type
Variant (selectable) feature
Disabled feature
Mandatory feature wrt parent feature
Feature group
Chapter 8 - Case Study and Evaluation
204
tion, all of these service variants provide functions for retrieving instance descrip-
tions as well as supporting basic booting of instances (i.e. the corresponding
features are selected). Figure 8.15 shows the feature configuration template for
this type of service variants. A number of variant features has already been se-
Figure 8.15 - Medium-weight service variants
Legend
Service variant type
Variant (selectable) feature
Disabled feature
Mandatory feature wrt parent feature
Feature group
Selected grouped feature
8.3 Evaluation
205
lected or disabled according to the description above. Note that, there are 315
service variants of this type.
Heavy-weight service variants: For this type, nearly all variant features are se-
lectable. The only exception is feature VPN connections which is disabled due
to the selection of feature Security group and the exclude constraint between
Figure 8.16 - Heavy-weight service variants
Legend
Service variant type
Variant (selectable) feature
Disabled feature
Mandatory feature wrt parent feature
Feature group
Selected grouped feature
Chapter 8 - Case Study and Evaluation
206
them (cf. Figure 8.3). These service variants are similar to medium-weight ser-
vice variants in the sense that they all include functions for retrieving instance
descriptions and supporting basic booting of instances. Also, all heavy-weight
service variants provide capability for managing machine images, external stor-
ages, and monitoring. In addition, advanced features for subnet management and
security can be added if necessary. Figure 8.16 shows the feature configuration
template for this type of service variants. As can be seen from the figure, there
are 384 service variants of this type.
8.3.2.2 Experiment procedure
Figure 8.17 presents the overview of the experiment. In this experiment, we extend the
console version of our consumer prototype tool (cf. section 6.4.3) to work as a client
program. When the experiment starts (Step 1), the client program is configured with the
corresponding type of service variants (Step 2). Specifically, the AWS feature model is
configured with the partial feature configuration representing the type of service variants
to be experimented (cf. Figure 8.14, Figure 8.15, and Figure 8.16). The client program
then iterates through all possible complete feature configurations that can be produced
from this partially configured feature model (Step 3, 4, 15, 16). These complete feature
configurations represent all service variants belonging to this particular type. For each
feature configuration, the client program sends a customisation request to the customisa-
ble AWS service (Step 4) and asynchronously waits for a customisation response (Step
15). On the server side, when a customisation request is received though the Customisa-
tion frontend of the customisable AWS (Step 5), the Runtime customisation and
management engine dynamically derives and deploys a service variant matching the
request (Step 6).
Note that in this experiment, all requested (complete) feature configurations are val-
id. The ability of our service middleware for validating requested feature configuration
has already been verified in Chapter 6 (cf. section 6.4.4.1) and is not the focus of this
experiment. In addition, each service variant is un-deployed once all necessary metrics
are collected to avoid its impact on collected data for subsequent service variants. As
such, the Runtime customisation and management engine needs to derive and deploy a
new service variant every time there is an incoming customisation request. Also, each
service variant is deployed in one dedicated JVM so that the collected data is not influ-
enced by other programs (e.g. the runtime engine). Again, the ability of our service
8.3 Evaluation
207
middleware for managing lifecycle of service variants has already been tested in Chapter
6 (cf. section 6.4.4.2) and is not repeated in this experiment.
In this experiment, we instrument our runtime engine so that it enables the collection
of three metrics explained in the previous section 8.3.1. Specifically, once the service
variant is fully deployed (Step 6), the runtime engine collects the first metric (i.e. the
number of service operations exposed by the service variant) (Step 7). The runtime
engine then continues to collect the other two metrics by querying the Java Virtual
Machine (JVM) on which the service variant is deployed (Step 8, 9, 10, 11, 12). Since the
Experiment overview
Customisable AWS Client
Experiment start
Partial feature
configuration
Has more feature
configuration
Finish experiment
No
Send customisation
request
Yes
Dynamic derivation and deployment
of a new service variant
Calculate number of
service operations
Initialize number of loaded
classes and PermGen size
Sleep 30s
Query JVM for number of loaded
classes and PermGen size
Have the metrics
increased?
Yes
Store all metrics
No
Un-deploy service
variant
Return customisation
response
Receive customisation
response
Receive customisation
request
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Set up service
variant type
Collect metric
Collect metric
Figure 8.17 - Overview of the experiment
Chapter 8 - Case Study and Evaluation
208
number of loaded classes and the size of PermGen memory keeps increasing during the
course of service deployment, we wait until the deployment reaches the saturated state to
collect these two metrics (cf. execution loop comprised of step 9, 10, 11). Once all
metrics are collected, the service variant is un-deployed as explained above (Step 13). A
customisation response is then sent to the client program (Step 14) so that it can continue
with another feature configuration or terminate when all feature configurations have
already been experimented.
8.3.3 Experiment results
8.3.3.1 Data normalization
As discussed in section 8.3.1, there are two types of classed being loaded in JVM:
middleware classes and implementation classes. The main interest in our experiment is
implementation classes which are specific to the business logic of a service. However, we
are only able to query JVM for the total number of classes being loaded. Since the
number of middleware classes is similar across all services deployed on the same service
middleware with the same settings (e.g. data binding techniques, logging configuration ),
we also collect the number of loaded classes for a very basic Web service. This basic
Web service has only one service operation which uses one primitive data type (i.e.
String) for its input and output messages. The collected data for this basic Web service
will be used as the offset for finding out the number of loaded implementation classes in
our experiment.
A similar adjustment is performed with respect to the PermGen size. Specifically, we
also retrieve the PermGen size for the basic Web service described above and use the
number as the offset for calculating the actual PermGen size specific to each service
variant in our experiment.
8.3.3.2 The number of service operations
Figure 8.18 presents the experiment results with respect to the number of service opera-
tions. As discussed in section 8.3.2, there are 288 service variants belonging to the
identified light-weight type. The corresponding numbers for the medium-weight and
heavy-weight types are 315 and 384 respectively. Figure 8.18 shows the average, maxi-
mum and minimum numbers of service operations for each type. Note that the original
AWS WSDL has totally 149 service operations. The experiment results show that our
service customisation approach helps to reduce the number of redundant service opera-
tions based on consumers specific requirements. While the reduction might not be
8.3 Evaluation
209
considerable for heavy-weight type, it is significant with respect to light-weight and
medium-weight service variants.
The reduction of the number of service operations helps to simplify the service inter-
face that needs to be comprehended and processed by customer developers. Note that
client programs of Web services are usually automatically generated by a development
framework. The frameworks create a lot of boilerplate code. The removal of unused
ports/operations/message types in the WSDL will prevent the generation of useless
boilerplate. This makes the client code lighter-weight and easier to navigate by develop-
ers. In other words, our service customisation approach helps to improve the efficiency in
service consumption.
8.3.3.3 The number of loaded classes
Figure 8.19 shows the experiment results with respect to the number of implementation
classes being loaded. In this figure, we show the data for service variants as the propor-
tion of the one for super service. Similar to the number of service operations, this figure
also displays the average, maximum and minimum of the data collected. The experiment
results show that the deployment of service variants requires fewer classes than the
deployment of the super service. Also similar to the number of service operations,
medium-weight and light-weight service variants consume much less runtime resources
compared to the deployment of super service.
Figure 8.18 - Number of service operations
54
90
142
40
62
116
25
35
87
0
20
40
60
80
100
120
140
160
Light-weight Medium-weight Heavy-weight
#
s
e
r
v
i
c
e
o
p
e
r
a
t
i
o
n
s
Max
Average
Min
149 Super-service
Chapter 8 - Case Study and Evaluation
210
8.3.3.4 Memory consumption (PermGen size)
Figure 8.20 demonstrates the proportion of the memory consumption (i.e. PermGen size)
of service variants with respect to the memory consumption of the super service. Similar
to the number of loaded classes, the deployment of service variants requires less memory
usage than the deployment of the super service. In addition, that reduction is much more
significant in the case of light-weight and medium-weight service variants. The experi-
ment results with respect to the number of loaded classes and the memory consumption
Figure 8.19 - Loaded classes (%)
0
10
20
30
40
50
60
70
80
90
100
Light-weight Medium-weight Heavy-weight
#
L
o
a
d
e
d
c
l
a
s
s
e
s
(
%
)
Max
Average
Min
Figure 8.20 - Memory consumption (%)
0
10
20
30
40
50
60
70
80
90
100
Light-weight Medium-weight Heavy-weight
P
e
r
m
G
e
n
s
i
z
e
(
%
)
Max
Average
Min
8.4 Limitations of the evaluation
211
demonstrates that our service customisation helps to improve efficiency in service
provisioning.
8.4 Limitations of the evaluation
Lacking of internal business logic implementation: In this evaluation, we cannot obtain
the internal implementation of the AWS. Therefore, we have to use the service skeleton
with a dummy business logic implementation that does not perform complex computation
(e.g. user authorization or session management) or interact with database systems. While
the service skeleton is similar to what is required by the real implementation of the AWS,
the dummy business logic is much simpler than the real business logic. We are aware that
the results that we obtained through our automated expriments might not be the same if
we also take into account implementation classes for the real business logic. However, a
level of efficiency improvement could be expected with our approach even when the real
business logic implementation is incorporated. Because a smaller service skeleton yields
smaller program blueprint and consequently results in more efficient service provisioning.
Also, due to the lacking of internal business logic implementation, we cannot demonstrate
the application of our techniques for supporting variability in business logic.
The actual efficiency improvement depends on the mapping definition between the
feature model and the service capability model: In this case study, the relationship
between variant features and variant service capabilities is one-to-many. As the result, the
exclusion of a variant feature exclusively removes all variant service capabilities mapped
to the variant feature from the service capability model. In contrast, when the relationship
is many-to-many, state of a number of variant features needs to be taken into account
when deciding to retain or exclude a variant service capability. Therefore, when the
relationship changes, the number of service operations for each service variant might not
be the same as the experiment result demonstrated in the thesis. Similarly, due to the
dependence on the mapping definition, the level of efficiency improvement achieved in
this case study is not automatically transferable to other Web services.
The overall efficiency improvement depends on the proportion of the number of
businesses per service variant: In the evaluation, we compare the performace of each
individual service variant against the super-service. We then analyse the average perfor-
mace of a set of service variants belonging to each service variant type. We are aware that
this comparison assumes that the number of businesses requesting one service variant is
equal across all service variants of the same type. When there is fluctuation in the number
of businesses per service variant, a weighted mean may provide more precise analysis.
Chapter 8 - Case Study and Evaluation
212
The consequences of efficiency improvement are not evaluated: Our evaluation has
shown that a significant efficiency improvement can be achieved using our service
customisation approach, especially with light-weight and medium-weight service vari-
ants. However, we do not provide the quantitative analysis of the consequences of such
efficiency improvement. For instance, as the result of reducing runtime resource usage,
how faster the response time is and how higher the throughput will be? This is mainly due
to the lacking of the internal business logic implementation.
While our evaluation with respect to the AWS provides quantitative insights on the
extent of efficiency improvement brought about by our service customisation approach, it
still has limitations as discussed above. A further enhancement of the evaluation taking
into account those limitations will be addressed as part of our future work.
8.5 Summary
In this chapter, we have presented the case study of Amazon Web Service (AWS). The
original AWS is designed as a super service. To evaluate how our service customisation
approach helps to improve the efficiency in service provisioning and consumption, we
have redesigned the AWS as a customisable AWS. This chapter describes the whole
process of applying our techniques to achieve that goal. In particular, we have elaborated
how to model service variability at both the feature level and the service capability level.
Also, we have demonstrated how to implement the customisable AWS that conforms to
the identified service variability. In addition, we have presented how to deploy such a
service in our prototype implementation of the service provisioning architecture. At the
end of this process, we successfully deploy and run the customisable AWS in our proto-
type system. To evaluate our approach, we have identified three metrics that represent
efficiency in service consumption and provisioning . These are the number of service
operations, the number of loaded classes, and the memory consumption. While the first
metric captures the service consumption perspective, the latter two captures the service
provisioning perspective. The experiment results collected with respect to the case study
show that our service customisation approach helps to significantly reduce redundancy
and improve efficiency in many circumstances (e.g. when customers require only light-
weight or medium-weight service variants).
213
9. Conclusion and Future Work
This chapter concludes the thesis by summarising what service variability characteristics
have been addressed. We then discuss the contribution of the thesis to the field of service
computing. Lastly, we describe the future work that could be done to further facilitate the
use of customisable services in service ecosystems.
9.1 Service variability characteristics addressed in this thesis
Figure 9.1 summarises what service variability characteristics have been addressed in this
thesis. This is the summary of our analyses presented at the end of each chapter from
Chapter 3 to Chapter 7. The figure demonstrates how each service variability characteris-
tic is related to research gaps and is addressed in the corresponding chapters for the
research gaps. Note that each research gap is individually addressed in one chapter from
Chapter 3 to Chapter 7. For the detail of how each service variability characteristic has
been addressed, readers are referred to the corresponding chapter and the analysis at the
end of the chapter.
As can be seen from the figure, one service variability characteristic might involve in
more than one research gap. This implies that the solutions for those research gaps
collectively address the service variability characteristic. For instance, Exposed variabil-
Figure 9.1 - Service variability characteristics addressed in this thesis
Implementation
Recursive
Intra-
dependencies
Architecture Composition
variability
Service variability
Variability modeling
Variability instantiation
Internal
Partner
variability
External
Automated Inter-
dependencies
Exposed
variability
Variability
communication
Formality Technology
independence
Self-
describing
Staged
instantiation
Who
(Provider/
Consumer)
Abstraction
level
Requirement
Variability
constraints
Customisation mechanism
Customisation enabler
Atomic service realisation
Composite service realisation
Level
(Interface/
Implementation)
Service provisioning
Chapter 9 - Conclusion and Future Work
214
ity of customisable services is considered from three aspects. The first aspect is how
exposed variability is captured at the service interface level by WSVL. The second aspect
is how such WSVL descriptions are supported internally by customisable atomic services
(i.e. the consistency between the exposed variability and the implementation of customis-
able atomic services). And the third aspect is related to how customisable composite
services support WSVL descriptions.
Figure 9.1 also demonstrates how the approach presented in this thesis comprehen-
sively address service variability characteristics. The solution for each research gap
contributes to our complete approach for enabling the composition and delivery of
customisable services. This is consistent to the summary of our work described in Table
2.2. In the next section, we discuss the contribution of this approach in detail.
9.2 Contribution
The major contribution of this thesis is to show how to enable the use of customisable
services. Customisable services effectively address issues related to service variability in
service ecosystems. Support for customisable services has been addressed in the follow-
ing aspects:
An efficient service customisation framework. By exploiting the concept of fea-
ture models to enable service customisation, we allow service consumers to
customise services at the requirement level. In this way, service consumers are
able to focus on what a service variant can achieve at a high level of abstraction,
rather than differences in low level technical details of each service variant. In
addition, there are fewer customisation options that need to be considered by ser-
vice consumers. This consequently helps to simplify the customisation. Another
advantage of using feature model is the ability to capture dependencies among
customisation options and support automated reasoning. Such reasoning can en-
sure the validity of service customisation.
A comprehensive customisation contract. The interface of a customisable service
is described by WSVL which is an extension of WSDL. WSVL has additional in-
formation for specifying how the service can be customised and the capability of
any service variant-to-be. The use of WSVL enables customisable services to be
self-describing in a similar fashion to conventional services. In addition, it ena-
bles loose coupling between service providers and service consumers with
respect to the consumption of customisable services. Last but not least, WSVL
9.2 Contribution
215
enables not only the customisation of services, but also the reuse of service varia-
bility.
Efficiency in deploying runtime service instances. A customisable service has a
configurable service implementation which enables the derivation of the business
logics specific to service variants. This capability removes the redundancy in the
business logic of service variants before deployment and helps to increase effi-
ciency in resource usage by runtime service (variant) instances.
Consistency in supporting both customisable atomic services and customisable
composite services. The two types of customisable services are consistently sup-
ported through the use of WSVL for specifying the service interface with service
consumers and the feature-based variability resolution mechanism for deriving
service variants. This enables service consumers to customise services in one
consistent manner specified in WSVL descriptions regardless of whether these
services are internally implemented as an atomic service or a business process.
Supporting variability inter-dependencies between a customisable composite ser-
vice and its customisable partner services. Our approach explicitly captures
variability inter-dependencies, and enables customisable composite services to
dynamically customise partner services and invoke partner service variants only
when such partner service variants are necessary. This enables the efficient re-
source usage required by partner service providers. In addition, services can be
recursively customised in line with the recursive nature of service composition.
We also demonstrated how to capture such variability inter-dependencies through
the use of WSVL for describing customisable partner services and VBPMN for
modeling customisable composite services.
Facilitating software reuse and software evolution in service development. We
show how to extend techniques from the SPL to develop customisable services.
Specifically, our approach systematically models and manages variability as well
as variability dependencies at both the service interface and service implementa-
tion level. In this way, the approach helps to address concerns related to software
reuse and software evolution with respect to the development of services.
As well as developing the concepts and key techniques for supporting customisable
services, a number of additional contributions have been made to software engineering
both at conceptual and technical levels. These are listed below.
A service provisioning architecture. This thesis shows how to deploy and provi-
sion customisable services. We present an architecture that comprises of a
Chapter 9 - Conclusion and Future Work
216
number of components performing different functions related to service customi-
sation. The architecture provides a blueprint so that service providers can extend
their existing service platforms to accommodate customisable services. It is ge-
neric and applicable to the deployment and provisioning of both customisable
atomic services and customisable composite services.
Extension of the JAX-WS standard for engineering customisable atomic services.
We identify two types of variability in the implementation of atomic services: i)
variability in service skeleton, and ii) variability in business logic. And we de-
scribe how to extend the JAX-WS standard for capturing these two types. The
extension enables the development of the configurable service implementation for
a customisable atomic service. This configurable service implementation can be
deployed with our service provisioning architecture to produce a properly func-
tioning customisable atomic service.
Extension of the BPMN standard for engineering customisable composite ser-
vices. We present VBPMN which is an extension of BPMN 2.0 to enable the
introduction of variation points and variants in all three aspects of process-based
service compositions: control flow, data flow, message flow. We also devise and
demonstrate novel MDE techniques for capturing variability dependencies and
enabling process customisation. Process customisation results in BPMN process
variants which can be automatically transformed to executable BPEL process def-
initions according to the mapping between BPMN elements and BPEL elements
defined in BPMN specification. VBPMN process models constitute the configu-
rable service implementation which can be deployed with our service
provisioning architecture to produce a properly functioning customisable compo-
site service.
Prototype tools for supporting our service customisation approach. This thesis
presents a number of new prototype tools for supporting proposed techniques.
The tools have been used in a research setting for engineering, deploying and
provisioning a number of motivating examples (i.e. Swinsure Insurance Web ser-
vice, Swinpay Web service, and Swinsure claim handling process). All of the
motivating examples have been developed based on industrial case studies. Also,
the tools have been applied to address variability issues with respect to a real-
world case study (i.e. AWS). The successful application of our approach to these
examples and case study demonstrates not only the feasibility but also the ap-
plicability of the approach. Based on the motivating examples, we are able to
9.3 Future work
217
verify different aspects of service customisation (e.g. the operation of the service
provisioning architecture with respect to the validation of customisation requests
and service variant lifecycle managements, the dynamic derivation of service var-
iants for both atomic services and composite services). Also, based on the real-
world case study, we have quantitatively evaluated the efficiency brought about
by using our service customisation approach.
9.3 Future work
This thesis encompasses a complete range of concepts and techniques for enabling the
composition and delivery of customisable services. Customisable services are addressed
at both the service interface level and the service implementation level. In addition,
support for both atomic services and composite services, as well as their interaction are
taken into account. However, SOA techniques have been adopted in an increasing
number of application domains (e.g. context-aware software systems, mobile applica-
tions). In addition, apart from BPMN/BPEL, there are a variety of techniques for service
(process) engineering which have been introduced in the field of service computing.
Given these conditions, there remains much work to be done in order to enhance our
service customisation approach, as well as apply our concepts to a wider range of tech-
niques, before such an approach becomes a widely accepted engineering reality. The key
future work is listed below.
Feature interaction issues when modeling variability in non-functional requirements
(NFRs). To provide complete support for customisable services, an important extension
of this work is to incorporate support for variability in NFRs (e.g. performance or
security). However, modeling variability in NFRs is challenging due to the interactions
among functional features. In particular, a functional feature has impact on a number of
NFRs, while an NFR is associated with a number of functional features. For instance, in
the context of the Swinsure Insurance Web service, a service variant which provides
service capabilities for purchasing insurance policies by credit cards often requires higher
security, higher cost and longer processing time. Feature interaction issues become more
challenging when modeling variability in the architecture and implementation of services.
Variability modeling challenges for feature models with complex feature cardinali-
ties and feature constraints. This thesis deals with feature models which use simple
feature cardinalities (i.e. (0,1) or (1,1)) and simple feature constraints (i.e. require or
exclude relationships between two variant features). While this setting is applicable to
variability in all service-based systems which have been discussed so far in literature,
Chapter 9 - Conclusion and Future Work
218
emerging application domains of SOA might require the use of complex feature cardinali-
ties (i.e. the upper bound of feature cardinalities is greater than 1) and/or complex feature
constraints (i.e. propositional relationships among multiple variant features). In such
cases, variability modeling in the architecture and implementation of services is very
challenging. Presence conditions of software variants in domain artefacts cannot be
simply expressed as If the variant features A
1
, A
2
,, A
n
are selected and the variant
features B
1
, B
2
,, B
m
are disabled, this software variant is available. Instead, much
more complex presence conditions that take into account how many time variant features
are selected or disabled are required. An example of such complex presence conditions in
the context of the Swinsure Insurance Web service is If at least two Extra Covers are
selected, this software variant is available. For customisable services captured as feature
models with complex feature cardinalities and feature constraints, not only is variability
modeling challenging, but also are new techniques required for variability resolution.
Extension of the approach to declarative processes (e.g. EPC). Chapter 7 of this the-
sis discusses our concepts of customisable composite services in the context of imperative
processes (i.e. BPMN, BPEL). However, the identified challenges in supporting cus-
tomisable composite services persist with respect to declarative processes as well. These
challenges include: i) how to capture variability inter-dependencies between a customisa-
ble service and its customisable partner services, ii) how to dynamically derive and
deploy service variants according to the feature-based service customisation framework,
and iii) how to describe the service interface of customisable composite services in order
to enable loose coupling between service providers and service consumers.
Empirical evaluation of the approach with respect to customisable composite ser-
vices. Chapter 7 of this thesis mainly focuses on supporting customisable composite
services at the architecture level. In the future work, we plan to extend an existing BPEL
process engine to support the deployment of customisable composite services. We also
develop the transformation for the automated generation of BPEL process definitions
from VBPMN process variants. These tools will be integrated with our existing prototype
system to evaluate different aspects of customising composite services in a similar way to
the evaluation described in Chapter 6.
9.4 Final words
We began this thesis by presenting the emergence of service ecosystems and a new
challenge with respect to the use of services in such service ecosystems that we call
service variability. Addressing service variability using existing service technologies is
9.4 Final words
219
inefficient with respect to service description, publication and consumption. In addition,
the presence of service variability necessitates the explicit and systematic modeling and
management of variability during service engineering to achieve a better level of software
reuse and software evolution. Our feature-based approach for the composition and
delivery of customisable services enables the introduction of customisable services as
first-class entities in SOA. A customisable service plays a similar role to a conventional
service with respect to the development of business applications. In addition, a customis-
able service effectively addresses issues related to service variability. An extended SOA
which supports customisable services will enable the emergence of more fruitful, dynam-
ic and valuable service ecosystems. Consequently, it helps service providers to build their
business applications with better quality and less cost in a more agile and flexible way.
221
Appendix A: XML Schema for WSVL
<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.swin.edu.au/scf/wsvl"
elementFormDefault="qualified"
xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.swin.edu.au/scf/wsvl"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<import schemaLocation="http://schemas.xmlsoap.org/wsdl/"
namespace="http://schemas.xmlsoap.org/wsdl/"/>
<complexType name="tFeature">
<sequence>
<element name="feature" type="tns:tFeature" minOccurs="0"
maxOccurs="unbounded"/>
<element name="featureGroup" type="tns:tFeatureGroup"
minOccurs="0" maxOccurs="1"/>
</sequence>
<attribute name="name" type="NCName"/>
<attribute name="minCardinality" type="int"/>
<attribute name="maxCardinality" type="int"/>
</complexType>
<complexType name="tFeatureGroup">
<sequence>
<element name="feature" type="tns:tFeature" minOccurs="0"
maxOccurs="unbounded"/>
</sequence>
<attribute name="minCardinality" type="int"/>
<attribute name="maxCardinality" type="int"/>
</complexType>
<complexType name="tFeatureHierarchy">
<sequence>
<element name="feature" type="tns:tFeature" minOccurs="0"
maxOccurs="unbounded"/>
</sequence>
</complexType>
<complexType name="tRequireConstraint">
<sequence>
<element name="featureRef" type="tns:tFeatureRef"/>
<element name="requiredFeatureRef" type="tns:tFeatureRef"
minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="name" type="NCName"/>
</complexType>
<complexType name="tFeatureConstraint">
<sequence>
<element name="requireConstraint"
type="tns:tRequireConstraint" minOccurs="0" maxOccurs="unbounded"/>
<element name="excludeConstraint"
type="tns:tExcludeConstraint" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
Appendix A: XML Schema for WSVL
222
<complexType name="tFeatureDescription">
<sequence>
<element name="featureHierarchy"
type="tns:tFeatureHierarchy" minOccurs="1" maxOccurs="1"/>
<element name="featureConstraint"
type="tns:tFeatureConstraint" minOccurs="0" maxOccurs="1"/>
</sequence>
<attribute name="targetNamespace" type="anyURI"
use="optional"/>
</complexType>
<element name="featureDescription"
type="tns:tFeatureDescription"/>
<complexType name="tMappingInfo">
<sequence>
<element name="link" type="tns:tLink" minOccurs="0"
maxOccurs="unbounded"/>
</sequence>
<attribute name="targetNamespace" type="anyURI"
use="optional"/>
</complexType>
<complexType name="tLink">
<sequence>
<element name="featureRef" type="tns:tFeatureRef" minOc-
curs="1" maxOccurs="1"/>
<element name="serviceElementRef"
type="tns:tServiceElementRef" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="name" type="NCName"/>
</complexType>
<complexType name="tFeatureRef">
<attribute name="ref" type="QName"/>
<attribute name="presence" type="boolean" use="optional"
default="true"/>
</complexType>
<complexType name="tServiceElementRef">
<attribute name="ref" type="QName"/>
<attribute name="target" type="tns:tTarget"/>
</complexType>
<simpleType name="tTarget">
<restriction base="string">
<enumeration value="portType"/>
<enumeration value="operation"/>
</restriction>
</simpleType>
<element name="mappingInfo" type="tns:tMappingInfo"/>
<complexType name="tPort">
<complexContent>
<extension base="wsdl:tPort"/>
Appendix A: XML Schema for WSVL
223
</complexContent>
</complexType>
<element name="port" type="tns:tPort"/>
<element name="portType" type="tns:tPortType"/>
<complexType name="tBinding">
<complexContent>
<extension base="wsdl:tBinding"/>
</complexContent>
</complexType>
<complexType name="tOperation">
<complexContent>
<extension base="wsdl:tOperation"/>
</complexContent>
</complexType>
<element name="binding" type="tns:tBinding"/>
<complexType name="tPortType">
<sequence>
<element name="operation" type="tns:tOperation" minOc-
curs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="name" type="NCName" use="required" />
</complexType>
<complexType name="tExcludeConstraint">
<sequence>
<element name="featureRef" type="tns:tFeatureRef"/>
<element name="excludedFeatureRef"
type="tns:tFeatureRef"/>
</sequence>
<attribute name="name" type="NCName"/>
</complexType>
</schema>
225
Appendix B: The WSVL Description of the Swinsure Insurance
Web service
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions name="swinsure"
targetNamespace="http://swinsure.scf.swin.edu.au/"
xmlns:tns="http://swinsure.scf.swin.edu.au/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsvl="http://www.swin.edu.au/scf/wsvl"
xmlns:fd="http://www.swin.edu.au/scf/swinsure/fd"
xmlns:md="http://www.swin.edu.au/scf/swinsure/md"
xsi:schemaLocation="http://schemas.xmlsoap.org/wsdl/ wsdl.xsd
http://schemas.xmlsoap.org/wsdl/soap/ soap.xsd
http://www.swin.edu.au/scf/wsvl wsvl.xsd">
<wsvl:featureDescription targetNamespace="http://www.swin.ed-
u.au/scf/swinsure/fd">
<wsvl:featureHierarchy>
<wsvl:feature name="SwinsureInsuranceWebService">
<wsvl:feature name="PolicyQuery" maxCardinality="1"
minCardinality="0"/>
<wsvl:feature name="PolicyCreation" minCardinality="1"
maxCardinality="1">
<wsvl:feature name="Quote" minCardinality="1" maxCar-
dinality="1">
<wsvl:feature name="PolicyType" minCardinality="1"
maxCardinality="1">
<wsvl:featureGroup minCardinality="1" maxCardinal-
ity="1">
<wsvl:feature name="Residential"/>
<wsvl:feature name="Business"/>
</wsvl:featureGroup>
</wsvl:feature>
<wsvl:feature name="ExtraCover" minCardinality="0"
maxCardinality="1">
<wsvl:featureGroup minCardinality="1" maxCardinal-
ity="3">
<wsvl:feature name="AccidentalDamage"/>
<wsvl:feature name="ExtendedThirdPartyLia-
bility"/>
<wsvl:feature name="FusionCover"/>
</wsvl:featureGroup>
</wsvl:feature>
</wsvl:feature>
<wsvl:feature name="Purchase" minCardinality="0"
maxCardinality="1">
<wsvl:feature name="PaymentMethod" minCardinali-
ty="1" maxCardinality="1">
<wsvl:featureGroup minCardinality="1" maxCardinal-
ity="1">
<wsvl:feature name="CreditCard"/>
<wsvl:feature name="CoverNote"/>
</wsvl:featureGroup>
</wsvl:feature>
</wsvl:feature>
Appendix B: The WSVL Description of the Swinsure Insurance Web service
226
</wsvl:feature>
<wsvl:feature name="PolicyUpdate" minCardinality="0"
maxCardinality="1"/>
</wsvl:feature>
</wsvl:featureHierarchy>
<wsvl:featureConstraint>
<wsvl:requireConstraint>
<wsvl:featureRef ref="fd:PolicyUpdate"/>
<wsvl:requiredFeatureRef ref="fd:PolicyQuery"/>
</wsvl:requireConstraint>
<wsvl:excludeConstraint>
<wsvl:featureRef ref="fd:Residential"/>
<wsvl:excludedFeatureRef ref="fd:ExtendedThirdPartyLia-
bility"/>
</wsvl:excludeConstraint>
</wsvl:featureConstraint>
</wsvl:featureDescription>
<wsvl:mappingInfo targetNamespace="http://www.swin.edu.au/s-
cf/swinsure/md">
<wsvl:link name="LPolicyQuery">
<wsvl:featureRef ref="fd:PolicyQuery" presence="true" />
<wsvl:serviceElementRef ref="tns:viewPolicy" target="op-
eration" />
</wsvl:link>
<wsvl:link name="LPolicyUpdate">
<wsvl:featureRef ref="fd:PolicyUpdate" presence="true" />
<wsvl:serviceElementRef ref="tns:updatePolicy" target="op-
eration" />
</wsvl:link>
<wsvl:link name="LResidential1">
<wsvl:featureRef ref="fd:Residential" presence="true" />
<wsvl:serviceElementRef ref="tns:getQuote4Residential"
target="operation" />
</wsvl:link>
<wsvl:link name="LResidential2">
<wsvl:featureRef ref="fd:ExtraCover" presence="false" />
<wsvl:serviceElementRef ref="tns:getQuote4Residential"
target="operation" />
</wsvl:link>
<wsvl:link name="LResidentialWithExtra1">
<wsvl:featureRef ref="fd:Residential" presence="true" />
<wsvl:serviceElementRef ref="tns:getQuote4Residential-
WithExtra" target="operation" />
</wsvl:link>
<wsvl:link name="LResidentialWithExtra2">
<wsvl:featureRef ref="fd:ExtraCover" presence="true" />
<wsvl:serviceElementRef ref="tns:getQuote4Residential-
WithExtra" target="operation" />
</wsvl:link>
<wsvl:link name="LBusiness1">
<wsvl:featureRef ref="fd:Business" presence="true" />
<wsvl:serviceElementRef ref="tns:getQuote4Business" tar-
get="operation" />
</wsvl:link>
<wsvl:link name="LBusiness2">
<wsvl:featureRef ref="fd:ExtraCover" presence="false" />
<wsvl:serviceElementRef ref="tns:getQuote4Business" tar-
get="operation" />
Appendix B: The WSVL Description of the Swinsure Insurance Web service
227
</wsvl:link>
<wsvl:link name="LBusinessWithExtra1">
<wsvl:featureRef ref="fd:Business" presence="true" />
<wsvl:serviceElementRef ref="tns:getQuote4Business-
WithExtra" target="operation" />
</wsvl:link>
<wsvl:link name="LBusinessWithExtra2">
<wsvl:featureRef ref="fd:ExtraCover" presence="true" />
<wsvl:serviceElementRef ref="tns:getQuote4Business-
WithExtra" target="operation" />
</wsvl:link>
<wsvl:link name="LAccidentalDamage">
<wsvl:featureRef ref="fd:AccidentalDamage" presence="true"
/>
<wsvl:serviceElementRef ref="tns:addAccidentalDamage"
target="operation" />
</wsvl:link>
<wsvl:link name="LExtendedThirdPartyLiability">
<wsvl:featureRef ref="fd:ExtendedThirdPartyLiability"
presence="true" />
<wsvl:serviceElementRef ref="tns:addExtendedThirdParty-
Liability" target="operation" />
</wsvl:link>
<wsvl:link name="LFusionCover">
<wsvl:featureRef ref="fd:FusionCover" presence="true" />
<wsvl:serviceElementRef ref="tns:addFusionCover" tar-
get="operation" />
</wsvl:link>
<wsvl:link name="LPurchase">
<wsvl:featureRef ref="fd:Purchase" presence="true" />
<wsvl:serviceElementRef ref="tns:purchasingPortType"
target="portType" />
</wsvl:link>
<wsvl:link name="LCreditCard">
<wsvl:featureRef ref="fd:CreditCard" presence="true" />
<wsvl:serviceElementRef ref="tns:purchasePolicyBy-
CreditCard" target="operation" />
</wsvl:link>
<wsvl:link name="LCoverNote">
<wsvl:featureRef ref="fd:CoverNote" presence="true" />
<wsvl:serviceElementRef ref="tns:purchasePolicyBy-
CoverNote" target="operation" />
</wsvl:link>
</wsvl:mappingInfo>
<wsvl:portType name="customisationPortType">
<wsvl:operation name="customisationOperation">
<wsdl:input message="tns:customisationOperationRequest"/>
<wsdl:output message="tns:customisationOperation-
Response"/>
<wsdl:fault name="customisationOperationFault" message="-
tns:customisationOperationFault"/>
</wsvl:operation>
</wsvl:portType>
<wsvl:binding name="swinsureBinding" type="tns:customisation-
PortType">
<soap:binding style="document" transport="http://schemas.x-
mlsoap.org/soap/http" />
Appendix B: The WSVL Description of the Swinsure Insurance Web service
228
<wsvl:operation name="customisationOperation">
<soap:operation soapAction="http://www.swin.edu/au/s-
cf/swinsure/customisationOperation" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
<wsdl:fault>
<soap:fault name="fault" use="literal" />
</wsdl:fault>
</wsvl:operation>
</wsvl:binding>
<wsdl:types>
<xsd:schema targetNamespace="http://swinsure.scf.swin.e-
du.au/">
<xsd:element name="customisationOperationRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="enabledFeatureList"
type="xsd:string">
</xsd:element>
<xsd:element name="disabledFeatureList"
type="xsd:string">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="customisationOperationResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="wsdlURI" type="xsd:anyURI"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="customisationOperationFault">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="errorCode" type="xsd:int"/>
<xsd:element name="errorMessage" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="viewPolicy">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="referenceNumber"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="viewPolicyResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="policyDetail" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
Appendix B: The WSVL Description of the Swinsure Insurance Web service
229
</xsd:element>
<xsd:element name="updatePolicy">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="referenceNumber"
type="xsd:string"/>
<xsd:element name="newPolicyDetail"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="updatePolicyResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="policyDetail" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getQuote4Residential">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="dateOfBirth" type="xsd:date"/>
<xsd:element name="claimHistory" type="xsd:int"/>
<xsd:element name="address" type="xsd:string"/>
<xsd:element name="buildingType"
type="tns:BuildingType"/>
<xsd:element name="exteriorWall"
type="tns:ExteriorWallType"/>
<xsd:element name="occupancyType"
type="tns:OccupancyType"/>
<xsd:element name="replacementValue"
type="xsd:long"/>
<xsd:element name="excess" type="tns:ExcessValue"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getQuote4ResidentialResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="referenceNumber"
type="xsd:string"/>
<xsd:element name="annualAmount" type="xsd:double"/>
<xsd:element name="monthlyInstallment"
type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getQuote4ResidentialWithExtra">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="dateOfBirth" type="xsd:date"/>
<xsd:element name="claimHistory" type="xsd:int"/>
<xsd:element name="address" type="xsd:string"/>
<xsd:element name="buildingType"
type="tns:BuildingType"/>
<xsd:element name="exteriorWall"
type="tns:ExteriorWallType"/>
Appendix B: The WSVL Description of the Swinsure Insurance Web service
230
<xsd:element name="occupancyType"
type="tns:OccupancyType"/>
<xsd:element name="replacementValue"
type="xsd:long"/>
<xsd:element name="excess"
type="tns:ExcessValue4ExtraCover"/>
<xsd:element name="extraCover" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getQuote4ResidentialWithExtraResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="referenceNumber"
type="xsd:string"/>
<xsd:element name="annualAmount" type="xsd:double"/>
<xsd:element name="monthlyInstallment"
type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getQuote4Business">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="businessName" type="xsd:string"/>
<xsd:element name="customerVisit"
type="xsd:boolean"/>
<xsd:element name="claimHistory" type="xsd:int"/>
<xsd:element name="address" type="xsd:string"/>
<xsd:element name="buildingType"
type="tns:BuildingType"/>
<xsd:element name="exteriorWall"
type="tns:ExteriorWallType"/>
<xsd:element name="occupancyType"
type="tns:OccupancyType"/>
<xsd:element name="replacementValue"
type="xsd:long"/>
<xsd:element name="excess" type="tns:ExcessValue"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getQuote4BusinessResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="referenceNumber"
type="xsd:string"/>
<xsd:element name="annualAmount" type="xsd:double"/>
<xsd:element name="monthlyInstallment"
type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getQuote4BusinessWithExtra">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="businessName" type="xsd:string"/>
<xsd:element name="customerVisit"
type="xsd:boolean"/>
<xsd:element name="claimHistory" type="xsd:int"/>
Appendix B: The WSVL Description of the Swinsure Insurance Web service
231
<xsd:element name="address" type="xsd:string"/>
<xsd:element name="buildingType"
type="tns:BuildingType"/>
<xsd:element name="exteriorWall"
type="tns:ExteriorWallType"/>
<xsd:element name="occupancyType"
type="tns:OccupancyType"/>
<xsd:element name="replacementValue"
type="xsd:long"/>
<xsd:element name="excess"
type="tns:ExcessValue4ExtraCover"/>
<xsd:element name="extraCover" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getQuote4BusinessWithExtraResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="referenceNumber"
type="xsd:string"/>
<xsd:element name="annualAmount" type="xsd:double"/>
<xsd:element name="monthlyInstallment"
type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="addAccidentalDamage">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="referenceNumber"
type="xsd:string"/>
<xsd:element name="excess"
type="tns:ExcessValue4ExtraCover"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="addAccidentalDamageResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="info" type="xsd:string"/>
<xsd:element name="annualAmount" type="xsd:double"/>
<xsd:element name="monthlyInstallment"
type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="addFusionCover">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="referenceNumber"
type="xsd:string"/>
<xsd:element name="excess"
type="tns:ExcessValue4ExtraCover"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="addFusionCoverResponse">
<xsd:complexType>
<xsd:sequence>
Appendix B: The WSVL Description of the Swinsure Insurance Web service
232
<xsd:element name="info" type="xsd:string"/>
<xsd:element name="annualAmount" type="xsd:double"/>
<xsd:element name="monthlyInstallment"
type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="addExtendedThirdPartyLiability">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="referenceNumber"
type="xsd:string"/>
<xsd:element name="excess"
type="tns:ExcessValue4ExtraCover"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="addExtendedThirdPartyLiability-
Response">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="info" type="xsd:string"/>
<xsd:element name="annualAmount" type="xsd:double"/>
<xsd:element name="monthlyInstallment"
type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="purchasePolicyByCreditCard">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="referenceNumber"
type="xsd:string"/>
<xsd:element name="creditCardName"
type="xsd:string"/>
<xsd:element name="creditCardNumber"
type="xsd:string"/>
<xsd:element name="expireDate" type="xsd:date"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="purchasePolicyByCreditCardResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="info" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="purchasePolicyByCoverNote">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="referenceNumber"
type="xsd:string"/>
<xsd:element name="postalAddress"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="purchasePolicyByCoverNoteResponse">
Appendix B: The WSVL Description of the Swinsure Insurance Web service
233
<xsd:complexType>
<xsd:sequence>
<xsd:element name="info" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="BuildingType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="House"/>
<xsd:enumeration value="Unit"/>
<xsd:enumeration value="Other"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ExteriorWallType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="SolidMasonry"/>
<xsd:enumeration value="BrickVeneer"/>
<xsd:enumeration value="Timber"/>
<xsd:enumeration value="Other"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="OccupancyType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Owner"/>
<xsd:enumeration value="Tenant"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ExcessValue">
<xsd:restriction base="xsd:int">
<xsd:enumeration value="200"/>
<xsd:enumeration value="500"/>
<xsd:enumeration value="1000"/>
<xsd:enumeration value="2000"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ExcessValue4ExtraCover">
<xsd:restriction base="xsd:int">
<xsd:enumeration value="500"/>
<xsd:enumeration value="1000"/>
<xsd:enumeration value="2000"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="CustomisationOperationFault">
<wsdl:part element="tns:customisationOperationFault"
name="parameters"/>
</wsdl:message>
<wsdl:message name="customisationOperationResponse">
<wsdl:part element="tns:customisationOperationResponse"
name="parameters"/>
</wsdl:message>
<wsdl:message name="customisationOperationRequest">
Appendix B: The WSVL Description of the Swinsure Insurance Web service
234
<wsdl:part element="tns:customisationOperationRequest"
name="parameters"/>
</wsdl:message>
<wsdl:message name="viewPolicyRequest">
<wsdl:part element="tns:viewPolicy" name="parameters"/>
</wsdl:message>
<wsdl:message name="viewPolicyResponse">
<wsdl:part element="tns:viewPolicyResponse"
name="parameters"/>
</wsdl:message>
<wsdl:message name="updatePolicyRequest">
<wsdl:part name="parameters" element="tns:updatePolicy"/>
</wsdl:message>
<wsdl:message name="updatePolicyResponse">
<wsdl:part name="parameters" element="tns:updatePolicy-
Response"/>
</wsdl:message>
<wsdl:message name="getQuote4ResidentialRequest">
<wsdl:part name="parameters" element="tns:getQuote4-
Residential"/>
</wsdl:message>
<wsdl:message name="getQuote4ResidentialResponse">
<wsdl:part name="parameters" element="tns:getQuote4-
ResidentialResponse"/>
</wsdl:message>
<wsdl:message name="getQuote4ResidentialWithExtraRequest">
<wsdl:part name="parameters" element="tns:getQuote4-
ResidentialWithExtra"/>
</wsdl:message>
<wsdl:message name="getQuote4ResidentialWithExtraResponse">
<wsdl:part name="parameters" element="tns:getQuote4-
ResidentialWithExtraResponse"/>
</wsdl:message>
<wsdl:message name="getQuote4BusinessRequest">
<wsdl:part name="parameters" element="tns:getQuote4-
Business"/>
</wsdl:message>
<wsdl:message name="getQuote4BusinessResponse">
<wsdl:part name="parameters" element="tns:getQuote4-
BusinessResponse"/>
</wsdl:message>
<wsdl:message name="getQuote4BusinessWithExtraRequest">
<wsdl:part name="parameters" element="tns:getQuote4-
BusinessWithExtra"/>
</wsdl:message>
<wsdl:message name="getQuote4BusinessWithExtraResponse">
<wsdl:part name="parameters" element="tns:getQuote4-
BusinessWithExtraResponse"/>
</wsdl:message>
<wsdl:message name="addAccidentalDamageRequest">
<wsdl:part name="parameters" element="tns:addAccidental-
Damage"/>
</wsdl:message>
<wsdl:message name="addAccidentalDamageResponse">
<wsdl:part name="parameters" element="tns:addAccidental-
DamageResponse"/>
</wsdl:message>
<wsdl:message name="addFusionCoverRequest">
<wsdl:part name="parameters" element="tns:addFusionCover"/>
Appendix B: The WSVL Description of the Swinsure Insurance Web service
235
</wsdl:message>
<wsdl:message name="addFusionCoverResponse">
<wsdl:part name="parameters" element="tns:addFusionCover-
Response"/>
</wsdl:message>
<wsdl:message name="addExtendedThirdPartyLiabilityRequest">
<wsdl:part name="parameters" element="tns:addExtendedThird-
PartyLiability"/>
</wsdl:message>
<wsdl:message name="addExtendedThirdPartyLiabilityResponse">
<wsdl:part name="parameters" element="tns:addExtendedThird-
PartyLiabilityResponse"/>
</wsdl:message>
<wsdl:message name="purchasePolicyByCreditCardRequest">
<wsdl:part name="parameters" element="tns:purchasePolicy-
ByCreditCard"/>
</wsdl:message>
<wsdl:message name="purchasePolicyByCreditCardResponse">
<wsdl:part name="parameters" element="tns:purchasePolicy-
ByCreditCardResponse"/>
</wsdl:message>
<wsdl:message name="purchasePolicyByCoverNoteRequest">
<wsdl:part name="parameters" element="tns:purchasePolicy-
ByCoverNote"/>
</wsdl:message>
<wsdl:message name="purchasePolicyByCoverNoteResponse">
<wsdl:part name="parameters" element="tns:purchasePolicy-
ByCoverNoteResponse"/>
</wsdl:message>
<wsdl:portType name="quotingPortType">
<wsdl:operation name="viewPolicy">
<wsdl:input message="tns:viewPolicyRequest"/>
<wsdl:output message="tns:viewPolicyResponse"/>
</wsdl:operation>
<wsdl:operation name="updatePolicy">
<wsdl:input message="tns:updatePolicyRequest"/>
<wsdl:output message="tns:updatePolicyResponse"/>
</wsdl:operation>
<wsdl:operation name="getQuote4Residential">
<wsdl:input message="tns:getQuote4ResidentialRequest"/>
<wsdl:output message="tns:getQuote4ResidentialResponse"/>
</wsdl:operation>
<wsdl:operation name="getQuote4ResidentialWithExtra">
<wsdl:input message="tns:getQuote4ResidentialWith-
ExtraRequest"/>
<wsdl:output message="tns:getQuote4ResidentialWith-
ExtraResponse"/>
</wsdl:operation>
<wsdl:operation name="getQuote4Business">
<wsdl:input message="tns:getQuote4BusinessRequest"/>
<wsdl:output message="tns:getQuote4BusinessResponse"/>
</wsdl:operation>
<wsdl:operation name="getQuote4BusinessWithExtra">
<wsdl:input message="tns:getQuote4BusinessWith-
ExtraRequest"/>
<wsdl:output message="tns:getQuote4BusinessWith-
ExtraResponse"/>
</wsdl:operation>
Appendix B: The WSVL Description of the Swinsure Insurance Web service
236
<wsdl:operation name="addAccidentalDamage">
<wsdl:input message="tns:addAccidentalDamageRequest"/>
<wsdl:output message="tns:addAccidentalDamageResponse"/>
</wsdl:operation>
<wsdl:operation name="addFusionCover">
<wsdl:input message="tns:addFusionCoverRequest"/>
<wsdl:output message="tns:addFusionCoverResponse"/>
</wsdl:operation>
<wsdl:operation name="addExtendedThirdPartyLiability">
<wsdl:input message="tns:addExtendedThirdParty-
LiabilityRequest"/>
<wsdl:output message="tns:addExtendedThirdParty-
LiabilityResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:portType name="purchasingPortType">
<wsdl:operation name="purchasePolicyByCreditCard">
<wsdl:input message="tns:purchasePolicyBy-
CreditCardRequest"/>
<wsdl:output message="tns:purchasePolicyBy-
CreditCardResponse"/>
</wsdl:operation>
<wsdl:operation name="purchasePolicyByCoverNote">
<wsdl:input message="tns:purchasePolicyBy-
CoverNoteRequest"/>
<wsdl:output message="tns:purchasePolicyBy-
CoverNoteResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:service name="swinsureWebService">
<wsvl:port binding="tns:swinsureBinding"
name="swinsurePort">
<soap:address location="http://ec2-107-21-175-19.compute-
1.amazonaws.com:8080/swinsureCustomizationFrontend" />
</wsvl:port>
</wsdl:service>
</wsdl:definitions>
237
Appendix C: VBPMN Metamodel
239
Appendix D: Glossary
A
Application artefact Software artefacts which is specific to one product and is
produced during the application engineering process. In SPL,
application artefacts are resulted from resolving variability in
domain artefacts with or without further product specific
development
Application engineer-
ing process
One of two processes for software development in SPL. The
application engineering process focuses on the derivation and
development of particular products from reusable assets of
SPL. The other process is Domain engineering process
Atomic service A Web service which does not invoke other Web services
Automated analysis A set of operations for analysing and reasoning over a feature
model (e.g. whether a feature model is valid, or whether a
feature configuration is valid with respect to a feature model)
Automated variability
instantiation
The use of techniques such as model transformations to
automatically derive particular products from reusable assets
in a SPL
C
CBFM Cardinality-Based Feature Modeling
Composite service A Web service which invokes other Web services
Composition variabil-
ity
Variability in the service implementation
Configurable artefact Configurable domain artefact
Configurable service
implementation
Refers to either a component of the service provisioning
architecture or software artefacts used for the component
Consumption message A message, which is generally a SOAP message, exchanged
in the consumption mode
Consumption mode One of two operation modes of a customisable service.
During this mode, a service consumer has access to one
service variant and is able to consume the service variant. The
other mode is customisation mode
Customisable service
A service that incorporates mechanisms for service consumers
to customise service capabilities and derive particular service
variants
Appendix D: Glossary
240
Customisation contract a WSVL description of a customisable service
Customisation end-
point description
WSVL description customisation endpoint
Customisation message A message, which is generally a SOAP message, exchanged
in the customisation mode
Customisation mode One of two operation modes of customisable services. During
this mode, service consumers comprehend customisation
options and perform service customisation. The other mode is
consumption mode
Customisation opera-
tion
A service operation that accepts a customisation request and
returns a customisation response
Customisation opera-
tions description
WSVL description customisation operations
(Valid) Customisation
request
A customisation message which is created by a service
consumer and contains a set of selected features and a set of
disabled features (i.e. a feature configuration)
Complete ~ A customisation request which contains a complete feature
configuration
Inferred ~ A customisation request which is inferred from an original
customisation request by analysing restrictions defined in a
feature model to add more feature(s) to either the selected
feature set or the disabled feature set or both
Normalised ~ A customisation request resulted from an original customisa-
tion request by removing all mandatory features from the
selected feature set
Optimised ~ The most complete and most compact form of a customisa-
tion request which is both semantically equivalent to the
original customisation request and cannot be further inferred
or normalised
Partial ~ A customisation request which contains a partial feature
configuration
Customisation re-
sponse
A customisation message produced by a service provider as
the result of service customisation. A customisation response
generally contain information about the WSDL description of
a determined service variant or the WSVL description of a
refined customisable service
D
Appendix D: Glossary
241
Dependencies descrip-
tion
The capturing of variability dependencies
Determined service
variant
A service variant resulted from customising a service with a
complete customisation request
Domain artefact Reusable software artefacts created during the domain
engineering process
Domain engineering
process
One of two processes for software development in SPL. The
domain engineering process focuses on the development of
reusable assets for a SPL. The other process is Application
engineering process.
Dynamic service
customisation
The customisation of a service and the derivation of a service
variant at runtime
E
Exposed variability Variability in the service interface
External variability Variability in a SPL that is visible to consumers
F
Feature cardinality The lower bound and the upper bound for a feature to appear
in one feature configuration
Feature configuration A set of selected variant features and a set of disabled variant
features. Feature configurations completely or partially
resolve variability within a feature model
Complete ~ A feature configuration which is resulted from a complete
resolution of variability in a feature model
Partial ~ A feature configuration which is resulted from a partial
resolution of variability in a feature model
Feature constraint An exclude/require relationship between two features across
the feature tree
Feature group A group of features (aka. grouped features) which are
associated with one parent feature and a group cardinality
FeatureMapping
annotation
Our extension of JAX-WS for addressing variability in the
service skeleton
Feature mapping
description
WSVL description - feature mapping
Feature model A hierarchical structure of features with cross-tree constraints
for capturing variability at the requirement level
Appendix D: Glossary
242
Full service capability
(description)
See service capability description
G
Group cardinality The lower bound and the upper bound of the number of child
features to be included in one feature configuration when the
parent feature is selected.
Grouped feature A variant feature which belongs to one feature group
I
Internal variability Variability in a SPL that is the concern for only the SPL
provider
M
Mandatory feature A feature which appears in all feature configurations
O
Optional feature A variant feature whose feature cardinality is [0-1]
P
Partner exposed
variability
Exposed variability of a partner service
Partner variability Variability in the interaction between a composite service and
partner services.
Partner variant feature Variant features in the feature model of a partner service
Presence condition A propositional formula of variant features to specify the
availability of a a software variant in a service variant. It is
expressed as If the variant features A1, A2,, An are
selected and the variant features B1, B2,, Bm are disabled,
this variant capability is available.
Product derivation The resolution of variability in reusable assets of a SPL to
produce software artefacts specific to one product
R
Recursive service
customisation
A situation when the customisation of a composite service
requires the customisation of partner services, recursively
Appendix D: Glossary
243
Refinement relation-
ship
The relationship between variability at a level of abstraction
and variability at a lower level of abstraction. In any software
system, variability is step-wise expanded from the require-
ment level, through the architectural level, to the
implementation level
Refined customisable
service
The result of customising a service with a partial customisa-
tion request
Runtime customisation
and management
engine
A component of the service provisioning architecture which is
responsible for the dynamic derivation and deployment of
service variants
Runtime engine A short expression for runtime customisation and manage-
ment engine
S
Service capability
description
WSVL description - service capability
Service customisation
function
One of three functions performed by a customisable service.
This function allows service consumers to customise the
service and derive service variants. The other two functions
are variability communication function and variant provision-
ing function
Service variability The ability of a service to incorporate multiple service
variants in its capability
Service variability
reuse
The use of the service variability provided by a partner
service in modeling variability in a composite service
Service variant A variation of a service that contains specific service capabili-
ties matching requirements of a particular service consumer
Service variant deriva-
tion
The generation of service variants by resolving variability in
the implementation of a service
Software variability The ability of a software system to be efficiently extended,
changed, customized or configured for use in a particular
context
Software variant Variant in domain artefacts
Staged instantiation Variability is resolved at the highest level of abstraction and
is automatically propagated to the resolve variability at the
lower levels of abstraction by exploiting the refinement
relationships
V
Appendix D: Glossary
244
Variability
~ capturing see variability modeling
~ communication A mechanism for describing and exchanging variability
information between service providers and service consumers
in order to facilitate the modeling and instantiation of varia-
bility at the service consumer side, as well as propagating the
consequence of variability instantiation toward the service
provider
~ constraint See variability dependencies
~ dependencies exclude or require relations when binding variants to varia-
tion points
~ information Information related to variability such as information about
variation points, variants and variability dependencies
~ instantiation See variability resolution
~ instantiation
decisions
See variability resolution decisions
~ inter-dependencies Variability dependencies between composition variability and
partner variability
~ intra-dependencies Variability dependencies within composition variability
~ mechanism See variability realisation
~ management A set of activities for explicitly representing variability in
software artifacts throughout the lifecycle, managing depend-
ences among different variabilities, and supporting the
instantiation of the variabilities
~ modeling The introduction of variability (or variation points and
variants) and the capturing of variability dependencies
~ propagation The propagation of variability resolution decisions from a
level of abstraction to lower levels of abstraction based on
refinement relationships
~ realisation The introduction of variation points and variants in imple-
mentation artefacts (e.g. source code)
~ realisation tech-
nique
A technique for variability realisation
~ representation The identification and introduction of variation points and
variants
Appendix D: Glossary
245
~ resolution The binding of appropriate software variants to variation
points in software artefacts
~ resolution decision A specific way of binding software variants to variation
points
Variability communi-
cation function
One of three functions performed by a customisable service.
This function enables the specification and exchange of
service variability information (i.e. a WSVL description). The
other two functions are service customisation function and
variant provisioning function
Variant A generic term used to refer to a variation which can be
bound to a variation point when variability is resolved
Variant provisioning
function
One of three functions performed by a customisable service.
This function allows a service consumer to access to and
consume a particular service variant as the result of service
customisation. The other two functions are variability
communication function and service customisation function
Variant feature A feature which might be included in or excluded from a
feature configuration depending on service consumers
selection
Variant service capa-
bility
A service capability (i.e. portType, operation, data types)
which only exists in a number of service variants
Variation point A generic term used to refer to a location in software artefacts
where variation might occur
VBPMN Variability-enabled BPMN is our extension of BPMN
metamodel for introducing variation points and variants in
BPMN process models
VBPMN model See VBPMN process model
VBPMN process model A process model instantiated from VBPMN metamodel
W
Web Service Context A concept in JAX-WS for representing runtime service
context
WSVL Web Service Variability description Language is our exten-
sion of WSDL for describing the service interface of
customisable services
WSVL description The WSVL-based service interface description of a customis-
able service
Appendix D: Glossary
246
~ customisation
endpoint
One part of a WSVL description that stores abstract and
concrete definitions of customisation operations
~ customisation
options
One part of a WSVL description that stores information about
a feature model
~ feature mapping One part of a WSVL description that describes the mapping
between variant features and variant service capabilities
~ service capability One part of a WSVL description that defines the superset of
abstract service capability for all service variants
247
References
Adam, S. and Doerr, J. (2008). The Role of Service Abstraction and Service Variability
and Its Impact on Requirements Engineering for Service-Oriented Systems. 32nd
Annual IEEE International on Computer Software and Applications
(COMPSAC).
Amazon. (2013). "Amazon Web Service (AWS)." Retrieved 19 May 2013, from
http://docs.aws.amazon.com/AWSEC2/latest/APIReference/Welcome.html.
Antkiewicz, M. and Czarnecki, K. (2004). FeaturePlugin: feature modeling plug-in for
Eclipse. The 2004 OOPSLA Workshop on Eclipse Technology eXchange,
Vancouver, British Columbia, Canada, ACM.
Apache. (2012). "Apache CXF." Retrieved 19 May 2013, from http://cxf.apache.org/.
Asikainen, T., Soininen, T. and Mnnist, T. (2004). A Koala-Based Approach for
Modelling and Deploying Configurable Software Product Families. Software
Product-Family Engineering: 225-249.
Babar, M. A., Chen, L. and Shull, F. (2010). "Managing Variability in Software Product
Lines." IEEE Software 27(3): 89-91, 94.
Bachmann, F., Goedicke, M., Leite, J., et al. (2004). A Meta-model for Representing
Variability in Product Family Development. Software Product Family
Engineering: 66-80.
Balani, N. and Hathi, R. (2009). Apache CXF Web Service Development, Packt
Publishing.
Baresi, L. and Guinea, S. (2007). Dynamo and Self-Healing BPEL Compositions. 29th
International Conference on Software Engineering (ICSE) - Companion
Baresi, L. and Guinea, S. (2011). "Self-Supervising BPEL Processes." IEEE Transactions
on Software Engineering 37(2): 247-263.
Baresi, L., Guinea, S. and Pasquale, L. (2012). "Service-Oriented Dynamic Software
Product Lines with DyBPEL." Computer 45(10): 42-48.
Barros, A., Decker, G. and Grosskopf, A. (2007). Complex Events in Business Processes.
Business Information Systems. W. Abramowicz, Springer Berlin / Heidelberg.
4439: 29-40.
Barros, A., Allgaier, M., Charfi, A., et al. (2011). Diversified Service Provisioning in
Global Business Networks. Annual SRII Global Conference.
Barros, A. P. and Dumas, M. (2006). "The Rise of Web Service Ecosystems." IT
Professional 8(5): 31-37.
Batory, D. (2005). Feature Models, Grammars, and Propositional Formulas. Software
Product Lines. H. Obbink and K. Pohl, Springer / Heidelberg. 3714: 7-20.
Batory, D., Benavides, D. and Ruiz-Cortes, A. (2006). "Automated analysis of feature
models: challenges ahead." Communications of the ACM 49(12): 45-47.
Bayer, J., Gerard, S., Haugen, ., et al. (2006). Consolidated Product Line Variability
Modeling. Software Product Lines: 195-241.
Becker, M. (2003). Towards a General Model of Variability in Product Families.
Proceedings of the 1st Workshop on Software Variability Management,
Groningen, Netherlands.
Benavides, D., Trujillo, S. and Trinidad, P. (2005). On the Modularization of Feature
Models. 1st European Workshop on Model Transformation.
Benavides, D., Segura, S., Trinidad, P., et al. (2006). "A first step towards a framework
for the automated analysis of feature models."
Benavides, D., Segura, S. and Ruiz-Corts, A. (2010). "Automated analysis of feature
models 20 years later: A literature review." Information Systems 35(6): 615-636.
Benavides, D., Duarte, J. A. G., Galn, J. G., et al. (2012). "FeAture Model Analyser
(FAMA) framework." Retrieved 19 May 2013, from http://www.isa.us.es/fama/.
References
248
Berre, D. L. (2013). "Sat4j." Retrieved 19 May 2013, from http://www.sat4j.org/.
Bosch, J. (1999). "Superimposition: a component adaptation technique." Information and
Software Technology 41(5): 257-273.
Bosch, J. (2009). From software product lines to software ecosystems. Proceedings of the
13th International Software Product Line Conference. San Francisco, California,
Carnegie Mellon University.
Bosch, J. and Capilla, R. (2012). "Dynamic Variability in Software-Intensive Embedded
System Families." Computer 45(10): 28-35.
Bosch, J. and Capilla, R. (2012). "From Static to Dynamic and Extensible Variability in
Software-Intensive Embedded System Families." Computer PP(99): 1-1.
Capilla, R. and Bosch, J. (2011). "The Promise and Challenge of Runtime Variability."
Computer 44(12): 93-95.
Cardellini, V., Colajanni, M. and Yu, P. S. (1999). "Dynamic load balancing on Web-
server systems." Internet Computing, IEEE 3(3): 28-39.
Cechticky, V., Pasetti, A., Rohlik, O., et al. (2004). XML-Based Feature Modelling.
Software Reuse: Methods, Techniques and Tools: 101-114.
Cetina, C., Giner, P., Fons, J., et al. (2009). "Autonomic Computing through Reuse of
Variability Models at Runtime: The Case of Smart Homes." Computer 42(10):
37-43.
Chang, S. H. and Kim, S. D. (2007). A Variability Modeling Method for Adaptable
Services in Service-Oriented Computing. International Software Product Line
Conference, IEEE Computer Society.
Chappell, D. (2004). Enterprise Service Bus, O'Reilly Media, Inc.
Charfi, A. and Mezini, M. (2004). Hybrid web service composition: business processes
meet business rules. Proceedings of the 2nd International Conference on Service
Oriented Computing (ICSOC). New York, NY, USA, ACM.
Charfi, A. and Mezini, M. (2007). "AO4BPEL: An Aspect-oriented Extension to BPEL."
World Wide Web 10(3): 309-344.
Charfi, A., Mller, H. and Mezini, M. (2010). Aspect-Oriented Business Process
Modeling with AO4BPMN. Modelling Foundations and Applications. T. Khne,
B. Selic, M.-P. Gervais and F. Terrier, Springer Berlin / Heidelberg. 6138: 48-61.
Chastek, G., Ferber, S., Haag, J., et al. (2002). Feature Interaction and Dependencies:
Modeling Features for Reengineering a Legacy Product Line. Software Product
Lines, Springer Berlin / Heidelberg. 2379: 37-60.
Chen, L., Babar, M. A. and Ali, N. (2009). Variability management in software product
lines: a systematic review. Proceedings of the 13th International Software
Product Line Conference. San Francisco, California, Carnegie Mellon University.
Chen, L., Triantafillou, P., Suel, T., et al. (2010). Model-Driven Development of Adaptive
Service-Based Systems with Aspects and Rules. Web Information Systems
Engineering (WISE), Springer Berlin / Heidelberg. 6488: 548-563.
Christensen, E., Curbera, F., Meredith, G., et al. (2001). "Web Services Description
Language (WSDL) Version 1.1." Retrieved 19 May 2013, from
http://www.w3.org/TR/wsdl.
Cohen, S. and Krut, R. (2010). Managing Variation in Services in a Software Product
Line Context. Technical Report, CMU/SEI-2010-TN-007, Software Engineering
Institute, Carnegie Mellon University.
Czarnecki, K. (2005a). Overview of Generative Software Development. Unconventional
Programming Paradigms. J.-P. Banatre, P. Fradet, J.-L. Giavitto and O. Michel,
Springer. 3566: 313-328.
Czarnecki, K. and Antkiewicz, M. (2005b). Mapping Features to Models: A Template
Approach Based on Superimposed Variants. Generative Programming and
Component Engineering. R. Gluck and M. Lowry. 3676: 422-437.
References
249
Czarnecki, K., Helsen, S. and Eisenecker, U. (2005c). "Formalizing cardinality-based
feature models and their specialization." Software Process: Improvement and
Practice 10(1): 7-29.
Czarnecki, K., Helsen, S. and Eisenecker, U. (2005d). "Staged configuration through
specialization and multi-level configuration of feature models." Software Process
Improvement and Practice 10(2): 143-169.
Czarnecki, K. and Kim, C. H. P. (2005e). Cardinality-based feature modeling and
constraints - a progress report. Proceedings of International Workshop on
Software Factories, OOPSLA, San Diego, USA.
Dawson, D., Desmarais, R., Kienle, H. M., et al. (2008). Monitoring in adaptive systems
using reflection. International Workshop on Software Enginerring for Adaptive
and Self-Managing Systems (SEAMS), Leipzig, Germany, ACM.
Didonet, M., Fabro, D., Bzivin, J., et al. (2006). Weaving Models with the Eclipse AMW
plugin. Eclipse Modeling Symposium, Eclipse Summit Europe.
Eclipse. (2012a). "Eclipse Graphical Modeling Framework (GMF)." Retrieved 19 May
2013, from http://www.eclipse.org/modeling/gmp/.
Eclipse. (2012b). "Eclipse Modeling Framework (EMF)." Retrieved 19 May 2013, from
http://eclipse.org/modeling/emf/.
En, N. and Srensson, N. (2004). An Extensible SAT-solver. Theory and Applications of
Satisfiability Testing. E. Giunchiglia and A. Tacchella, Springer Berlin /
Heidelberg. 2919: 333-336.
Fan, S. and Zhang, N. (2006). Feature model based on description logics. Knowledge-
Based Intelligent Information and Engineering Systems, Springer.
Galster, M. and Eberlein, A. (2011). Identifying Potential Core Assets in Service-Based
Systems to Support the Transition to Service-Oriented Product Lines. 18th IEEE
International Conference and Workshops on Engineering of Computer Based
Systems (ECBS).
Gamma, E., Helm, R., Johnson, R., et al. (1995). Design patterns: elements of reusable
object-oriented software, Addison-Wesley Longman Publishing Co., Inc.
Ghaddar, A., Tamzalit, D., Assaf, A., et al. (2012). Variability as a Service: Outsourcing
Variability Management in Multi-tenant SaaS Applications. Advanced
Information Systems Engineering. J. Ralyt, X. Franch, S. Brinkkemper and S.
Wrycza, Springer Berlin / Heidelberg. 7328: 175-189.
Gottschalk, F., van der Aalst, W., Jansen-Vullers, M., et al. (2008). "Configurable
Workflow Models." International Journal of Cooperative Information Systems
17(02): 177.
Griss, M. L., Favaro, J. and Alessandro, M. d. (1998). Integrating Feature Modeling with
the RSEB. International Conference on Software Reuse, IEEE Computer Society.
Groefsema, H., Bulanov, P. and Aiello, M. (2011). Declarative Enhancement Framework
for Business Processes. Service-Oriented Computing. G. Kappel, Z. Maamar and
H. Motahari-Nezhad, Springer Berlin / Heidelberg. 7084: 495-504.
Gurp, J. V., Bosch, J. and Svahnberg, M. (2001). On the Notion of Variability in Software
Product Lines. Proceedings of the Working IEEE/IFIP Conference on Software
Architecture, IEEE Computer Society.
Hadaytullah, Koskimies, K. and Systa, T. (2009). Using Model Customization for
Variability Management in Service Compositions. IEEE International Conference
on Web Services (ICWS).
Hallerbach, A., Bauer, T. and Reichert, M. (2009). Guaranteeing Soundness of
Configurable Process Variants in Provop. IEEE Conference on Commerce and
Enterprise Computing (CEC).
Hallerbach, A., Bauer, T. and Reichert, M. (2010). "Capturing variability in business
process models: the Provop approach." Software Maintenance and Evolution:
Research and Practice 22(6-7): 519-546.
References
250
Halmans, G. and Pohl, K. (2003). "Communicating the variability of a software-product
family to customers." Software and Systems Modeling 2(1): 15-36.
Hans Weigand, W.-J. v. d. H., Marcel Hiel (2008). Rule-Based Service Composition and
Service-Oriented Business Rule Management. Interdisciplinary Workshop on
Regulations Modelling and Deployment, Montpellier, France.
Hermosillo, G., Seinturier, L. and Duchien, L. (2010). Creating Context-Adaptive
Business Processes. Service-Oriented Computing. P. Maglio, M. Weske, J. Yang
and M. Fantinato, Springer Berlin, Heidelberg. 6470: 228-242.
Jaejoon Lee, D. M., Matthias Naab, Minseong Kim, Sooyong Park (2007). Identifying
and Specifying Reusable Services of Service Centric Systems Through Product
Line Technology. Proceedings of the first Workshop on Service Oriented
Architecture and Product Lines (SOAPL).
Jaroucheh, Z., Liu, X. and Smith, S. (2010). Apto: A MDD-Based Generic Framework for
Context-Aware Deeply Adaptive Service-Based Processes. IEEE International
Conference on Web Services (ICWS).
Jarzabek, S. and Zhang, H. (2001). XML-Based Method and Tool for Handling Variant
Requirements in Domain Models. Proceedings of the Fifth IEEE International
Symposium on Requirements Engineering, IEEE Computer Society: 166.
Jiang, J., Ruokonen, A. and Systa, T. (2005). Pattern-based Variability Management in
Web Service Development. Proceedings of the Third European Conference on
Web Services, IEEE Computer Society.
Jing, S., Hongyu, Z., Yuan, F., et al. (2005). Formal semantics and verification for
feature modeling. Engineering of Complex Computer Systems, 2005. ICECCS
2005. Proceedings. 10th IEEE International Conference on.
Jordan, D. and Evdemon, J. (2007). "Web Services Business Process Execution Language
(WS-BPEL) Version 2.0." Retrieved 19 May 2013, from http://docs.oasis-
open.org/wsbpel/2.0/wsbpel-v2.0.html.
Jouault, F., Allilaire, F., Bzivin, J., et al. (2008). "ATL: A model transformation tool."
Science of Computer Programming 72(1-2): 31-39.
Juse, K. S., Kounev, S., Buchmann, A., et al. (2003). PetStore-WS: Measuring the
Performance Implications of Web Services. Proceedings of the International
Conference of the Computer measurement Group.
Kang, K. C., Cohen, S. G., Hess, J. A., et al. (1990). Feature-Oriented Domain Analysis
(FODA) Feasibility Study. Technical Report. Pennsylvania, Software
Engineering Institute, CMU: 161.
Kang, K. C., Kim, S., Lee, J., et al. (1998). "FORM: A feature-oriented reuse method
with domain-specific reference architectures." Annals of Software Engineering
5(1): 143-168.
Kang, K. C., Jaejoon, L. and Donohoe, P. (2002). "Feature-oriented product line
engineering." Software 19(4): 58-65.
Kapuruge, M., Han, J. and Colman, A. (2010). Support for Business Process Flexibility in
Service Compositions: An Evaluative Survey. 21st Australian Software
Engineering Conference (ASWEC).
Koning, M., Sun, C.-a., Sinnema, M., et al. (2009). "VxBPEL: Supporting variability for
Web services in BPEL." Information and Software Technology 51(2): 258-269.
Kotamraju, J. (2009). "The Java API for XML-Based Web Services (JAX-WS) 2.2."
Retrieved 19 May 2013, from http://jcp.org/jsr/detail/224.jsp.
La Rosa, M., Dumas, M., ter Hofstede, A. H. M., et al. (2011). "Configurable multi-
perspective business process models." Information Systems 36(2): 313-340.
Lee, J. and Muthig, D. (2006). "Feature-oriented variability management in product line
engineering." Communication of the ACM 49(12): 55-59.
References
251
Lee, K., Kang, K. and Lee, J. (2002). Concepts and Guidelines of Feature Modeling for
Product Line Software Engineering. Software Reuse: Methods, Techniques, and
Tools: 62-77.
Liang, H., Sun, W., Zhang, X., et al. (2006). A Policy Framework for Collaborative Web
Service Customization. IEEE International Symposium on Service-Oriented
System Engineering, IEEE Computer Society.
Liu, H. (2012). "Amazon data center size." Retrieved 19 May 2013, from
http://huanliu.wordpress.com/2012/03/13/amazon-data-center-size/.
Lnn, C.-M., Uppstrm, E., Wohed, P., et al. (2012). Configurable Process Models for
the Swedish Public Sector. Advanced Information Systems Engineering. J.
Ralyt, X. Franch, S. Brinkkemper and S. Wrycza, Springer Berlin / Heidelberg.
7328: 190-205.
Machado, I., Bonifacio, R., Alves, V., et al. (2011). Managing variability in business
processes: an aspect-oriented approach. International Workshop on Early
Aspects, Porto de Galinhas, Brazil, ACM.
Mahdavi-Hezavehi, S., Galster, M. and Avgeriou, P. (2012). "Variability in quality
attributes of service-based software systems: a systematic literature review."
Information and Software Technology(0).
Marcos, E., Castro, V. d. and Vela, B. (2003). Representing Web Services with UML: A
Case Study. Service Oriented Computing. M. E. Orlowska, S. Weerawarana, M.
P. Papazoglou and J. Yang, Springer. 2910: 17-27.
Mari, F. (2009). "Formalization and Implementation of Modern SAT Solvers." Journal of
Automated Reasoning 43(1): 81-119.
Masamitsu, J. (2006). "Presenting the permanent generation." Retrieved 19 May 2013,
from
https://blogs.oracle.com/jonthecollector/entry/presenting_the_permanent_generat
ion.
McGregor, J. D., Northrop, L. M., Jarrad, S., et al. (2002). "Initiating software product
lines." IEEE Software 19(4): 24-27.
Mendona, M., Cowan, D., Malyk, W., et al. (2008). "Collaborative Product
Configuration: Formalization and Efficient Algorithms for Dependency
Analysis." Journal of Software 3(2): 69-82.
Mietzner, R. (2008a). Using Variability Descriptors to Describe Customizable SaaS
Application Templates. Technical Report 2008/01, University of Stuttgart.
Mietzner, R. and Leymann, F. (2008b). Generation of BPEL Customization Processes for
SaaS Applications from Variability Descriptors. IEEE International Conference
on Services Computing (SCC).
Mietzner, R., Metzger, A., Leymann, F., et al. (2009). Variability modeling to support
customization and deployment of multi-tenant-aware Software as a Service
applications. Proceedings of the 2009 ICSE Workshop on Principles of
Engineering Service Oriented Systems, IEEE Computer Society.
Mohabbati, B., Gaevi, D., Hatala, M., et al. (2011). A Quality Aggregation Model for
Service-Oriented Software Product Lines Based on Variability and Composition
Patterns. Service-Oriented Computing. G. Kappel, Z. Maamar and H. Motahari-
Nezhad, Springer Berlin / Heidelberg. 7084: 436-451.
Montangero, C., Reiff-Marganiec, S. and Semini, L. (2011). Model-Driven Development
of Adaptable Service-Oriented Business Processes. Rigorous Software
Engineering for Service-Oriented Systems. M. Wirsing and M. Hlzl, Springer
Berlin / Heidelberg. 6582: 115-132.
Moustafa, A. and Zhang, M. (2012). Towards Proactive Web Service Adaptation.
Advanced Information Systems Engineering. J. Ralyt, X. Franch, S.
Brinkkemper and S. Wrycza, Springer Berlin / Heidelberg. 7328: 473-485.
References
252
Nancy, A. (2008). Enabling On-the-Fly Business Process Composition through an Event-
Based Approach. Proceedings of the 41st Annual Hawaii International
Conference on System Sciences.
Nezhad, H. R. M., Benatallah, B., Martens, A., et al. (2007). Semi-automated adaptation
of service interactions. Proceedings of the 16th International Conference on
World Wide Web. Banff, Alberta, Canada, ACM.
Nguyen, T. and Colman, A. (2010). A Feature-Oriented Approach for Web Service
Customization. International Conference on Web Services (ICWS), Los
Alamitos, CA, USA, IEEE Computer Society.
Nguyen, T. (2011a). "WSVL Homepage." Retrieved 19 May 2013, from
https://sites.google.com/site/swinwsvl/.
Nguyen, T., Colman, A. and Han, J. (2011b). A Web Services Variability Description
Language (WSVL) for Business Users Oriented Service Customization. Web
Information System Engineering - International Workshop on User-Focused
Service Engineering, Consumption and Aggregation (USECA).
Nguyen, T., Colman, A. and Han, J. (2011c). Modeling and Managing Variability in
Process-Based Service Compositions. Service-Oriented Computing. G. Kappel,
Z. Maamar and H. Motahari-Nezhad, Springer. 7084: 404-420.
Nguyen, T., Colman, A., Talib, M. A., et al. (2011d). Managing service variability: state
of the art and open issues. International Workshop on Variability Modeling of
Software-Intensive Systems (VaMoS), Namur, Belgium, ACM.
Nguyen, T., Colman, A. and Han, J. (2012a). Enabling the Delivery of Customizable Web
Services. IEEE 19th International Conference on Web Services (ICWS),
Honolulu, Hawaii.
Nguyen, T., Colman, A. and Han, J. (2012b). Comprehensive Variability Modeling and
Management for Customizable Process-Based Service Compositions. Handbook
on Web Services. A. Bouguettaya, Q. Z. Sheng and F. Daniel, Springer.
Ognjanovic, I., Mohabbati, B., Gaevic, D., et al. (2012). A Metaheuristic Approach for
the Configuration of Business Process Families. International Conference on
Services Computing (SCC).
OMG. (2011a). "Business Process Model and Notation (BPMN) Version 2.0." Retrieved
19 May 2013, from http://www.omg.org/spec/BPMN/2.0/.
OMG. (2011b). "Business Process Model and Notation (BPMN) Version 2.0.": Mapping
BPMN models to WS-BPEL Retrieved 19 May 2013, from
http://www.omg.org/spec/BPMN/2.0/.
Oracle. (2012). "The Java tutorial - Annotations." Retrieved 19 May 2013, from
http://docs.oracle.com/javase/tutorial/java/javaOO/annotations.html.
Oracle. (2013). "JConsole." Retrieved 19 May 2013, from
http://docs.oracle.com/javase/6/docs/technotes/guides/management/mxbeans.html
.
Ouyang, C., Dumas, M., H.M, A., et al. (2008). Pattern-Based Translation of BPMN
Process Models to BPEL Web Services, IGI Global: 42-62.
Papazoglou, M. P. and Heuvel, W.-J. (2007). "Service oriented architectures:
approaches, technologies and research issues." The VLDB Journal 16(3): 389-
415.
Perrouin, G., Klein, J., Guelfi, N., et al. (2008). Reconciling Automation and Flexibility in
Product Derivation. International Software Product Line Conference (SPLC).
Pohl, K., Bockle, G. and Linden, F. J. v. d. (2005). Software Product Line Engineering:
Foundations, Principles and Techniques, Springer-Verlag New York, Inc.
Provost, W. (2003). "WSDL First." Retrieved 19 May 2013, from
http://webservices.xml.com/pub/a/ws/2003/07/22/wsdlfirst.html.
References
253
Razavian, M. and Khosravi, R. (2008). Modeling Variability in Business Process Models
Using UML. International Conference on Information Technology: New
Generations.
Riebisch, M., Bllert, K., Streitferdt, D., et al. (2002). Extending Feature Diagrams With
Uml Multiplicities. the 6th World Conference on Integrated Design and Process
Technology (IDPT2002).
Schmid, K. and John, I. (2004). "A customizable approach to full lifecycle variability
management." Science of Computer Programming 53(3): 259-284.
Schnieders, A. and Puhlmann, F. (2006). Variability Mechanisms in E-Business Process
Families. International Conference on Business Information Systems.
Schnieders, A. and Puhlmann, F. (2007). Variability Modeling and Product Derivation in
E-Business Process Families. Technologies for Business Information Systems.
W. Abramowicz and H. C. Mayr, Springer Netherlands: 63-74.
Segura, S. (2008). Automated analysis of feature models using atomic sets. Proceedings
of the International Software Product Line Conference (SPLC), Lero Int. Science
Centre, University of Limerick, Ireland.
Sinnema, M., Deelstra, S., Nijhuis, J., et al. (2004). COVAMOF: A Framework for
Modeling Variability in Software Product Families. Software Product Lines: 25-
27.
Sinnema, M., Deelstra, S. and Hoekstra, P. (2006a). The COVAMOF Derivation Process.
Reuse of Off-the-Shelf Components, Springer Berlin / Heidelberg. 4039: 101-
114.
Sinnema, M., Deelstra, S., Nijhuis, J., et al. (2006b). Modeling Dependencies in Product
Families with COVAMOF. Proceedings of the 13th Annual IEEE International
Symposium and Workshop on Engineering of Computer Based Systems, IEEE
Computer Society.
Sinnema, M. and Deelstra, S. (2007). "Classifying variability modeling techniques."
Information and Software Technology 49(7): 717-739.
Stollberg, M. and Muth, M. (2009). Service Customization by Variability Modeling.
Service Oriented Computing (ICSOC) Workshops - International Workshop on
Engineering Service-Oriented Applications.
Stollberg, M. and Muth, M. (2010). "Efficient Business Service Consumption by
Customization with Variability Modelling." System Integration 1(3): 17-32.
Sun, C.-a. and Aiello, M. (2008). Towards Variable Service Compositions Using
VxBPEL. High Confidence Software Reuse in Large Systems: 257-261.
Sun, C.-a., Rossing, R., Sinnema, M., et al. (2009). "Modeling and managing the
variability of Web service-based systems." System and Software 83(3): 502-516.
Svahnberg, M., Gurp, J. v. and Bosch, J. (2005). "A taxonomy of variability realization
techniques." Software Practice and Experience 35(8): 705-754.
Thum, T., Batory, D. and Kastner, C. (2009). Reasoning about edits to feature models.
Software Engineering, 2009. ICSE 2009. IEEE 31st International Conference on.
Tosic, V., Patel, K. and Pagurek, B. (2002). WSOL - Web Service Offerings Language.
Web Services, E-Business, and the Semantic Web. C. Bussler, R. Hull, S.
McIlraithet al. 2512: 57-67.
Tosic, V., Pagurek, B., Patel, K., et al. (2003). Management Applications of the Web
Service Offerings Language (WSOL). Advanced Information Systems
Engineering. J. Eder and M. Missikoff, Springer Berlin / Heidelberg. 2681: 1029-
1029.
Tsang, E. (1993). Foundations of constraint satisfaction, Academic press London.
van der Aalst, W. M. P. (1999). "Formalization and verification of event-driven process
chains." Information and Software Technology 41(10): 639-650.
van der Aalst, W. M. P. and ter Hofstede, A. H. M. (2005). "YAWL: yet another workflow
language." Information Systems 30(4): 245-275.
References
254
van der Aalst, W. M. P. (2011). Business Process Configuration in the Cloud: How to
Support and Analyze Multi-tenant Processes? IEEE European Conference on
Web Services (ECOWS).
Wang, H., Li, Y. F., Sun, J., et al. (2005). A semantic web approach to feature modeling
and verification. Workshop on Semantic Web Enabled Software Engineering
(SWESE05).
Wang, H. H., Li, Y. F., Sun, J., et al. (2007). "Verifying feature models using OWL." Web
Semantics: Science, Services and Agents on the World Wide Web 5(2): 117-129.
Weidmann, M., Koetter, F., Kintz, M., et al. (2011). Adaptive Business Process Modeling
in the Internet of Services (ABIS). International Conference on Internet and Web
Applications and Services.
Whaley, J. (2007). "JavaBDD." Retrieved 19 May 2013, from
http://javabdd.sourceforge.net/.
White, J., Schmidt, D. C., Benavides, D., et al. (2008). Automated diagnosis of product-
line configuration errors in feature models. Software Product Line Conference,
2008. SPLC'08. 12th International, IEEE.
White, J., Dougherty, B., Schmidt, D. C., et al. (2009). Automated reasoning for multi-
step feature model configuration problems. Proceedings of the 13th International
Software Product Line Conference, Carnegie Mellon University.
White, S. A. (2005). "Using BPMN to Model a BPEL Process." Retrieved 19 May 2013,
from http://www.bptrends.com/publicationfiles/03-
05%20wp%20mapping%20bpmn%20to%20bpel-%20white.pdf.
Yukyong, K. and Kyung-Goo, D. (2008). Adaptable Web Services Modeling Using
Variability Analysis. International Conference on Convergence and Hybrid
Information Technology.
Zaid, L. A., Kleinermann, F. and De Troyer, O. (2009). Applying semantic web
technology to feature modeling. Proceedings of the 2009 ACM symposium on
Applied Computing, ACM.
Zhang, H. and Jarzabek, S. (2004). "XVCL: a mechanism for handling variants in
software product lines." Science of Computer Programming 53(3): 381-407.