In recent years, with the rapid evolution of mobile technologies, more and more people begin to consider moving traditional business applications to mobile devices. It seems that the appearance of PDA, BlackBerry, Smartphone, and iPhone already brought us platforms to mobilize existing business applications, since these devices already had a complete programmable operating system and at least one communication channel, which are the two most important building blocks for business applications. However, is this mean that we can build business applications on mobile devices as the same as building business applications on traditional desktop machines? In my point of view, the answer is NO if taking into account the characters of mobile devices.
Basically, a mobile device should be light, convenient, and portable. On one hand, these characters limit the capabilities of applications running on mobile devices, e.g., the computation capability, the storage size, the communication capability, and the I/O. On the other hand, we can think these characters are also the requirements for mobile applications. Especially, when we consider that a mobile device normally needs to host more than one application, we cannot imagine that each application is heavy, complex, and fixedly installed. In a word, to adapt to the characters of mobile devices, mobile applications ought to and have to be light, convenient, and portable as well. Now, the question is whether or how a lightweight application can guarantee the full functions of the corresponding business logic. The answer is obvious. It should be supported by the backend full application like the typical client/server architecture. Hence, we can think that mobile applications are new entry points (namely new clients) of existing business applications. However, we should remember that the mobile client applications should be more lightweight than traditional client applications.
Currently, there are two tracks of effort to mobilize business applications. One is to move the typical architecture of existing business applications to mobile devices to build an offline model. In this architecture, an application is installed on the mobile device, and data is stored in a lightweight database that is also installed on the mobile device. Normally, this architecture also includes a lazy synchronization mechanism to exchange data between mobile devices and backend servers. The benefit of this approach is the convenience. Namely, the user can run the application anytime and anywhere. However, obviously, it is too heavy and not portable. A more serious problem usually hidden in this approach is whether users of such kind of applications notice that they always read old data, and their updates tend to be aborted due to potential conflicts. Another really light and portable approach is to use mobile browsers to build an online model. However, the quality of the network connection has much less guarantee for mobile devices than that for desktop machines, and the price is much higher. The online approach heavily depends on the network connection, and hence is not convenient enough. Especially, if the client UI cannot be rendered in the offline model, and no local data can be read and written, the inconvenience will become more straightforward. Moreover, in fact, even for the online model, users still read old data, and their updates still tend to be aborted due to the network problem. The differences are the data is not as old as the offline model, and users of browser based applications already become accustomed to these problems.
In my opinion, an ideal way to mobilize business applications is to merge the offline model and the online model together. We should borrow the light and portable characters of the online model to build mobile business applications using script based approach to avoid fixedly installing application on the client side, and execute the business logic to the backend as possible as we can to reduce the overhead on the client side. We also should borrow the convenient characters of the offline model to make mobile business applications have local cached data and UI to enable applications accessible anytime and anywhere. I call this model as “asynchronous online model”.
The kernel concepts of this model should consist of the following building blocks:
- Dynamic and efficient two level cache. The cache is used to store offline data and UI elements. The two level means the cache should take care of both the memory and the persistent storage of a mobile device. It is different from mobile database, since 1) the data does not tend to be stored for a very long time but the cached data set tends to be changed according to the switch between applications, 2) the data manipulation should be simpler than the normal database operation, and 3) it should support storing both application data and UI elements.
- Flexible and predictable data exchange mechanism. The mechanism guarantees how a mobile device exchanges data with backend servers. It should be flexible to switch between the lazy synchronization model and the online remote invocation model. It should be able to push the future data to mobile devices according to some predictable rules, e.g., business rule, user habits, and etc. It also should be guarantee at lease a boundary of consistency to help users understand how old the data is and how often the abort might happen.
- Multiple channel communication. To help increasing the quality of the network connection and decreasing the communication cost, it is necessary to define a way to merge all possible communication channels of a mobile device to support the communication.
- Simple UI elements and reduced user interactions. The guarantee the mobile application to be easy and light, the mobile application should use simple UI elements without complex combination as possible as we can. We also need to reduce the interactions between the user and the UI to help users to complete tasks as fast as possible.
- Script based business logic description. The business logic deployed on mobile devices should be written by script based language rather than normal programming languages to reduce the installation and maintenance overhead. This way also makes the applications portable and changeable according to the changes of environments. In fact, the simple UI elements and reduced user interactions make it possible to use a script based language to describe mobile business logics.
At the same time, we also should begin to consider how to train customers to get familiar with the new way to use applications in mobile environment. In fact, nowadays, people already get a lot of new experience on mobile devices, e.g., send SMS, take pictures using cell phones, and etc. From the aspect of business applications, we should consider what could be new experience. Here, I have a simple example. We already know that users will always read old data no matter in which model. Hence, in mobile business applications, can we let customers understand and get familiar with new approaches to refresh data view or re-correct responses on mobile devices?
Generally, mobilizing business applications is still a new direction with a lot of challenges. My blog will focus on this topic. In future, I will gradually discuss all of aforementioned five building blocks. I also everybody who is interested in this topic can enjoy this challenge and share your ideas with me.