As Internet-enabled devices become more prevalent in the form of smartphones and tablets, the need for mobile application development patterns grows in importance. Different technologies, such as Nokia’s Symbian, Apple’s iOS, Google’s Android, and Microsoft’s Windows Mobile, have arisen and will continue evolving to provide platforms for developing mobile device applications.
These technologies build on years of experience developing flexible, open-ended frameworks and platforms, and the developers of these technologies have provided many resources for application developers.
While best practices have been documented for nearly every component, such as the guidelines for Android Design i and the iOS App Programming Guideii, a comprehensive pattern collection or pattern language for mobile application development has not yet been produced. This gap exacerbates the difficulty of solving problems or conveying solutions effectively in this domain.
The patterns presented here are documented using a variant of the Gang of Four and POSA pattern forms to reflect the types of patterns covered in this document. The following are the sections in our modified pattern form.
State the intent of the pattern
State the problem(s) that this pattern works to solve
Constraints of the specific contexts that would elicit the use of this pattern
A diagram or graphical representation explaining the pattern and a description of the interaction between the different elements of the pattern
Explain how this pattern solves the problem considering the constraints of the context
Anything resulting from the use of the pattern aside from solving the given problem
Explained examples of the problem and/or known uses of the pattern
DATA SYNCHRONIZATION MECHANISM PATTERNS
Data synchronization mechanism patterns address the question: “when should an application synchronize data between a device and a remote system (such as a cloud server)?” This problem is common —yet often overlooked —in mobile application design, but there is no one-size-fits-all solution. Instead, mobile application developers must consider the constraints of many factors, including network availability, data freshness requirements, and user interface design.
- Synchronous Data Synchronization
- Asynchronous Data Synchronization
DATA STORAGE AND AVAILABILITY PATTERNS
Data Storage and Availability patterns address the questions: “how much data should be stored?” and “how much data should be available without further transfer of data?” This question arises in both the design of mobile applications Data Synchronization Patterns in Mobile Application Design: Page and the design of remote systems with which they interact. Often, mobile application projects have constraints (such as net work speed/bandwidth or capacity) both remotely and locally. Likewise, the capacity of local storage is often limited relative to the whole dataset needed for a computation.
- Partial Storage
- Complete Storage
DATA TRANSFER PATTERNS
Data Transfer patterns address the problem of transfer quantity in set reconciliation: “how can we synchronize between sets of data such that the amount of data transmitted is minimized?” As discussed above, network bandwidth is often a concern of mobile applications, so developers should write their applications to minimize resources to accomplish the task of synchronizing data.
Some types of data (such as records with a timestamp to keep track of changes) lend themselves to more efficient methods of reconciliation than others, while other types of data (such as files containing compound documents) have less efficient methods of reconciliation without becoming overly complex.
- Full Transfer
- Timestamp Transfer
- Mathematical Transfer
Source: Vanderbilt University
Authors: Zach Mccormick | Douglas C. Schmidt