Writing Mobile Code Essential Software Engineering for Building Mobile Applications [Electronic resources] نسخه متنی

اینجــــا یک کتابخانه دیجیتالی است

با بیش از 100000 منبع الکترونیکی رایگان به زبان فارسی ، عربی و انگلیسی

Writing Mobile Code Essential Software Engineering for Building Mobile Applications [Electronic resources] - نسخه متنی

Ivo Salmre

| نمايش فراداده ، افزودن یک نقد و بررسی
افزودن به کتابخانه شخصی
ارسال به دوستان
جستجو در متن کتاب
بیشتر
تنظیمات قلم

فونت

اندازه قلم

+ - پیش فرض

حالت نمایش

روز نیمروز شب
جستجو در لغت نامه
بیشتر
لیست موضوعات
توضیحات
افزودن یادداشت جدید











Usage Patterns


Perhaps the most critical difference between mobile device applications and desktop applications is the way in which people use them. Picture yourself at your computer desktop; what are you doing? If you are like most people, you are doing one of three things: browsing the Web, working on documents (word processing, spreadsheets, pictures, photographs, and so on), or communicating (e-mail, instant messaging, and so forth). These tend to be long-time duration and exploratory activities and the user will periodically switch between these activities midstream. If you are a developer (and the odds are pretty good you are if you are reading this book!), you can add software development to this list, which is absolutely a long-time duration and exploratory activity. If you are a player of computer games, you will know that many of the most interesting games for desktop computers are long-term and exploratory games allowing users to explore and interact with complex virtual worlds.

People who use both desktop applications and mobile device applications tend to use the two in different but complementary ways. While working with a mobile device, the user's activities tend to be short session length interrupt-driven or interrupt-causing interactions. The user is typically either responding to being interrupted or using the device to make an immediate request of some other person or process. Today's typical mobile phone is a great example of this. When you place a phone call or send an SMS text message, you are interrupting someone; when you get a phone call or an SMS message, you are being interrupted. This same usage model carries over to all kinds of mobile device applications. Successful mobile applications must be as natural and intuitive as making or receiving a phone call or SMS message.

Mobile device applications tend also to be more focused on enabling a few specific features very well as opposed to offering the general-purpose exploratory environment that successful desktop applications do. Because mobile devices are often operated using a single hand or by tapping a small screen with a stylus, it is important that users of the device be able to quickly discover and navigate to the information and features they want. The ability to quickly navigate to a small set of key features is an important aspect of a great mobile device experience.

Long-Duration vs. Short-Duration Activities


People using desktop computers tend to do so for long sessions. Working for an hour at a time is not unusual, and several-hour sessions are not atypical. In these sessions people mold and develop ideas over time and tend to do a great deal of iterating and revising. Because of this, startup time is not as important as giving the users the rich features they may need while exploring and working with their information.

Laptop computers tend to share many of the same usage patterns as desktops, but it is possible to see some mobile device characteristics emerging. Speeding up startup time (or wakeup time) and getting users back to the activities they were doing when they last shut down is an increasing priority. However, the usage patterns of laptops are still much more desktop oriented than they are mobile device oriented, and part of this is simply due to the relative physical size of the devices. Users can do an awful lot of things on a mobile phone in the time it would take them to get their laptop out of their bag, open the lid, start up the computer, get to the application they want to work with, and get online if required. This is very different from the "take it out of your pocket and use it right away" model that mobile phones or PDAs offer.

When using mobile devices, the same people's activities tend to be short term, ranging from several seconds to several minutes. Activities such as making a phone call, checking an appointment schedule, or entering or reading instant messages are all done using frequent but short-duration sessions. Even playing games tends to be a short-term activity on mobile devices. People playing games on mobile devices usually play for relatively short periods of time when they are in between activities. The games are intended to allow the user to pass extra time pleasurably while waiting for a train, sitting at an airport, or waiting to meet someone at the mall. Because of this focus on short-session usage and immediacy, mobile devices are usually in an "always on" or "instant on" state, where the time for users to access the device is on par with the time it takes for them to take the device out of their pocket.

