•   When: Friday, November 21, 2014 from 01:00 PM to 03:00 PM
  •   Speakers: Joshua Church
  •   Location: ENGR 2901
  •   Export to iCal


An increasing amount of data is provided by information services: Software constructed with web services that return output from underlying data sources given input supplied in HTTP requests. Instead of the traditional SOAP/WSDL standards, these restricted type of services are designed in the Representative State Transfer (REST) architectural style in which service functionality is memoryless, stateless, and free of side effects. Indeed, this service-oriented approach to software construction offers many benefits, but there is one looming disadvantage. After deployment, services within the program may fail. In response, programmers may attempt to recover lost functionality with another service. Unfortunately, the repair process is a manual task where programmers must locate the failure and then repair it with a substitute; that is, another version with similar functionality. While techniques are available for identifying where the program is broken, an open problem remains: How to identify candidate repairs?

To address this problem, recent research explores methods to automate aspects of the repair process, and thus support programmers while they debug failures. As yet, most automated repair methods assume programmers have access to program source code and so they focus on internal software changes. However we consider services to be 'black-boxes'; that is, implementation details (such as source code or documentation) are unavailable. Consequently, programmers cannot modify the failed service or rely on source code for insight into its functionality. Hence we focus our repair methods on the recommendations of substitute services and not on source code modifications. In other words, given a failed service, and assuming services are registered in a repository, the problem is to recommend another service (or set of services) that would be a 'good' substitute for the failure.

Without source code, our idea is to describe service functionality by its behavior; that is, the observable relationship between its input and output. The thesis of this dissertation is service behavior can be economically sampled and efficiently compared, and as a result, given a service we can recommend candidate substitutions from a repository of services. In this dissertation a model for representing information services is proposed, a definition for measuring similarity between two services is defined, and a language for expressing compositions of services is specified. Then, a heuristic to extract small representative samples of behavior is presented, a heuristic for improving service recommendation performance is presented, and a method for making recommendations in the context of service compositions is described.

Posted 5 years, 9 months ago