{'fraction_non_alphanumeric': 0.02689376961004034, 'fraction_numerical': 0.0008964589870013447, 'mean_word_length': 5.358974358974359, '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': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Correct deployment and adaptation of software applications on heterogenous (mobile) devices

The current panorama of the communication infrastructures let us foresee that several kinds of variously integrated transmission and communication infrastructures will be available in the near future. In such a scenario, it will be possible to implement heterogeneous access software applications, whose users are likely to be mobile, to employ access devices of various kinds (PCs, PDAs, cellular phones, communicators, etc.), and to be willing to accept varying quality of service, including degraded functionalities, according to the place, the time, the device in use, etc. Moreover the technological developments in terms of devices show that what today is seen as a discrete set of well characterized —different types of— devices, tomorrow will became a virtually infinite range of access devices all homogeneous in terms of basic resources and functionalities but —all— different in terms of quantitative and qualitative characteristics (size, dimensions, speed, resolution, interpreters, languages, ...). Think, for example, of resources like memory, screen, databases, threading etc. This means that devices can exhibit possibly infinite different configurations both at the hardware and software level. In this context our research addresses the problem of dealing with the heterogeneity of access devices. The problem we are facing is that of a, possibly mobile, user that wants to download and execute an application from a remote server. The user’s hosting device can be any of the above mentioned access devices with specific hardware and software capabilities. The problem is then to be able to decide whether the user’s current device characteristics are compatible with the application requirements in order to prevent execution failures. In the negative case we would like to be able to identify the reasons that determined the un-compatibility and perform an adaptation of the application so that it can match the user’s device capabilities. These reasons pushed us toward a declarative approach [3, 6]. Informally our approach is the following. We propose to provide each device with a declarative mechanism to express