It is important to note that although session time tends to be short, the underlying data the user works with is often long term. In the case of a mobile game, users may want to pick up where they left off the last time they played. For productivity applications, this trend is even more pronounced, with a classic example being the address book on a mobile phone (which must always be available). A common task when speaking to someone on the phone or in person is checking a personal appointment calendar and booking a follow-up meeting with the person. The user has a need to be able to quickly access the device, navigate to the person's contact information, create a new schedule item, and then resume the conversation without further delay. The underlying data is long term and durable, but the application usage pattern is short term and immediate.

Exploratory vs. Focused Activities


Desktop and laptop computers offer a very rich platform for exploring information. The large-screen real estate available enables the display of a great deal of peripheral information that may be of interest to the user. The keyboard and mouse offer a rich way to navigate through that information in a random-access manner. This enables the user to jump rapidly to any of the information visible on the large screen, flip through several layers of windows that currently may be open, quickly enter and revise relatively large amounts of data in a short time, or "drag and drop" to move information around various documents. These are all exploratory mechanisms for working with information.

Browsing the Web on a desktop computer is a great example of this kind of exploratory experience. Common high-bandwidth network access offers the possibility of downloading large amounts of information locally. This allows more information to be downloaded than the user has immediate need for, just in case the user will find it of peripheral interest. The user is commonly presented with a rich downloaded document to explore with many areas of interest to potentially branch off to. During this exploration, users commonly branch out into other documents and often have several browser windows open simultaneously so that they can switch between them to find the information they are looking for. Anyone who has used the Web to find a lowest-cost airfare is familiar with this experience. Multiple browser windows to different travel sites are open, and different arrival and departure dates are priced. Data is often copy/pasted from browsers into e-mail or other documents. Faced with a rich Web page with a great deal of information and many links, the user's next specific action is very difficult to predict. Will the user click a link? Will the user type a new address into the Web browser access bar? Will the user copy/paste some information from a Web page into a document? Will the user start an e-mail or instant message session? The possibilities are almost endless, and because of this the user typically works in an exploratory mode.

Similar exploratory usage patterns exist for rich client applications on personal computers such as e-mail applications, spreadsheets, and content-creation applications such as word processors and paint programs as well as for development tools. Users "task switch" often and in random-access ways to get to the information they need from different sources and integrate it for their own use. A person typing into a word processing document will continually iterate over the text, making improvements to the content and layout, revising the text, and navigating the document in a random-access manner. Users may switch to another application to grab some relevant information and copy it into the document they are working with. Spreadsheets offer an even more exploratory user interface by giving the user a huge tabular space in which to enter, modify, and analyze data; to draw charts; and to ask what-if questions. Development tools are also immensely exploratory and enable developers to quickly navigate around exploring their code and user interface design, browsing definitions, performing code transformations, and seeking reference materials relevant to the tasks they are trying to accomplish. Debugging code is by definition an act of exploring, experimentation, and analysis.

The best desktop applications enable users to explore information in a very free-form way. Conversely, great mobile applications enable the same users to zero in on specific information and services as quickly and as efficiently as possible with little or no navigation.

The same users deal with local documents differently on mobile devices than they do on desktop computers. It is often useful to be able to view and make small modifications to desktop-created word processing documents and spreadsheets on mobile devices, but these documents are almost never created and authored on devices. It is safe to assume that 90 percent of the content creation for these documents will happen on desktops and that devices will be used primarily for reading these documents.

In addition to applications used to surf the Internet and work with documents, there are also custom applications. Many kinds of custom applications exist on the desktopline-of-business applications, communications applications, analytical applications, data-entry and tracking applications, and so on. All of these applications have mobile device variants. The same "explore vs. focus" difference discussed previously exists between desktop and mobile applications. To be useful, the mobile applications should offer a focused experience to the same person who may use a more exploratory version of the desktop application. Think of mobile applications as offering a different view on the same data and processes as a desktop application. The data and processes are the same as the desktop, but the view is transformed and focused into a way that offers instant access to the key elements that the user may need while mobile.

