# Architecting Software for the Internet of Thing Based Systems
## 5 Architectural Solutions and Patterns for the IoT Software  
We now answer **RQ-3** that presents challenges and their architectural solutions to engineer and develop IoT software. The challenges and architectural solutions are derived from the taxonomical classification of the existing research (from Figure 7) and are structured as in Tables 5-11, as detailed in Section 5.1. After presenting architectural solutions, we also compare them for an objective evaluation of their strengths and limitations in Section 5.2. The architectural view presents a generic view in terms of highlighting the Cloud Hub as a mediator that helps various cloud providers to bind with each other using the mediator as illustrated in Figure 8a. \begin{table}
\begin{tabular}{c c} \hline \hline
**Challenges for IoT Software** & **Architectural Solutions** \\ \hline \multicolumn{3}{c}{**Challenge 1: Architecting Cloud-based Software Ecosystem**} \\ \hline _Primary Challenge:_ How to support a (heterogeneous) & _Proposed Solution:_ The IoT based solution supports the communication among multi-clouds - the interconnected things that produce ad consume data—using a central Cloud Hub. The Cloud Hub facilitates the interaction among the different clouds to collaborate and connect as part of the ecosystem. \\ \hline
**Application Areas/Research Focus and Available** & **Architectural View** \\ \multicolumn{3}{c}{**Evidences**} \\ \hline _1-a. Edge and Fog Computing_ exploits architectural configurations to push the computation and storage of devices to the edge of the network to improve performance of the IoTs. \\ Available Evidence(s): [S1, S64, S5, S9, S40, S42, S44] \\ \hline _1-b. Web of Things (WoT)_ support potently connected \\ web of devices and things to support universally \\ accessible IoTs \\ Available Evidence(s): [S8, S18, S32, S46, S54] \\ \hline _1-c. Cyber Physical Systems_ represent heterogeneous and massively distributed systems to support IoTs for cyber physical systems. \\ Available Evidence(s): [S15, S17, S19, S34, S70, S75] \\ \hline _1-d. Cloud Computing Patterns_ represent generic and reusable knowledge and practices that supports reuse-driven development, maintenance and evolution of software architectures for IoT-based cloud-ecosystems. \\ Available Evidence(s): [S29, S47, S53] \\ \hline \hline \end{tabular}
\end{table} 
Table 5: **Challenge I—Overview of the challenges and architectural solutions for cloud-based software ecosystem. **Figure 8: (a) Architectural View of Cloud Software Ecosystems. (b) Architectural View of Private and Secure IoTs. (c) Architectural View of SDN IoTs. (d) Architectural View of Agents Systems for IoTs. (e) Architectural View of IoT based Big Data Systems. (f) Architectural View of Autonomous and Adaptive IoTs. (g) Architectural View of IoT Reference Architectures. _Challenge 2: Secured and Privacy Preserving Internet of Things_  
_Primary Challenge:_ How to enable the security and privacy of data that is produced consumed or shared by the interconnected things (i.e., heterogeneous devices) in the IoT systems? _Proposed Solution:_ The solution introduces a Security Hub that exploits the mediator architectural pattern to mediate the communication between the connected devices/things and ensure the security of the IoT system. **Application Areas/Research Focus and Available Evidences**  
**Architectural View**  
_2-a. Securing Edge Computing Systems_ supports secure communication, computation and storage of the nodes deployed as edges in IoT based architectural configurations. Available Evidence(s): [S61]  
_2-b. Security and Privacy of Enterprise Systems_ supports the security of computation infrastructures and privacy of data in industry scale enterprise software based on IoTs. Available Evidence(s): [S2, S78]  
_2-c. Architecting Secure IoT Systems_ provides reference architecture and a framework as guidelines and enabling methods to design and develop secures IoTs.