# Software Architecture for Mobile Cloud Computing Systems
## 6 Architectural Patterns for Mobile Cloud Computing Software  
We now answer RQ-4, which aims to present the existing architectural patterns for MCC systems that have been identified from the mapping study. During the identification of the research themes (see Figure 4), we exploited the design review method to discover the existing patterns, i.e., by reviewing recurring design solutions to frequent problems of architecting MCC systems [26; 27]. During the architecture-centric software design and development, architectural patterns and styles provide reusable knowledge and best practices to architect the systems [28; 29]. Software patterns have proven to be successful to represent recurring solution to frequent problems of software and system design [30]. We believe that the existing patterns that we have identified as a result of the mapping study and presented in Figure 6 focused on designing or architecting MCC can provide documented and well-understood software design solutions to both the researchers and practitioners. The presented patterns in Figure 6 capture the concentrated wisdom and consolidated design rationale from multiple systems to develop software effectively and efficiently. In Figure 6, we illustrate the four identified patterns, namely (i) **Adaptive Offloading**, (ii) **Mobile Cloudlets**, (iii) **Context Sensing**, and (iv) **Mobility-driven Internet of Things** that are presented in the form of a pattern template (Tables 2-5). The pattern template provides a structured format to present pattern-related information systematically and effectively [30]. We have been able to identify only four patterns that represent a limited number; however, we believe that the patterns presented here can guide the futuristic efforts to investigate the architectural solutions and to discover new architectural patterns for MCC systems. For space reasons, we only detail the adaptive offloading pattern in Table 2 and Figure 6. It is vital to mention that all the patterns represent a layered architecture that has already been detailed earlier (see Section 1, Figure 1). We have followed the guidelines from [27; 28] for a template-based representation of the architectural patterns. Specifically, we present the pattern in a structure template using the following seven elements of pattern representation. * **Pattern Name:** Provides a unique and self-explanatory name for the pattern. * **Pattern Intent**: Describes the motivation or the known uses of the given pattern. * **Design Problem and Solution**: Highlights the problem solution view that the patterns aim to address. * **Architecture Elements:** The artefacts of the system to which a pattern can be applied. * **Reuse Design Knowledge:** Design rationale supported by the pattern that can be frequently reused. * **Quality Characteristics**: Attributes of quality (non-functional properties) affected by the pattern. * **Reference Diagram:** Provides overview of the pattern also known as pattern thumbnail. We conclude that, in order to support architecture-centric engineering and development of the MCC systems, there is a need to replace the ad-hoc and once-off solutions with reuse-driven and knowledge-based practices for system design. With the growing demands for the adoption of the MCC systems, existing best practices and knowledge must be leveraged to design new systems effectively and efficiently [3; 4]. Therefore, the presented patterns can provide reusable design rational and concentrated design knowledge from multiple systems/solutions to offer best practices to design and architect the MCC systems. **Pattern I - Adaptive Offloading**  
**1. Pattern Intent:** To enable a mobile device to dynamically determine what, how and where to offload its data to enhance efficiency of mobile computing. **2. Design Problem:** How to enable a (resource-constrained) mobile device to delegate its memory and computational-intensive data and tasks to (resource-sufficient) computers. **3.