# Edge Computing Simulators for IoT System Design: An Analysis of Qualities and Metrics
## 1 Introduction  
The rapid development of the Internet of Things (IoT) affects nearly all aspects of society, including industrial automation; building, as well as HVAC systems; smart metering; and health care [1]. An IoT system often generates huge amounts of data, which requires heavy computational processing [2]. Cloud computing offers attractive computational and storage solutions to cope with these issues, however, cloud-based solutions are often accompanied by drawbacks and limitations, for example, latency, energy consumption, privacy, and bandwidth [3]. Edge computing, in which computation and storage are done closer to where the data is generated, could help to address these challenges by meeting specific requirements, such as low latency or reduced energy consumption [4]. The design of an IoT system entails several different aspects, in particular the hardware infrastructure (including servers, gateways, communication networks, sensors, and actuators), the application software, and the decision of where to deploy the application software components within the hardware infrastructure. Currently, the most common IoT system approach is to do as much computing and storage as possible in the cloud, however, the combination of edge and cloud computing in edge computing architectures provides new opportunities for the design of efficient IoT systems [5]. Because an IoT system often has to meet many different and possibly conflicting requirements, it is a challenge to design its architecture including identifying the optimal deployment for each component within the resulting edge-cloud continuum [6, 7]. Moreover, the optimality of a deployment is often related to the system's scalability and a tradeoff must be made. Figure 1 illustrates the software component deployment problem, which concerns the placement of the computation and storage tasks the system should execute. In case the hardware infrastructure is not readily available, the IoT architect not only needs to solve the software component deployment problem, but also needs to determine the architecture, as well as the entities (things, local nodes, and sometimes even central servers) of the hardware infrastructure. The architect must also ensure that the resulting IoT system is capable of efficiently fulfilling its intended purpose while achieving the desired quality. The quality of an IoT system is typically seen as the degree to which it satisfies the needs of its various stakeholders. The stakeholders' needs can be categorized into a set of quality characteristics (QCs), such as functional suitability, performance, usability, reliability, security, and maintainability as listed by ISO/IEC 25010 [8]. Here, objective quality metrics are also required, from which the quality of the system can be measured. To address the challenges of modeling and investigating different aspects of complex systems, computer simulation has proven to be a suitable technique [9]. A large number of simulators exist that enable and facilitate the modeling and assessment of different aspects of IoT systems, for example, load balancing or network utilization. However, they only provide basic predefined attributes for the investigation of the IoT system's quality [10] and the integration and use of more sophisticated QCs is often not supported. In addition, simulation has been broadly used to analyze the quality of an IoT system in edge computing before its implementation [11]. Nevertheless, limitations in the extendibility of simulators apply and, as well, a fragmentation of the research regarding the relation between edge computing simulators and QCs can be observed. In the case of software deployment problems for IoT systems (see Figure 1), an initial step towards understanding how simulation can support IoT system designers is to analyze the available simulators with respect to supported qualities that can be assessed.