# Architecting Software for the Internet of Thing Based Systems
## 1 Introduction  
Internet of Things (IoTs) are being increasingly adopted as a technology and an enabling platform that interconnects humans, systems, devices, and things to ensure a connected world that is based on autonomous systems that are fundamental to digitized societies [1; 2]. IoT based systems represent a combination of (i) hardware (component and sensor) that is controlled and manipulated by (ii) software (source code and programs) that are interconnected through the use of (iii) network (protocols and connectivity) to enable things that collect, process, and exchange useful data [2]. For example, a connected home service robot (i.e., hardware) that is available for control and manipulation through a mobile app (i.e., software) empowers a user to exploit the 'robotic thing' for cleaning, surveillance and other housekeeping activities [3]. A recent study on the current state of the IoT has highlighted that approximately 25 billion devices will be connected to the IoTs by 2020 [4]. In principle, IoT systems envision the 'anytime, anyplace connectivity' of all the things to create technical and socio-economic opportunities with direct integration between the physical world and computer-based software systems. However, in the context of software-driven IoTs, a number of challenges exist, such as engineeringefforts, safety, security, and privacy issues, along with regulatory and governance aspects that needs to be addressed while modeling, developing, evolving, and operating IoT based systems effectively and efficiently [5]. Software architecture as per IEEE standard 1471-2000, represents a system's blueprint to model, develop, and evolve software-intensive systems by specifying computational entities or data-stores of software as architectural components and connectors [6]. Software architecture models have been successfully utilized to effectively engineer medium as well as complex industrial scale systems in the past [7]. Software architecture for the IoT aims to abstract the complexities of heterogeneous hardware components and network protocols to ensure smooth operations as well as the quality of computational things in IoT systems [8; 9]. For example, architectural components (as modules of executable code) can provide programmable and standardized interfaces for home service robots and home appliances that can seamlessly coordinate with each other by means of architectural connectors (as message passing between code modules). This means that the existing research, best practices, and principle of software architecture can be exploited to model, develop, execute, and evolve complex IoT systems that satisfy the desired functionality as well as the required quality [7; 8]. However, there is a need to go beyond existing research to develop architectural solutions for the next generation of IoT based systems to support the emerging and futuristic challenges for software-driven IoTs [10; 11; 12]. **Scope and Contributions:** In the current decade, there is a steady growth of research and development regarding architectural solutions to address various challenges that range from engineering, operations, governance, and security specific aspects for IoT software [10]. Additionally, a number of reference architectures have been proposed to unify the standards for developing IoT based software [8; 9]. However, no research currently exists empirically investigating the existing solutions and the impacts of research on architecting IoT software. We propose using the Evidence Based Software Engineering (EBSE) method to conduct a systematic mapping study [5]. The proposed mapping study qualitatively investigates 88 studies (published from 2011 to 2018) on architecture-centric solutions to develop and manage IoT software.