# Software Architecture for Mobile Cloud Computing Systems
## 5 Challenges and Architectural Solutions for MCC Systems  
We now answer RQ-3, which presents the prominent challenges and their architectural solutions for MCC software systems. To answer RQ-3, we provide Table 1, which represents a catalogue of architectural solutions to highlight the problem solution view for MCC software systems. Table 1 summarizes the following information: (i) Prominent research challenges or the Problem View representing various types of challenges for MCC systems, (ii) methods and techniques such as Solution View, (iii) Relevant Studies that complement the problem-solution view, and (iv) Solution Illustration. As per the research methodology (see Figure 2), during the data collection and synthesis process, we have recorded the information about the problem and architectural solutions for MCC in the data extraction form. To support fine-grained analysis of the research challenges and their architectural solutions, first we identified the primary challenges (Appendix B, Table A1, Step I) and then their sub-challenges (Appendix B, Table A1, Step II) as in Table 1, based on the research themes and their sub-themes from Figure 5. For example, the primary challenges of provisioning of the software as a service for mobile computing (SaaS for mobile) has two distinct sub-challenges namely (i) Supporting Enterprise Software Services for Mobile Computing and (ii) Provisioning of Recommendation as a Services for Mobile Computing (RaaS for Mobile). It is vital to mention that the thematic classification (see Figure 4) categorizes similar or distinct problems, while sub-themes represent specific type of problems. For example, in enabling the computational efficiency of a mobile device from studies [S4, S6], Table 1 highlights:  
* **Problem View:** How to achieve computational efficiency while maintaining the portability and performance of a resource-constrained mobile device. * **Solution View**: The proposed architectural solutions to address this problem are adaptive and cloudlets-based off-loading of computationally intensive data from a mobile device to cloud-based server. Software architecture provides a layered approach for the proposed solution (see Figure 1). The resource-constrained mobile device (as the front-end layer) represents a portable and context-aware user interface. On the other hand, the cloud-based server (as the back-end layer) provides computation and storage software as a service (SaaS) for mobile devices. The architecture includes the necessary logic to support the offloading decisions, i.e., what, when, and how to offload from a mobile device to the cloud-based server. * **Related Studies** support solutions for adaptive and cloudlet-based offloading includes [S4], [S6], [S11], [S14], [S25], and [S29]. * **Reference Architecture** represents a high-level and generic view of the solution to address the challenges that relate to a particular research theme. A reference architecture provides an architecture-centric point of reference with an overview of the architectural components and connectors. The reference architecture provides a blueprint for architecture-centric development of the software systems. Table 1 overviews generic problems with universally applicable solutions by abstracting complex and implementation specific details of the solutions. Such a high-level view of challenges and software architecture-centric solutions allow us to highlight an overview of the existing approaches.