{'fraction_non_alphanumeric': 0.014697876973326075, 'fraction_numerical': 0.0010887316276537834, 'mean_word_length': 5.337931034482758, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Management of Static and Dynamic Requirements in Service Composition

The development paradigm for complex application is evolving towards the exploitation of the so-called Service Oriented Architecture, that requires runtime composition of Web services offered by different service providers. The choice of which providers may better satisfy the end-user requirements in terms of quality of service remains an open issue in the context of Web services. The runtime service composition has to match requirements of different nature: requirements may refer to static quality characteristics of the service providers, that do not change over time or change slowly (for example related to service price or provider reputation), and to dynamic quality characteristics, that may change on a per-invocation basis (typically related to performance, such as the response time). The main contribution of this paper is to propose a family of novel runtime algorithms that compose services on the basis of quality requirements involving both static and dynamic characteristics, as in a typical Web scenario. We implement the proposed algorithms in a prototype and compare them with the solutions commonly used in service composition, that consider all the service provider characteristics as static for the scope of the composition process. Our experiments show that a static management of quality requirements is viable only in the unrealistic case where workload remains stable over time, but it leads to very poor performance in variable environments. On the other hand, the combined management of static and dynamic quality requirements allows us to achieve better user-perceived performance over a wide range of scenarios, with the response time of the proposed algorithms that is reduced up to a 50% with respect to that of static algorithms.