As you might have seen from my recent tweets this week I had a patent issue along with my collaborator Dr. Kelly Shaw in the realm of detecting if Web Services change while a composite application is consuming them.
Working as a Software Change and Configuration Management guru means that I tend to see everything in terms of the processes behind predicting, detecting, controlling, tracking and recovering changes. At the height of the Web Services hype in 2007 Shaw and I sat down to think about the problems surrounding the shifting sand that might underpin composite apps and the web services they consume. What we discovered is that there are two distinct problems that have to be solved and so our patents cover the solution to those problems.
Problem 1: What happens when a web service that is being consumed by a composite application (composite app) changes? How does the composite app know? What are the consequences? What should be done about it?
Problem 2: When a web service is being developed and maintained over its life how can it improve the collaboration with all the composite apps that consume it every time it changes? What kind of automation can be built into development tools that would make managing this problem easy?
They say that “when all you have is a hammer: everything looks like a nail” so when Shaw and I sat down to look at these two problems we were struck by how similar they are to just plain old configuration management issues in more static context.
So we developed two patents around solving these problems which I’d like to outline here.
Solution 1: Using a technique we call fingerprinting we convert the web service’s contract into a binary token (“the fingerprint”). The consuming application, the application that makes use of the service, then makes periodic checks to see if the fingerprint they are receiving now matches the stored fingerprint.
If it does – nothing happens.
If it does not the consuming application then determines if the change is a benign change or a potentially harmful one. It does this by analyzing the type of changes in the contract. The addition of a tag or of an enumerated value in an existing tag is most certainly benign. If a tag is deleted and it is not used by our consuming application it is also benign. If a tag or enumerated value is deleted and it is one the consuming application uses it is most likely very harmful. In all cases the change is reported to the developer in form of a task to investigate and resolve.
If we think about how web services are developed there comes a point in the process where the compiler reads the code and generates an executable. In our solution the we add to this step the addition of extra code that provides information about the version of the service.
We propose adding a method that the consuming application can call that asks for the version of the service.
Each time the service is compiled the version number in the code is updated. Using various automatic and parameter driven indicators the version number V, the release R or the modification M (in an V.R.M model) is updated.
Serena is interested in talking to partners who would like to license the patents as part of their own solution.