A common mistake developers make when trying to bring a desktop application to a device is trying to bring down the whole application verbatim and shoehorn it into a device. This never works satisfactorily because of the usage differences between desktops and mobile devices discussed here.

A second common mistake is to take a desktop application and user interface and start slicing pieces out of it until it runs on the device. Related to this are efforts to port pieces of a larger desktop user interface to a device by breaking the large interface into a series of nested dialogs that can be displayed on the device's screen. Doing this will usually result in an awkward and less-functional desktop application, not a well-honed mobile device application. The fundamental question that needs to be asked is "What is the view of the data and processes that will be most useful for people using mobile devices?" From the answer to this question, you can start constructing the user interface from the ground up.

It is essential to think about the scenarios that users need to accomplish when mobile and to specifically optimize these tasks so that they work better than they do on the desktop. It is equally important to consider what parts of the application are not critical for mobile usage. These parts of the application should be de-emphasized or eliminated. Your mobile application should serve to behave as a kind of fish-eye lens for the users' needs, allowing a broad view but specifically zeroing on the most important tasks they want to accomplish.


A More In-Depth Look into Mobile Web Browsers


A mobile Web browser is an interesting example of a common rich client application running on a mobile device. Because of this, it is useful to examine how mobile Web browsers differ from their desktop counterparts. This will give some good metaphors to think about how other desktop applications may manifest themselves as mobile device applications and what design changes may be required to make the mobile experience a good one.

Many mobile devices now offer Internet browsers, but these browsers are very different in their usage models from desktop browsers. Although technologically similar (they both rende151 for display), their interaction with users is significantly different. Desktop browsers are designed to access the widest array of Web sites and to download and display complex documents. Mobile Internet browsers are designed to access mobile Web sites and download and distill documents to their essential information. Mobile browsers tend to work in one of two ways: (1) They download content specifically intended for mobile devices that is simpler in layout, has smaller-sized photos and images, and is designed to be read in a smaller window; or (2) they download generic Web-content and attempt to distill it down to its essence and display that to users.

Building a Great Web Experience for a Mobile Device Requires Cooperation Between the Device and Server

It is worth noting that trying to distill generi137 pages into a good viewable experience for a mobile device is a complex problem. Given the huge variety of layout possible wit142 and the mixing of core information with peripheral content and advertising, it is challenging to pull out what the essential information is and fit that onto a mobile device screen.

Instead of putting all the burden onto the device, a better result can often be achieved by tackling the problem on the server. Often, popular Web sites such as MSNBC or the BBC offer separate mobile device versions of their content. These two sites take different approaches to solving this problem that are worth understanding:

[http://www.msnbc.com/news/MobileChannel/mmc.asp]
This Web site automatically adjusts its response to the capabilities of the browser that makes the request. Results differ significantly when accessing the Web site from a desktop browser or a mobile device browser.

[http://news.bbc.co.uk/text_only.stm]
This BBC Web site offers a Web view with low-resolution pictures and limited formatting that can be displayed effectively on mobile devices.


The goal of displayin141 content effectively on a mobile device can be achieved much more effectively if the server is willing to meet the device half way and provide a simplified view of the data. Solving mobile device application challenges by building additional targeted server services is a good idea not just for Web applications but for all applications that access data on servers. If there is work you can do on a server to simplify design challenges faced by mobile devices, it often makes sense to do this.

In addition, although the address bar is prominently displayed and used in desktop browsers, it is often hidden and is much less used on mobile devices. Due to the smaller screen sizes and more limited input mechanisms, the increased time it would take to type a URL into a device and the space that the address bar takes up on the screen, the concept of an address bar is much less useful on a mobile device. Adding to this is the fact that much generic Web content will not render acceptably on mobile devices. All of this greatly lowers the utility of completely random-access navigation to Web addresses.

None of this should leave you with the impression that Web browsing for mobile devices is not useful or interesting; it is both! Many good mobile Web applications offer the user a lot of utility when accessed from devices. With the advent of server-side Web application technologies such as the ASP.NET Mobile Controls, it is now easy for Web developers to build "mobile views" to their existing Web content. Web browsing for mobile applications is a "killer application," but it is a different "killer application" from its desktop relative.


/ 159