Abstract
The Internet of Things (IoT) is an emerging new paradigm that enables the connection of heterogeneous physical objects. In recent years, IoT applications have rapidly increased. As a result, the number of connected objects on the Internet is expected to exceed 500 billion by 2030. Characterized by their limited capabilities (storage, computation, etc.), IoT objects are unable to manage the enormous amount of data generated by IoT applications. Fog computing is a distributed environment suitable for running IoT applications. This new distributed paradigm provides the ability to store and manage data close to the IoT objects where it is generated, thus reducing latency. The fog environment is characterized by its: Decentralization: There is no single node that controls the entire distributed system. Dynamics: Neither the number nor the nature of the nodes (objects) that make up the distributed system are known in advance. As a result, the fog environment can be considered as a "perverse" environment. The use of such a complex and distributed execution environment can be seen as an extension of the classical workflow concept, where a set of tasks must be performed and executed by a set of actors (nodes). Each task can be executed by one or more fog services. By "fog service," we mean any web application running in a fog environment. The research problem addressed is: how to ensure a reliable and efficient composition of fog services. Several approaches have been proposed to solve this problem. These approaches are classified into two categories: approaches addressing functional aspects and those addressing non-functional aspects. Although interesting, these approaches do not go further to ensure a reliable and efficient composition. Thus, there are no approaches that integrate the functional/non-functional and transactional aspects of fog services. The objective is to propose an approach that allows the construction of reliable and efficient composite fog services. To achieve this, we first propose a heuristic strategy for the composition of fog services. Such a strategy takes into account functional, transactional, and non-functional aspects. It should reduce the search space while ensuring a reliable (from a transactional point of view) and efficient solution. Next, we propose an extension of our composition approach by considering the needs for dynamic changes. Such an extension is an adaptive composition approach for fog services, taking into account transactional and QoS aspects. It aims to configure (optimize or repair) the composite fog services based on transactional and QoS requirements. Finally, we propose a correct-by-construction approach for the formal verification of the functional, non-functional, and transactional properties of fog services. Finally, we illustrate our approach via an e-health application.