Context—Internet of Thing (IoT) based systems support any-time/place computations by interconnecting humans, systems, services, devices, and things that enabling autonomous systems to shape-up digitized societies. Software architecture, as the blue-print of software-intensive systems, abstracts the complexities of modeling, design, development, and evolution phases of a software to engineer complex IoT driven systems effectively and efficiently. Objectives and Method—Research and development efforts are required to exploit architectural principle and practices to design and develop IoT systems to go beyond the state-of-the-art for IoTs. The objectives of this research are to empirically investigate and systematically classify the state-of-the-art on architecting IoT based software. We have used the Evidence Based Software Engineering (EBSE) method to conduct a mapping study of the existing IoT solutions by investigating 88 qualitatively selected studies. Results and Implications—The results of the mapping study highlight various research themes that exploit software architecture models to develop IoT systems. The identified research themes include, but are not limited to, cloud-based software ecosystems, software defined networking, autonomous, and adaptive software and agent-based systems that IoTs drive. The mapping study suggests that futuristic research on architecting IoT software is focused on architectural languages and patterns that support reusability, automation, and human decision support to develop and dynamically adapt IoT software. The mapping study represents a concentrated knowledge regarding architectural principle and practices to facilitate knowledge transfer—benefiting researchers and practitioners—on the role of software architecture for IoT systems.
[1]
Rajkumar Buyya,et al.
FOCAN: A Fog-supported Smart City Network Architecture for Management of Applications in the Internet of Everything Environments
,
2017,
J. Parallel Distributed Comput..
[2]
Luca Mainetti,et al.
A Software Architecture Enabling the Web of Things
,
2015,
IEEE Internet of Things Journal.
[3]
Andrea Zanella,et al.
Internet of Things for Smart Cities
,
2014,
IEEE Internet of Things Journal.
[4]
James O. Hamblen,et al.
An Embedded Systems Laboratory to Support Rapid Prototyping of Robotics and the Internet of Things
,
2013,
IEEE Transactions on Education.
[5]
Enzo Baccarelli,et al.
Fog of Everything: Energy-Efficient Networked Computing Architectures, Research Challenges, and a Case Study
,
2017,
IEEE Access.
[6]
Mohsen Guizani,et al.
Internet of Things: A Survey on Enabling Technologies, Protocols, and Applications
,
2015,
IEEE Communications Surveys & Tutorials.
[7]
Michael Weyrich,et al.
Reference Architectures for the Internet of Things
,
2016,
IEEE Software.
[8]
Athanasios V. Vasilakos,et al.
Software-Defined Industrial Internet of Things in the Context of Industry 4.0
,
2016,
IEEE Sensors Journal.
[9]
Claus Pahl,et al.
Classification and comparison of architecture evolution reuse knowledge—a systematic review
,
2014,
J. Softw. Evol. Process..
[10]
Muhammad Ali Babar,et al.
10 years of software architecture knowledge management: Practice and future
,
2016,
J. Syst. Softw..
[11]
Marko Grobelnik,et al.
A Capillary Computing Architecture for Dynamic Internet of Things: Orchestration of Microservices from Edge Devices to Fog and Cloud Providers
,
2018,
Sensors.