Read an Excerpt
Web Application Design Patterns
By Pawan Vora
Morgan Kaufmann Publishers Copyright © 2009 Elsevier Inc.
All right reserved.
Chapter One Introduction
Increasingly, software applications are built using web technologies and made accessible via web browsers (e.g., Internet Explorer, Firefox, Safari, and Opera). They are commonly referred to as web applications, or hosted applications—applications based on a software as a service (SaaS) model or cloud computing. These web applications are different from more traditional web sites in that their emphasis is on allowing users to accomplish tasks such as send email, make travel reservations, find homes, pay bills, transfer money, buy products, send invitations, and so forth (Figures 1.1 through 1.4). Web sites, on the other hand, are content oriented and are designed to facilitate browsing and consumption of rather static information (Figure 1.5).
BENEFITS OF WEB APPLICATIONS
The trend in favor of web applications is understandable in view of the benefits these applications offer, as described in the following sections (Baxley, 2003; Turnbull, 2006).
Ease of access
Typically, the only software users need to access and use web applications is a browser such as Internet Explorer, Firefox, Safari, and Opera. Users do not need to download and install separate software to use different web applications, although there are instances when they have to download helper applications or plug-in modules, such as Adobe Flash, Java, Microsoft Silverlight, and so forth, to access all or part of a web application.
Moreover, because both the application and information are stored on servers of the application's providers and not on users' computers, users can access web applications from almost anywhere, as long as the computer they use has a web browser and Internet connectivity. This remote data storage also facilitates sharing and collaboration among users; for example, users can share bookmarks with applications such as Delicious (www.delicious.com) and Furl FIGURE 1.2 Users can search for travel options and make reservations using web applications (www.furl.net), and remotely collaborate on the same documents using productivity applications such as Google Docs and Spreadsheets (docs.google.com) and Zoho (www.zoho.com).
Ease of deployment
Web applications are also popular with businesses and software developers because they can be developed, updated, and maintained remotely without requiring users to install (or reinstall) them. A related advantage of web applications is that they can perform as specified regardless of the operating system on users' computers. They can be built once and deployed to almost any user, rather than creating separate versions of applications for Microsoft Windows, Macintosh OS X, GNU/Linux, and other operating systems.
"Trained" user base
The Web's growth and widespread adoption (from 16 million users in December 1995 to almost 1.5 billion users in June 2008, according to Internet World Stats; www.internetworldstats.com) has made the Web style of interaction familiar to a large number of users. Most Internet users can now be expected to be familiar with web browser terminology such as home, back, forward, bookmarks, hypertext links, submit buttons, and so forth. With this knowledge, and the fact that using web applications does not require elaborate installations, barriers to their use (or at least to try them out) are much lower. Further, it helps that many popular web applications are now available for free or have a free trial period.
Maturity and reliability of network connectivity and web technologies
CHALLENGES TO DESIGNING INTERFACES FOR WEB APPLICATIONS
Despite these benefits and increasing use, designing interfaces for web applications remains difficult. Challenges in creating usable interactions are mainly related to the underlying "loosely coupled" web architecture, a limited set of interactive controls natively supported in web browsers, and the lack of design guidance as to how user interactions should be implemented.
"Loosely coupled" web architecture
An important challenge faced by web application designers is caused by the "loosely coupled" or "stateless" nature of the Web. The Web's interaction paradigm is very simple: Users request web pages with web browsers, and servers respond by sending the requested pages to the browsers or informing users if there are problems retrieving those pages. However, once a user's request is satisfied by the web server, by sending the web page to the browser, the connection between the web server and the web browser is severed. When a user makes a subsequent request, the connection is established again with the server until the new web page is "reloaded" in the user's browser.
Limited set of controls, or widgets, to support application design
Inconsistent interaction approaches
Both the underlying technological architecture of the Web and the limited set of controls available make it difficult to create interactions for web applications comparable to desktop applications. Additionally, because most web applications are designed to be browser-agnostic, interactions and appearance cannot be simulated to match all operating systems; for example, tabs in the Macintosh OS X Aqua interface are visually quite different than the tabs in the Windows Vista interface (Figure 1.6).
Although the Web's relatively unrestricted development environment offers considerable creativity and flexibility to designers, the resulting diversity and inconsistency in user interfaces and interaction approaches in web applications is often challenging for users. This is due to the fact that users are faced with a variety of styles of interfaces and interactions, each with its own vocabulary of objects, actions, and visuals mixed together in the same application (see Tidwell, 2006). Figure 1.7 shows an example of changing the tab name in Zoho Notes (a note-taking web application like Microsoft OneNote) and Zoho Sheet (a worksheet web application like Microsoft Excel). To change the tab name in Zoho Notes, users must double-click the tab name and a Rename dialog pops up. In order to change the tab name in Zoho Sheet, users must right-click the tab and select the "Rename" option, which displays a pop-up window to allow users to change the tab name; double-clicking just selects the text.
To address these design challenges and accompanying usability problems, many corporations develop user interface design guidelines and style guides to manage the web application's "look and feel."
Applying design guidelines to develop usable web applications is not easy, however. Design guidelines are limited in their effectiveness, as they often advocate high-level principles (e.g., make system status visible; recognition is better than recall; prevent errors) or offer very specific guidance (e.g., align table headings to match the alignment of column data). On the other hand, design style guides focus on branding and visual design aspects and are usually specific to a platform (e.g., Macintosh OS X Aqua and Windows Vista) or to applications developed by a specific corporation (e.g., "Oracle Browser Look and Feel [BLAF] Guidelines," 2004), and do not necessarily provide detailed guidance for developing usable interactions.
Design guidelines and style guides are also quite lengthy and difficult to follow, because implementing one interaction requires user interface designers to be familiar with several sections within the document. For example, Apple's "Human Interface Guidelines" document is about 400 pages long, and to create a dialog with form controls, a designer would have to be familiar with several sections within "Part III: The Aqua Interface" (Figure 1.8), which has about 250 pages allocated to it.
Finally, design guidelines and style guides can also become too esoteric to be useful to those not familiar with human–computer interaction. This can limit their effectiveness as a means of communication among web application development team members, including customers, subject matter experts, clients, requirement analysts, software developers, product managers, and marketers, who are unlikely to be well-versed in human–computer interaction and usability.
Using design patterns addresses many of these concerns and can complement design guidelines and style guides to create better, and consistent, interface designs and improve usability of web applications.
The notion of patterns was introduced in the field of architecture by Christopher Alexander and his colleagues in A Pattern Language (Alexander et al., 1977) and The Timeless Way of Building (Alexander, 1979). They explained the nature of patterns as follows:
Each pattern describes a problem that occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. (Alexander et al., 1977, p. x)
Thus, patterns explicitly focus on the problem within the context of use and guide designers on when, how, and why the solution can be applied. Patterns are practical and describe instances of "good" design while embodying high-level principles and strategies.
Patterns have recently become attractive to user interface and software designers as well for their following benefits:
Proven design solutions and guidance for their use. Patterns identify real solutions and not abstract principles or guidelines. In addition, by making the context and problem explicit and summarizing the rationale for their effectiveness, patterns explain both how a problem can be solved and why the solution is appropriate for a particular context. However, because it's a generic "core" solution, its use can vary from one implementation to another without making it look "cookie-cutter" or discouraging creativity.
Improved design process. Identifying design patterns and cataloging them can help user interface designers increase productivity by reducing time spent "reinventing the wheel." Furthermore, if user interface components are built for patterns in the form of a design pattern library (see Chapter 13), designs can be developed, tested, and iterated rapidly, and can help shorten release cycles.
Excerpted from Web Application Design Patterns by Pawan Vora Copyright © 2009 by Elsevier Inc. . Excerpted by permission of Morgan Kaufmann Publishers. All rights reserved. No part of this excerpt may be reproduced or reprinted without permission in writing from the publisher.
Excerpts are provided by Dial-A-Book Inc. solely for the personal use of visitors to this web site.