# Patent

## Title
Comparison between different descriptions of a web service

## Abstract

In one embodiment, a computer-implemented method for comparing first and second descriptions of a web service includes computing a distance between each type used as a parameter in the first description and each type used as a parameter in the second description. A distance is calculated between methods in each of two or more pairs of methods. Each pair includes a method in the first description and a method in the second description. The calculating is performed by comparing the parameters of the first set of methods and the second set of methods using the computed distances between types. To the calculated distance between each pair of methods is added the distance between the names of the compared methods and the distance between the returned types of the compared methods. For each method in the first description, the method in the second description with the lowest calculated distance is output.

## Background
PRIORITY
This application claims priority to Great Britain Patent Application No. 1309942.9, filed Jun. 4, 2013, and all the benefits accruing therefrom under 35 U.S.C. §119, the contents of which in its entirety are herein incorporated by reference.
BACKGROUND
The present invention relates generally to web services and, more particularly, to comparing two different descriptions of a web service.
Web services are a fundamental cornerstone of the web, providing online functionality for web applications as well as for other web services. As such, web services have become an important subject of functional testing, including security testing, type state checking, etc. An important challenge in testing web services is to ensure that existing tests, already created against a specific version of a web service, can be reused or easily maintained when the web service is updated to a newer version. The same challenge exists for the maintenance of applications based on the web service. Existing testing tools for web services propose several manual methods to deal with the change of the web service from version i to version i+1. This leads to many end user interactions in order to discover which methods and types have been changed in order to propose specific fixes for the existing artefacts.
SUMMARY
In one embodiment, a computer-implemented method for comparing descriptions of a web service includes computing a distance between each type used as a parameter in a first description of a web service and each type used as a parameter in a second description of a web service, where the first description includes a first set of methods, the second description includes a second set of methods, and each method includes one or more parameters. A distance is calculated between methods in each of two or more pairs of methods, where each pair of methods includes a method in the first description and a method in the second description, and where the calculating is performed by comparing the parameters of the first set of methods and the second set of methods using the computed distances between types. To the calculated distance between each pair of methods is added a measure of the distance between the names of the compared methods and a measure of the distance between the returned types of the compared methods. For each method in the first description, at least the method in the second description with the lowest calculated distance is output.
In another embodiment, a system for comparing descriptions of a web service includes a computer processor. The computer processor is configured to compute a distance between each type used as a parameter in a first description of a web service and each type used as a parameter in a second description of a web service, where the first description includes a first set of methods, the second description includes a second set of methods, and each method includes one or more parameters. The computer processor is further configured to calculate a distance between methods in each of two or more pairs of methods, where each pair of methods includes a method in the first description and a method in the second description, and where the calculating is performed by comparing the parameters of the first set of methods and the second set of methods using the computed distances between types. To the calculated distance between each pair of methods, the computer processor is configured to add a measure of the distance between the names of the compared methods and a measure of the distance between the returned types of the compared methods. For each method in the first description, at least the method in the second description with the lowest calculated distance is output.
In yet another embodiment, a computer program product for comparing descriptions of a web service includes a computer readable storage medium having program instructions embodied therewith. The program instructions are executable by a processor to cause the processor to perform a method. The method includes computing a distance between each type used as a parameter in a first description of a web service and each type used as a parameter in a second description of a web service, where the first description includes a first set of methods, the second description includes a second set of methods, and each method includes one or more parameters. Further according to the method, a distance is calculated between methods in each of two or more pairs of methods, where each pair of methods includes a method in the first description and a method in the second description, and where the calculating is performed by comparing the parameters of the first set of methods and the second set of methods using the computed distances between types. To the calculated distance between each pair of methods is added a measure of the distance between the names of the compared methods and a measure of the distance between the returned types of the compared methods. For each method in the first description, at least the method in the second description with the lowest calculated distance is output.
Additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention. For a better understanding of the invention with the advantages and the features, refer to the description and to the drawings.



BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
Some embodiments of the present disclosure will now be described, by way of example only, with reference to the following drawings, in which:
FIG. 1 is a flowchart of a process for comparing two different descriptions of a web service, according to an embodiment;
FIG. 2 is a schematic diagram of a computer and two descriptions of a web service, according to an embodiment;
FIG. 3 is a table showing distance measurements for comparisons of methods in two descriptions of a web service, according to an embodiment; and
FIG. 4 is a schematic diagram of two different descriptions of a web service, according to an embodiment.



DETAILED DESCRIPTION
According to some embodiments of this disclosure, an identification system or method can identify which methods in a later version of a description of a web service most likely correspond to particular methods in an earlier version of the description of the web service. This may address the problem of updating existing applications or existing tests applications or application suites when a web service description changes from version i to version i+1, with a reduced quantity of end user operations. Based on the use of a distance between Extensible Markup Language (XML) Scheme Definition (XSD) types that compose the input and output parameters of a service method, the identification system and method may identify the updated method in the version i+1 of the description.
The distance between types may be represented as a numerical value, which reflects the difference between the types being compared. The paper “Similarity of XML Schema Definitions,” by Irena Mlynkova, provides one methodology of how the distance between two different types can be represented as a numerical value.
According to some embodiments, the status of a service method may be identified as, for example, having been deleted (i.e., this method no longer exists) or updated (i.e., in terms of input/output and changes in the sub-types). Based on an embodiment, a service method may be projected into a set of vectors of parameters, and a distance may be measured between methods in the earlier description compared to the later description, thus obtaining the best method candidates in the later version. Based on a delta analysis of the updates to the XSD types and the existing test suites (e.g., existing instances of XML calls against the web service), the identification system may pick up values from previous artefacts that still make sense in the updated method call. As a result, an end user's work for the version i of the web service may be at least partially preserved and moved into the version i+1 of the web service.
In some embodiments, the activity of calculating a distance between each method in the first description and each method in the second description includes selecting the minimum value generated from a set of distance measurements that include all combinations of the parameters in the compared methods. The most accurate distance measurement, when comparing two methods, may be generated by capturing the lowest value from a set of all of the combinations of the distance measurements. For example, if methodA(a,b) is compared to methodB(x,y), then two possible combinations of parameters are possible: (1) distance(a,x)+distance(b,y), and (2) distance(a,y)+distance(b,x). The lower of these two values may be returned as the distance between methodA and methodB. If the methods have more than two parameters, then a higher quantity of possible combinations may exist, but the same methodology may apply, in that when considering all of the possible parameter combinations, the identification system may use only the lowest distance value that is returned.
The act of outputting, for each method in the earlier description, at least the method in the later description with the lowest calculated distance may include outputting, for each method in the earlier description, an ordered list of methods in the second description with the lowest calculated distances. The process may be designed to identify, for each method in the earlier description, the best match of a method in the later description. However, there is no reason that only one candidate (i.e., the best candidate) has to be returned. An ordered list may therefore be provided that orders the matching methods in the later description according to their respective distances from the method in the earlier description. This can allow a user to consider different options, and the user may decide that a different method from the later description is actually more likely to be the match for the method in the earlier description, than the method with the shortest distance.
In some embodiments, a calculated distance may include a measure of the distance between the names of the compared methods. Thus, calculating an overall distance between two methods may include generating a vector representation of the calculated distance based on a parameter comparison, generating a measure of the distance between the names of the compared methods, and generating a measure of the distance between the returned types of the compared methods. Vector representations can be used to accurately determine the overall distance score, taking into account the different characteristics of the methods. Such characteristics may include the parameters of the methods, the names of the methods, and the types returned by the methods. The identification system may calculate a Cartesian product of these three calculated distances.
FIG. 1 shows a method for comparing two different descriptions of a web service, according to some embodiments of this disclosure, where each description includes a set of methods and each method includes one or more parameters. At block S1 of the method, a distance may be computed between each type used as a parameter in a first description (i.e., an earlier description) and each type used as a parameter in a second description (i.e., a later description). A numerical value may be obtained for each pair of types that are present in the parameters of the methods. For example, if the first description has methods referring to types X and Y and the second description has methods referring to types A and B, then four distances may be computed: (X,A) (X,B) (Y,A) and (Y,B).
Block S2 includes calculating a distance between each method in the first description and each method in the second description by comparing the parameters of the compared methods using the computed distances between types. This process will be described in more detail below, but essentially every method in the first description may be compared to every method in the second description, with a single distance measure being generated for each method pair. That single distance measure may be based on the computed values from block S1. So for example, if methodV1 (type X) is compared to methodV2 (type A, type B), then the outputted distance measure may be the lower of the two distance values, (X,A) and (X,B), generated in block S1.
Block S3 includes adding to each calculated distance a measure of the distance between the names of the compared methods. Then, at block S4, a measure of the distance between the returned types of the compared methods may be added to each calculated distance. Block S5 includes outputting, for each method in the first description, at least the method in the second description with the lowest calculated distance. In some embodiments, however, multiple methods of the second description may be returned, each with its corresponding calculated distance. In this way, for each method in the earlier description, the identification system may identify the most likely matching candidate(s) in the second description, which may be displayed to a user.
FIG. 2 shows an example desktop computer 10 that includes a display device 12, a processor 14, and a user interface device 16. The processor 14 is controlled by a computer program product that is stored on a computer readable medium 18, which is a CD-ROM. The computer program product comprises instructions that are used to control the operation of the processor 14. The processor may be configured to compare two different descriptions 20 and 22 of a web service. The first description 20 is version i of the web service and the second description 22 is the version i+1 of the web service. The first description 20 is the earlier version of the web service and the second description 22 is the later (i.e., updated and changed) version of the web service.
Once a web service has been changed and the description of the web service has been changed accordingly, then applications that used the earlier web service and testing tools that were accurate for that web service are no longer safe to use and need to be adjusted to take into account the changes made in the new web service. The descriptions 20 and 22 may each include a set of methods, where each method includes one or more parameters. In order to facilitate the updating of application and testing tools, it is desirable to know which methods in the old description 20 correspond to which methods in the new description 22.
The processor 14 may be configured to identify those methods in the second description 22 that correspond to the methods in the first description 20. To this end, each method in the first description 20 may be compared to each method in the second description 22. A numerical distance value may be assigned to each method pair, and for each method in the first description 20, there may be a best candidate method in the second description 22 matching this method. The user may be presented with a display that shows the numerical matches, either showing just the best match or by showing an ordered list of candidates, for each method in the earlier version of the description 20, which can be used to select the appropriate matching method.
In the context of a web service description file standard, such as Web Service Definition Language (WSDL), the input to the processor 14 may be a WSDL file Wi and a WSDL file Wi+1. The output may be a mapping from each web service method in WSDL Wi to the most appropriate method in WSDL Wi+1. For all of the XSD types in Wi and Wi+1, the identification system may measure a distance for each type in Wi compared to each type in Wi+1.
For each method m in Wi compared to each method m′ in Wi+1, the identification system may execute the Cartesian product between an mWi vector and all the coordinate permutations of an m′Wi+1 vector. The vectors may be aligned in terms of dimensions, and where extra dimensions exist on either side (mWi or m′Wi+1), a 0 may be placed. The vector mWi may have coordinates which are 1 or 0. For instance, a coordinate may be 1 if a type exist at this place, or 0 if dimensions have been added. Vector m′Wi+1 may have coordinates that are the distance between its own type and the initial type in m, parameter by parameter in a one-to-one correspondence. For all the permutation of the parameters into the method m′ in Wi+1, the identification system may compute the Cartesian product in order to locate the arrangement that has the minimum value.
By selecting the results that minimize the product and then using the distance between the names of the methods and of the type of the output in Wi compared to the type of the outputs in Wi+1 to re-filter the results, the final result may be proposed to the end user to select the correct matching method as required. FIG. 3 shows an example of how methods m1 to m4 of a first description of a web service are compared to methods m′1 to m′5 of a second description of the web service. The table lists the distance values generated from the various different method pair comparisons. In each row of the table, the lowest distance value may indicate the method in the second description that matches most closely to the method in the first description.
The comparison of the names of the methods may be helpful to provide a notion of semantic similarity between different methods. This comparison may be performed using a Levenstein distance, which is a common algorithm used to measure the distance between strings. For example, three different methods as follows: method1 status=recover_account_status(x,y,z), method2 status=update_account(x,y,z), and method3 status=update_enduser_account(x,y,z) can be compared using the Levenstein distance, which will provide the following output: d(m1, m2)=13, d(m1, m3)=18 and d(m2, m3)=8. From this result, the identification system may determine that methods 2 and 3 are close, whereas method 1 is not close to either of the other two methods.
FIG. 4 illustrates an example relating to a web service with one method in a version 1, and two methods in a version 2. In the WSDL version 1, the method is Artefact getArtefact(Authentication, Param1, Param2), and in WSDL version 2, the methods are Token Authenticate(Authentication) and Artefact getArtefact(Param1, Param2, Token), as shown in the figure. In this example, it is assumed that the types Authentication, Param1, and Param2 are the same and that the distance between the types are D(Artefact and Token type)=10; D(Authentication and Token)=11; D(Authentication and Param1)=12; and D(Authentication and Param2)=13. It is assumed also that the distance between the name Authenticate and getArtefact is 9, calculated using the Levenstein distance.
The processor 14 may calculate the distance between Artefact getArtefact(Authentication, Param1, Param2) from version 1 of the web service description with Token Authenticate(Authentication) from version 2. To that end, the processor 14 may look at the parameters in the two methods being compared. This distance from the parameters point of view may be the minimum of Distance (Authentication, Authentication)=0, Distance (Authentication, Param1)=12, and Distance (Authentication, Param2)=13, with all of the permutation of the types having been considered. In this example, the result is 0. The processor 14 may then add the name distance so that 0+Distance(Name authenticate, Name getArtefact)=9. Then the processor 14 may add the distance related to the returned type 0+9+Distance (Artefact, Token)=0+9+10, and the final result is therefore Distance (Method getArtefact(V1), Method Authenticate(V2))=19.
The processor 14 may follow the same process to calculate the distance between Artefact getArtefact(Authentication, Param1, Param2) from version 1 with Artefact getArtefact(Param1, Param2, Token) from version 2. The processor 14 may examine the parameters of the methods being compared and the distance from the parameter point of view, and may identify the minimum of:

D(Authentication, Param1)+D(Param1,Param2)+D(Param2,Token);

D(Authentication, Param2)+D(Param1,Token)+D(Param2,Param1);

D(Authentication, Token)+D(Param1,Param1)+D(Param2,Param2); and



for all the permutations available (6 in this example). The final result in this case is D(Authentication, Token)+D(Param1, Param1)+(Param2, Param2)=11+0+0. The processor 14 may add the name distance: 11+Distance(Name getArtefact, Name getArtefact)=11+0=11; and may add the distance related to the returned type:11+Distance (Artefact, Artefact)=11+0=11. The final result is Distance (Method getArtefact(V1)/Method getArtefact(V2))=11.

As a result the identification system may construct the ordered list of best match with length for the method getArtefact(V1) which is: (1) getArtefact(V2) with a length of 11; and (2) Authenticate with a length of 19.
In terms of best match for getArtefact(V1) the invention will propose to the end user the method getArtefact(V2). The same principles are used when the WSDL version 1 and version 2 contains more methods, with more or less parameters. The results of the process executed by the processor 14 will be, for each method in version 1, a list of best matches discovered from version 2.

## Claims

1. A computer-implemented method for comparing descriptions of a web service, the method comprising:
computing a distance between each type of parameter in a first description of a web service and each type of parameter in a second description of the web service, wherein the first description comprises a first set of methods, the second description comprises a second set of methods, and each method comprises one or more parameters;
selecting two or more pairs of methods, wherein each pair of methods in the two or more pairs of methods comprises a respective first method selected from the first description of the web service and a respective second method selected from the second description of the web service;
for each of the two or more pairs of methods, calculating, by a computer processor, a respective distance between the respective first method and the respective second method in the pair of methods, wherein the calculating is performed by comparing the type of input parameters of the first set of methods in the first description of the web service and the second set of methods in the second description of the web service using the computed distances between types of parameters;
for each of the two or more pairs of methods, calculating a distance between a string representing a name of the respective first method and a string representing a name of the respective second method in the pair of methods;
adding to the calculated respective distance between the respective first method and the respective second method in each pair of methods the distance between the string representing the name of the respective first method and the string representing the name of the respective second method in the pair of methods;
for each of the two or more pairs of methods, calculating a distance between a type of parameter returned by the respective first method and a type of parameter returned by the respective second method in the pair of methods;
adding to the calculated respective distance between the respective first method and the respective second method in each pair of methods the distance between the type of parameter returned by the respective first method and the type of parameter returned by the respective second method in the pair of methods; and
outputting, for each method in the first description of the web service, a corresponding method in the second description having a lowest calculated respective distance among those paired with the method in the first description.

