Abstract

Adaptivity is the ability of the system to change its behavior whenever it does not achieve the system requirements. Self-adaptive software systems (SASS) are considered a milestone in software development in many modern complex scientific and engineering fields. Employing self-adaptation into a system can accomplish better functionality or performance; however, it may lead to unexpected system behavior and consequently to uncertainty. The uncertainty that results from using SASS needs to be tackled from different perspectives. The Internet of Things (IoT) that utilizes the attributes of SASS presents great development opportunities. Because IoT is a relatively new domain, it carries a high level of uncertainty. The goal of this work is to highlight more details about self-adaptivity in software systems, describe all possible sources of uncertainty, and illustrate its effect on the ability of the system to fulfill its objectives. We provide a survey of state-of-the-art approaches coping with uncertainty in SASS and discuss their performance. We classify the different sources of uncertainty based on their location and nature in SASS. Moreover, we present IoT as a case study to define uncertainty at different layers of the IoT stack. We use this case study to identify the sources of uncertainty, categorize the sources according to IoT stack layers, demonstrate the effect of uncertainty on the ability of the system to fulfill its objectives, and discuss the state-of-the-art approaches to mitigate the sources of uncertainty. We conclude with a set of challenges that provide a guide for future study.

Highlights

  • System adaptivity has been a topic of research since the mid-1960s

  • We presented a high-level model of software systems (SASS) to study the conception and causes of uncertainty

  • We provided a survey of state-of-the-art approaches that tackle uncertainty from different perspectives

Read more

Summary

Introduction

System adaptivity has been a topic of research since the mid-1960s. Adaptive software systems are capable of evaluating and changing their behavior whenever the system evaluation shows that the software is not accomplishing what it was intended to do, or when better functionality or performance may be possible while keeping system complexity hidden from the user. The feedback loop provides the generic mechanism for self-adaptation It collects pertiComputers 2021, 10, x FOR PEERnRenEVt IkEnWowledge at runtime, monitors the system functionality, and applies changes to subsystems when necessary, regardless of possible uncertainties [7]. Self-adaptive systems at normal operation need to achieve multiple non-functional requirements based on stakeholder needs. When the number of system non-functional requirements increases, so does the number of adaptation alternatives, and handling the requirements trade-offs becomes more complex This issue should be investigated properly; otherwise, uncertainty may induce inconsistency in certain subsystems, and the accumulated inconsistencies may result in unignorable circumstances that adversely affect system behavior.

Scope of Uncertainty in SASS
Modeling Uncertainty in SASS
Uncertainty Due to Noise in Sensor
Uncertainty Due to Human User in the Loop
Uncertainty in the Objectives
Uncertainty Due to Decentralization
Uncertainty in the Execution Context
Fuzzy Sets and Possibility Theory
Rainbow
Case Study
Sources of Uncertainty in IoT
Classification of Sources of Uncertainty Based on Layers of IoT Stack
Conclusions and Future Research
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call