# Software Architecture for Mobile Cloud Computing Systems
## 1 Introduction  
Mobile cloud computing (MCC) represents state-of-the-art mobile computing technology that aims to minimize the resource poverty of mobile devices by exploiting the resource sufficient and pay-per-use cloud-based hardware and software resources [1; 2]. To compensate the resource poverty of mobile devices, cloud computing servers exploit the 'pay-per-use' hardware and software services to provide virtually unlimited processing and storage resources [3; 4; 5]. The unification of the mobile and cloud computing can benefit from the mobility and context awareness of front-end mobile devices and the computation and storage services of back-end cloud servers to enable systems that are portable, yet resource sufficient [1; 2]. In recent years, the industrial development and academic research have proposed a variety of MCC-based solutions that address issues such as real-time analytics of the mobile-sensed data, provisioning of context-aware medical services, mobile apps as a service, andmobile edge computing [4; 6; 7]. The research and development activities for MCC systems are currently focused on utilizing software engineering methodologies to minimize the complexities and enhance the efficiency to model, develop, operate, and evolve MCC systems effectively and efficiently [1; 3]. Software architecture represents a blueprint of the system under consideration by abstracting out complex implementation specific details with high-level representation of the software systems [8]. Specifically, architecture of a software-intensive system represents the low-level modules of source code and their interactions as high-level architectural components and connectors [9]. This means that architecture-centric development of software-intensive systems involves architectural components (i.e., computational entities and data stores) that interact with each other using the connectors [10]. The research on MCC systems highlights that researchers from different communities such as mobile computing, software engineering, cloud computing, and artificial intelligence have successfully utilized architectural models for the research and development of the MCC software [11; 12]. Architecture-centric solutions for the MCC systems have proven to be successful in integrating the context-aware mobile computing (as front-end) layer with resource-sufficient cloud computing (as back-end) layer [3; 13]. Architecture-centric engineering of the MCC systems aims to model (i) software (i.e., algorithms and libraries) and (ii) hardware (i.e., processors and data storage) services offered by the cloud that are manipulated by mobiles acting as portable and context-aware user interfaces. **Scope and Contributions**: In recent years, there has been a steady growth of research on software architecture-related issues and solutions for mobile cloud software [4; 6; 12; 13]. However, there has been no effort to systematically investigate the state of existing research on architectecting MCC systems. Therefore, we used an evidence-based software engineering (EBSE) approach, and the guidelines from [14; 15] to conduct a systematic mapping study (SMS) that analyzes and synthesizes the research by investigating 121 published studies from 2006 to 2019 that utilize architecture-based solutions to engineer MCC Systems. The objective of this SMS is to'systematically identify and taxonomically classify software architectural solutions for MCC systems; and provide a holistic mapping of these solutions to highlight their strengths, limitations alongside emerging and futuristic trends of research'. This SMS can disseminate a systemized knowledge about software architecture-related issues for MCC systems with the following contributions:  
* We taxonomically classify the collective impact of existing research to highlight (i) predominant research themes and challenges and (ii) architectural solutions and patterns for architectecting MCC systems.