Many challenges exist in the development of mobile applications and systems that are usually not an issue in the development of non-mobile systems. For instance, non-mobile developers rarely think about the ramifications that their application architecture will have on a system's energy consumption. Non-mobile developers also do not usually think about how their application's network utilization will affect the user's monthly wireless subscription bill.
In this section, we briefly look at the issues that are inherent to the development of mobile systems. Then, we discuss approaches for addressing these issues and solution best practices.
The Wireless Network
The first obstacle faced in developing mobile applications is the wireless network. A variety of wireless networks are available, including cellular and 802.11 wireless local area network (WLAN). Each of these network technologies has unique characteristics that make them appropriate for different environments.
Recognizing the unique characteristics of each network and their potential synergies, some devices support multiple network technologies. Cellular technologies provide roaming wireless network connectivity, while WLAN technologies provide higher speed wireless connectivity within the enterprise as well as at specific "hot spot" locations.
Notwithstanding supporting multiple networks, mobile applications must address many issues:
Most mobile applications today tend to fall at either end of the two extremes of network usage as shown in Figure 10-3. At one end of this spectrum are applications that require an "always on" network connectivity. At the other end are applications that function properly without the wireless network at all, but simply synchronize their data through a network-connected PC. In general, both sides of these extremes fail to provide their users with intelligent value. Applications based only on offline synchronization capabilities do not leverage wireless connectivity to provide real-time access to the latest information. On the other hand, applications that heavily use the wireless network provide real-time access while decreasing application latency and increasing usage costs. To provide value, mobile applications must intelligently use wireless networks.
Figure 10-3. The spectrum of network usage by mobile applications.
These and other issues unique to wireless networks motivate rethinking the information access model for mobile devices. Today, the most widely used mobile information access model combines features of PC browsers together with the notion of write-once-run-anywhere. This model has two critical features:
The small form factor of mobile devices demand rich and intuitive user interfaces, not simple, lowest common denominator ones. This, together with the higher rate of disconnects in a wireless network environment, requires a more appropriate model of information access that recognizes the realities of mobile networks and devices.
A mobile information access model is first focused on transactions. The PC browser model of information access is focused on interactions: the user inputs some information, the server responds with some information and requests additional information, then the user again inputs more information and the cycle continues. This sort of interaction is justified when network speeds are reasonably fast and rapid-entry information input devices such as keyboards and mice are available. In mobile environments, the lack of inexpensive, high-speed networks necessitates a focus on transactions, or getting things done.
A transaction-based mobile information access model captures all of the relevant information from the user upfront, and then transmits the information to the back-end server, which then attempts to service the request. The response to the mobile application may include a confirmation request from the user before the transaction is completed. The user may do such a confirmation with a simple voice command or a single-button tap. The interactions by the user are based on disconnected operations that the user can complete at his leisure since the wireless network is not utilized.
A mobile information access model also extensively uses data compression to reduce the number of bits transmitted or received over the wireless network. After the relevant information has been captured, the entire data is compressed (and perhaps also encrypted) before transmission.
Finally, in order to facilitate user input through mobile devices and to capture all of the relevant information from the user at the earliest point, significant thought must be given to designing a rich, easy-to-use user interface for each application. Figure 10-4 depicts the flow for this mobile information access model.
Figure 10-4. A mobile information access model that captures all user information upfront, extensively compresses all wireless network traffic, and uses the back-end server to service the request as best as possible.
Consider using a typical PC browser to purchase airline tickets. First, the user enters the source and destination airports together with the travel dates. The server responds with a list (often very long) of possible flights. The user then selects the desired outbound and inbound flights, and the server responds with the purchase price. If the price is all right, then the user must select his seat choices. Then, the server finally responds with a form that lets the user purchase the airline tickets by entering his credit card information, home address, and mode of ticket delivery.
In a transaction-focused mobile information access model, the user enters all of the information, including specific flight times, desired seats, price range, and billing information into the application once at the beginning (some information such as home address would be entered just once and be available to all applications). This would allow the user to enter the data, and then continue with whatever else he needed to do. The result would be returned by the server at a later time, and would be a combination outbound-inbound flight that meets the request specifications, or its closest match.
Essentially, with a transaction-focused mobile information access model, mobile client devices and back-end servers communicate with more specific questions, such as "What is the best flight that departs from San Francisco International Airport at 9 P.M. Monday night headed for Washington Dulles International Airport?" instead of "What is the listing of all flights between San Francisco International Airport and Washington Dulles International Airport on Monday," which is more like the interactive model of PC browsers.
Limited Computing Resources
Many mobile devices today have more computing resources than larger systems did just a few years ago. Nonetheless, they do have limited resources dictated by their power and form factor constraints. Different devices have different resources, and the same application running on different devices will have a different performance.
Many applications use eXtensible Markup Language (XML) to represent data. Web services technologies also use XML. The use of XML in mobile environments warrants some discussion, as mobile devices using XML to represent and manipulate data will have to address a number of issues.
Mobile software platforms such as Java 2 Mobile Edition (J2ME) support only limited string manipulation capabilities. Applications that use generic XML parsers and XML APIs may not work.
XML is reasonably verbose as it uses tags to demarcate different data fields in human-readable form. Data represented using XML will require additional network bandwidth to transmit as well as additional processing resources to parse. XML's increased bandwidth and processing needs also result in higher power consumption.
XML's verbose nature and increased resource requirements have long been an issue with mobile application development. Data compression together with more efficient XML parsing and object representation techniques can be used to address these issues.
The user interface (UI) is perhaps the most important part of an application. If the UI is difficult to use, non-intuitive, or awkward, user frustration will slow or reduce the application's adoption, no matter how compelling or important the underlying application functionality.
Mobile applications have to be easy to use within their use case or context. An application that gives users directions while they are driving a car should not require the driver to stop driving and take both hands off the steering wheel to interact with it. Conversely, educational applications or games, which assume the full attention of the user, can utilize a more hands-on UI.
It is important to remember that a UI is bi-directional: it must facilitate entering information and it must also facilitate the user's comprehension of information. This information includes instructions (both written and contextual) for entering information, as well as specific data that is returned by the application's underlying business logic.
Most mobile platforms support graphical user interface (GUI) components such as buttons, text entry boxes, and selection boxes. Combinations of these and other GUI widgets can be used to effectively build UIs. Most mobile devices also provide physical knobs and buttons that can be combined with GUI components to implement a more intuitive and easier-to-use user interface.
Physical UI components and GUI components together with the contextual basis of the mobile device itself results in complex interactions and it is usually difficult to automate the development or mapping of UIs from one device to another. Transcoding technologies attempt to automate the development of UIs across multiple devices. Transcoding uses a database with information about the characteristics of devices to automatically re-target content and interactivity. Content and interactions that spanned 21-inch screens are reduced to just a few square inches by scaling down rich graphics, reducing colors, repositioning text and GUI components, or simply eliminating segments all together.
Two issues limit the usefulness of transcoding. Developers usually find themselves building least common denominator content and interactions that can be easily transcoded to a number of devices. This approach sacrifices the richness of some devices for the limitation of others.
Secondly, transcoding technologies usually cannot address issues of context of a device or of an application. This often results in non-intuitive interactions or presentation of content.
Transcoding achieves low costs of mobile information access and development, by sacrificing the richness of mobile user interfaces. Although low cost, these user interfaces are often non-intuitive and difficult to use, frustrating users and have led to abysmal adoption rates of mobile information services.
Since the user interface is the customer touch point, it behooves developers to spend additional time (and money) to build appropriate, context-aware, and easy-to-use user interfaces that leverage the richness of different devices and mobile platforms.
Macromedia's Flash is an interesting technology for the development of rich, mobile user interfaces. The mobile version of the Flash player comes pre-installed and bundled on a number of devices, including personal digital assistants (PDAs) and cellular phones.
Flash also has a powerful design environment, Flash MX, as well as additional tools and utilities (available through the Macromedia Web site) that cater to the needs of designers who are not necessarily engineers. That is, a designer who understands the psychological and contextual requirements of building mobile user interfaces can do so without having to write programming code.
Figure 10-5. A Flash-based mobile chess user interface.
Now that we have seen some of the challenges and issues in developing mobile applications and systems, in the next section we turn to developing mobile Web services solutions. We also discuss the pros and cons of different systems architectures in implementing such solutions.