2. The computer-implemented method according to claim 1, wherein calculating the respective distance between methods in each of the two or more pairs of methods comprises selecting the minimum value generated from a set of distance measurements that include all combinations of the parameters in the respective first method and the respective second method.

3. The computer-implemented method according to claim 1, wherein outputting, for each method in the first description of the web service, the corresponding method in the second description comprises outputting, for each method in the first description of the web service, an ordered list of methods in the second description with the lowest calculated respective distances.

4. The computer-implemented method according to claim 1, wherein adding to the calculated respective distance between the respective first method and the respective second method of each pair of methods the distance between the string representing the name of the respective name of the respective first method and the string of the name representing the respective second method comprises generating a vector representation of the calculated respective distance based on the parameter comparison and the distance between string representing the name of the respective name of the respective first method and the string of the name representing the respective second method in the pair of methods.

5. The computer-implemented method according to claim 4, wherein adding to the calculated respective distance between the respective first method and the respective second method of each pair of methods the distance between the type of parameter returned by the respective first method and the type of parameter returned by the respective second method in the pair of methods comprises generating a vector representation of a combination of the previous vector representation and the distance between the type of parameter returned by the respective first method and the type of parameter returned by the respective second method in the pair of methods.

6. A system for comparing descriptions of a web service, the system comprising a computer processor configured to:
compute a distance between each type of parameter in a first description of a web service and each type of parameter in a second description of the web service, wherein the first description comprises a first set of methods, the second description comprises a second set of methods, and each method comprises one or more parameters;
select two or more pairs of methods, wherein each pair of methods in the two or more pairs of methods comprises a respective first method selected from the first description of the web service and a respective second method selected from the second description of the web service;
for each of the two or more pairs of methods, calculate a respective distance between the respective first method and the respective second method in the pair of methods, wherein the calculating is performed by comparing the type of input parameters of the first set of methods in the first description of the web service and the second set of methods in the second description of the web service using the computed distances between types of parameters;
for each of the two or more pairs of methods, calculating a distance between a string representing a name of the respective first method and a string representing a name of the respective second method in the pair of methods;
add to the calculated respective distance between the respective first method and the respective second method in each pair of methods the distance between the string representing the name of the respective first method and the string representing the name of the respective second method in the pair of methods;
for each of the two or more pairs of methods, calculating a distance between a type of parameter returned by the respective first method and a type of parameter returned by the respective second method in the pair of methods;
add to the calculated respective distance between the respective first method and the respective second method in each pair of methods the distance between the type of parameter returned by the respective first method and the type of parameter returned by the respective second method in the pair of methods; and
output, for each method in the first description of the web service, a corresponding method in the second description having a lowest calculated respective distance among those paired with the method in the first description.

