fine-grained ones. The more generic an operation
is, the harder it is to understand its semantics at de-
sign time. Therefore service providers must balance
services’ granularity and the ease of use. This cre-
ates a dilemma: flexibility versus usability. Services
must be generic enough to allow adding new features,
but not too ambiguous and confusing to service sub-
scribers.
In general, service providers can include to in-
terfaces as many operations as they want with any
granularity level each. However, this will create sev-
eral problems at the later stages of services’ lifecy-
cle. Firstly, the interface can grow. There can be
several operations that perform the same functional-
ity, but with slight difference. In such situations users
can be confused and will not know which operations
they should call. Secondly, once an operation has
been included to an interface, a service provider can-
not change (or even depreciate) it easily, since there
can be clients using it.
Thus, it is in the interests of service providers to
keep their interfaces as slim as possible. At the same
time the interfaces must be convenient to use, mean-
ing that the number of parameters must be reasonable
and the purpose of each one must be not difficult to
understand.
When there are not many operations (as in the ex-
ample of the previous subsection) service architects
can decide on their own (without any formal method)
what granularity level each operation in an interface
should have. In case there is a high number of opera-
tions a formal approach is needed. Such a technique
we will call interface balancing, since it balances an
interface’s granularity level and its usability. For now
we have not found a sound formal method of defin-
ing the appropriate degree of relaxation of an inter-
face. This will be one of the future directions of the
research.
3 RELATED WORK
In (Erlikh, 2000) Erlikh estimated that 90% of soft-
ware costs are evolution costs. The importance of the
evolution requires a systematic approach of manag-
ing an evolving software system. This is the task of
configuration management discipline (Zeller, 1997).
The most frequently used approach in the area of
software evolution is versioning. Versioning is used
to distinguish different versions of components and
libraries that are simultaneously running at the same
machine (Sommerville, 2007). The way how a ver-
sion is identified and which characteristics are in-
cluded into the computation of version identifier are
defined by a particular versioning model (Conradi and
Westfechtel, 1998).
A number of versioning methods has been prac-
tically implemented. None of them, however, has
solved the challenge of consistent software evolution
(Stuckenholz, 2005). Moreover, versioning is not the
mechanism of incompatibility resolution and does not
facilitate software substitutability. It is rather a way
to make software changes detectable from client ap-
plications. To figure out if two versions of the same
component are substitutable an approach offered in
(Lobo et al., 2005) could be used.
The works of Ponnekanti and Fox (Ponnekanti and
Fox, 2004), Hohpe and Woolf (Hohpe and Woolf,
2004) and Kaminski, Litoiu and Mueller (Kamin-
ski et al., 2006) address the incompatibility problem.
(Kaminski et al., 2006) suggests to pass calls of older
clients through a chain of adapters that compensates
the difference between the versions of a service in
terms of other operations available in the newer ver-
sion. This is a powerful solution, but it is limited to
the service side and might result in a serious perfor-
mance hit in case of long chain. (Ponnekanti and Fox,
2004) suggests a similar technique that reconciles in-
compatibility inside a client-side proxy. Instead of a
standard proxy a ”smart” proxy that bridges the gap
between the older client and the newer version must
be used. The approach is limited to the client side
and requires changing the older application. (Hohpe
and Woolf, 2004) presents message conversion as a
pattern of enterprise integration. The work is fairly
abstract without any implementation guidance.
From the business protocol standpoint the evo-
lution of a Web service is described in (Ryu et al.,
2007). The article suggests an approach to man-
age the protocol instances running according to the
old protocol version. Firstly, a protocol manager se-
lects the active instances that can migrate to the new
protocol. This is done by analyzing the protocol it-
self (static analysis) and each individual instance of
the protocol (dynamic analysis). All migrateable in-
stances can be safely switched to the newer protocol
version. Secondly, for non-migrateable instances an
adapter must be developed. In case the development
of an adapter is not feasible an individual temporary
protocol must be introduced to the instance to meet
new requirements without cancelling the ongoing in-
stance.
4 CONCLUSIONS
Over the lifecycle of a Web service its provider will
want to change it in order to keep the one up to date
GENERIC WEB SERVICES - Extending Service Scope while Preserving Backwards Compatibility
131