Service composition in opportunistic networks This thesis is related to the domain of Ubiquitous computing and Internet ofThings (IoT), and focuses on networks that can be formed spontaneously bymobile   or   fixed   devices.   These   devices   can   be   connected   using   aninfrastructure, or in a peertopeer mode using ad hoc communications.Connection   disruptions   may   occur   in   the   network   frequently   andunpredictably. These connection disruptions can be problematic when a givendevice tries to access remote resources provided by other devices, or when ittries to offer its own resources to these ones.Opportunistic computing extends the paradigm of opportunistic networkingby abstracting local resources as services accessible remotely using theprotocols of opportunistic networking that implement the store, carry andforward principle.In   this   thesis,   we   focus   on   service   composition   in   order   to   combineelementary services and offer new, rich and high level composite services tousers.   Service   composition   can   be   a   very   difficult   task   to   perform   inopportunistic networks due to connection disruptions. In   this   thesis,   we   propose   a   solution   to   compose   services   using   twostrategies: orchestration and choreography. This solution also relies on autility function that selects service providers. We also propose an optimizedversion  of our solution  that exploits a distributed cache of data and aproactive service composition mechanism based on the user interest profile.

OPPLOAD: Offloading Computational Workflows in Opportunistic Networks Computation offloading is often used in mobile cloud, edge, andor fog computing to cope with resource limitations of mobile devices in terms of computational power, storage, and energy. Computation offloading is particularly challenging in situations where network connectivity is intermittent or errorprone. In this paper, we present OPPLOAD, a novel framework for offloading computational workflows in opportunistic networks. The individual tasks forming a workflow can be assigned to particular remote execution platforms (workers) either preselected ahead of time or decided just in time where a matching worker will automatically be assigned for the next task. Tasks are only assigned to capable workers that announce their capabilities. Furthermore, tasks of a workflow can be executed on multiple workers that are automatically selected to balance the load. Our Python implementation of OPPLOAD is publicly available as open source software. The results of our experimental evaluation demonstrate the feasibility of our approach.