7. The system according to claim 6, wherein the computer processor is further configured, when calculating the respective distance between methods in each of the two or more pairs of methods, to select the minimum value generated from a set of distance measurements that include all combinations of the parameters in the respective first method and the respective second method.

8. The system according to claim 6, wherein the computer processor is further configured, when outputting, for each method in the first description of the web service, the corresponding method in the second description, to output, for each method in the first description of the web service, an ordered list of methods in the second description with the lowest calculated respective distances.

9. The system according to claim 6, wherein the computer processor is further configured, when adding to the calculated respective distance between the respective first method and the respective second method of each pair of methods the distance between the string representing the name of the respective name of the respective first method and the string of the name representing the respective second method, to generate a vector representation of the calculated respective distance based on the parameter comparison and the distance between string representing the name of the respective name of the respective first method and the string of the name representing the respective second method in the pair of methods.

10. The system according to claim 9, wherein the computer processor is further configured, when adding to the calculated respective distance between the respective first method and the respective second method of each pair of methods the distance between the type of parameter returned by the respective first method and the type of parameter returned by the respective second method in the pair of methods, to generate a vector representation of a combination of the previous vector representation and the distance between the type of parameter returned by the respective first method and the type of parameter returned by the respective second method in the pair of methods.

11. A computer program product for comparing descriptions of a web service, the computer program product comprising a non-transitory computer readable storage medium having program instructions embodied therewith, the program instructions executable by a processor to cause the processor to:
compute a distance between each type of parameter in a first description of a web service and each type of parameter in a second description of the web service, wherein the first description comprises a first set of methods, the second description comprises a second set of methods, and each method comprises one or more parameters;
select two or more pairs of methods, wherein each pair of methods in the two or more pairs of methods comprises a respective first method selected from the first description of the web service and a respective second method selected from the second description of the web service:
for each of the two or more pairs of methods, calculate a respective distance between the respective first method and the respective second method in the pair of methods, wherein the calculating is performed by comparing the type of input parameters of the first set of methods in the first description of the web service and the second set of methods in the second description of the web service using the computed distances between types of parameters;
for each of the two or more pairs of methods, calculating a distance between a string representing a name of the respective first method and a string representing a name of the respective second method in the pair of methods;
add to the calculated respective distance between the respective first method and the respective second method in each pair of methods the distance between the string representing the name of the respective first method and the string representing the name of the respective second method in the pair of methods;
for each of the two or more pairs of methods, calculating a distance between a type of parameter returned by the respective first method and a type of parameter returned by the respective second method in the pair of methods;
add to the calculated respective distance between the respective first method and the respective second method in each pair of methods the distance between the type of parameter returned by the respective first method and the type of parameter returned by the respective second method in the pair of methods; and
output, for each method in the first description of the web service, a corresponding method in the second description having a lowest calculated respective distance among those paired with the method in the first description.

12. The computer program product according to claim 11, wherein calculating the respective distance between methods in each of the two or more pairs of methods comprises selecting the minimum value generated from a set of distance measurements that include all combinations of the parameters in the respective first method and the respective second method.

13. The computer program product according to claim 11, wherein outputting, for each method in the first description of the web service, the corresponding method in the second description comprises outputting, for each method in the first description of the web service, an ordered list of methods in the second description with the lowest calculated respective distances.

14. The computer program product according to claim 11, wherein adding to the calculated respective distance between the respective first method and the respective second method of each pair of methods the distance between the string representing the name of the respective name of the respective first method and the string of the name representing the respective second method comprises generating a vector representation of the calculated respective distance based on the parameter comparison and the distance between string representing the name of the respective name of the respective first method and the string of the name representing the respective second method in the pair of methods.

15. The computer program product according to claim 14, wherein adding to the calculated respective distance between each pair of methods a measure of the distance between the respective first method and the respective second method of each pair of methods the distance between the type of parameter returned by the respective first method and the type of parameter returned by the respective second method in the pair of methods comprises generating a vector representation of a combination of the previous vector representation and the distance between the type of parameter returned by the respective first method and the type of parameter returned by the respective second method in the pair of methods.