capability. How does our modern computer user view the results ofhis or her computations? On a 19-inch monitor.Programmers of most applications no longer need concernthemselves too much with processor and memory efficiency, whichwere obsessions in the 1960s. CPU and RAM are available inabundance. But screen real estate is as precious as ever. Look atyour page designs. Is the most important in<strong>for</strong>mation availablewithout scrolling? (In the newspaper business the term <strong>for</strong> this is"above the fold".) Are you making the best use of the screen spacethat you have? Are these large swaths of empty space on the page?Could you be using HTML tables to present two or three columns ofin<strong>for</strong>mation at the same time?One particularly egregious waste of screen space is the use of icons.Typically users can't understand what the icons mean so they needto be supplemented with plain language annotation. Generally thebest policy is to let the in<strong>for</strong>mation be the interface, e.g., display a listof article categories (the in<strong>for</strong>mation) and clicking on a category is theway to navigate to a page showing articles within that category.TimeMost people prefer fast to slow. Most people prefer consistent servicetime to inconsistent service time. These two preferences contributesubstantially to the popularity of McDonald's restaurants worldwide.When people are done with their lunch they bring those samepreferences to computer applications: fast is better than slow;response time should be consistent from session to session.Computer and network speeds will change over the years but humanbeings will evolve much more slowly. Thus we should start byconsidering limits derived from the humanity of our users. Theexperimental psychologists will tell us that short-term memory is good<strong>for</strong> remembering only about seven things at once ("The MagicalNumber Seven, Plus or Minus Two: Some Limits on Our Capacity <strong>for</strong>Processing In<strong>for</strong>mation", George A. Miller, The Psychological Review1956, 63:81-97) and that this memory is good <strong>for</strong> only about 20seconds. It is thus unwise to build any computer application in whichusers are required to remember too much from one page to another.It is also unwise to build any computer application where theinterpage delay is more than 20 seconds. People might <strong>for</strong>get whattask they were trying to accomplish!• task accomplishment: the user wants to find the photoupload page, not find discussions of photo sharing when heor she types "photo sharing"• housekeeping: the user wants to find the site's privacypolicy, not a discussion about privacy policies, after typing"privacy policy"On a large site a user might wish to restrict the search in some way.If the search <strong>for</strong>m is at the top of a document that is a chapter of anonline book, it might make sense to offer "whole site" and "within thechapters of this book" options. If the publisher or the other users havegone to the trouble of rating content, the default search might limitresults to those documents that have been rated of high quality. Ifthere are multiple discussion <strong>for</strong>ums on the site, each of which isessentially a self-contained subcommunity, the search boxes onthose pages might offer a "restrict searching to postings in this <strong>for</strong>um"option. If a user hasn't visited the site <strong>for</strong> a month and wants to see ifthere is anything new and relevant, the site should perhaps offer a"restrict searching to content added within the last 30 days" option.12.1 What's Wrong with SQL (Search Quality)The relational database management system (RDBMS) sounds likethe perfect tool <strong>for</strong> this job. We have a lot of data and we want toprovide a lot of flexibility in querying. Suppose a person comes to asite <strong>for</strong> athletes and types "running" into the search <strong>for</strong>m. The sitesends the following SQL query to the database:select *from contentwhere body like '%' || :user_query || '%'which, by the time the bind variable :user_query is substituted,turns intoselect *from contentwhere body like '%running%'In Oracle this won't pick up a row whose message contains the sameword but with a different capitalization. Instead we doselect *from contentwhere upper(body) like upper('%running%')122227
Chapter 12S E A R C HRecall from the Planning chapter our principles of sustainable onlinecommunity:2261. magnet content authored by experts2. means of collaboration3. powerful facilities <strong>for</strong> browsing and searching bothmagnet content and contributed content4. means of delegation of moderation5. means of identifying members who are imposing an undueburden on the community and ways of changing theirbehavior and/or excluding them from the community withoutthem realizing it6. means of software extension by community membersthemselvesA sustainable online community is one that can accomodate newusers. If Joe Novice, via browsing and searching, cannot find existingcontent relevant to his needs, he will ask questions that will annoyother community members: "Didn't you search the archives?","Haven't you read the FAQ?" Long-term community members,instead of being stimulated by discussion of new and interestingtopics, find their membership a tiresome burden of directing newusers to pages that they "should" have been able to find on their own.A community's first line of defense is high quality in<strong>for</strong>mationarchitecture and navigation, as discussed at the end of the ContentManagement chapter. Users are better at browsing than <strong>for</strong>mulatingsearch queries. A community's second line of defense, however, is asuperb full-text search facility. The search database must includeboth publisher-authored and user-contributed content. Here are someexample query categories:• question answering: e.g., planning a trip to Sanibel Island(Florida) to take pictures of birds and wanting to know whichlong telephoto lens to rent, the user types "best lensSanibel"• navigation: the user knows that a document exists on theserver but can't remember where it is, e.g., rememberingthat a tutorial exists on how to take pictures in gardens, theuser types "garden photography"IBM Corporation carried out some studies around 1970 anddiscovered the following required computer response times:• 0.1 seconds <strong>for</strong> direct manipulation, e.g., moving objectsaround on a screen with a pointer.• 1 second <strong>for</strong> maximum productivity in screen-click-screensystems such as they had on the IBM 3270 terminal back in1970 and we have on the Web in 2003• less than 10 seconds to hold the full attention of a user;when response times extended beyond 10 seconds userswould try to engage in another task, such as reading amagazine, while also using the computer applicationA reasonable goal to strive <strong>for</strong> in an <strong>Internet</strong> application is subsecondresponse time. This goal is based partly on IBM's research,partly on the inability to achieve (in 2003) the 0.1-second mark atwhich direct manipulation becomes possible, and partly based onwhat is being achieved by the best practitioners. Your users will haveused Amazon and Yahoo! and eBay. Any service that is slower thanthese is going to be immediately set off alarm bells in the user's mind:maybe this site is going to fail altogether? maybe I should try to find acompetitive site that does the same job but is faster?One factor that affects page loading time is end-to-end bandwidthbetween your server and the user. You can't do much about thisexcept measure and average. Some Web servers can be configuredor reprogrammed to log the total time spent serving a page. Bylooking at the times spent serving large photographs, <strong>for</strong> example,you can infer average bandwidth available between your server andthe users. If the 10th percentile users are getting 50 Kbits per secondyou know that, even if your server were infinitely fast at preparingpages, you should try to make sure that your pages, with graphics,are either no larger than 50 Kbits in size or that the HTML isdesigned such that the page will render incrementally (a page that isone big TABLE is bad; a page in which any images have WIDTH andHEIGHT tags is good because the text will be rendered immediatelywith blank spaces that will be gradually filled in as the images areloaded).You can verify your decisions about page layout and graphicsheaviness by comparing your pages to those of the most successful<strong>Internet</strong> service operators such as eBay, Yahoo!, and Amazon.123
- Page 1 and 2:
SoftwareEngineering forInternetAppl
- Page 3 and 4:
Signature: ________________________
- Page 5 and 6:
end-users. We use every opportunity
- Page 7 and 8:
• availability of magnet content
- Page 9 and 10:
• we want to see if a student is
- Page 11 and 12:
you supply English-language queries
- Page 13 and 14:
What to do during lecturesWe try to
- Page 15 and 16:
The one-term cram courseWhen teachi
- Page 17 and 18:
332• spend a term learning how to
- Page 19 and 20:
Once we've taught students how to b
- Page 21 and 22:
has permission to perform each task
- Page 23 and 24:
UDDIUnixcustomer's credit card. If
- Page 25 and 26:
thousands of concurrent users. This
- Page 27 and 28:
OraclePerlnamed XYZ" without the pr
- Page 29 and 30:
LDAPLinuxbits per color, a vastly s
- Page 31 and 32:
FilterFirewallFlat-fileGIF318functi
- Page 33 and 34:
when there is an educational dimens
- Page 35 and 36:
system. The authors of the core pro
- Page 37 and 38:
Sign-OffsTry to schedule comprehens
- Page 39 and 40:
scheduling goals that both you and
- Page 41 and 42:
Client Tenure In Job (new, mid-term
- Page 43 and 44:
ReferencesEngagement ManagementSQL*
- Page 45 and 46:
Decision-makers often bring senior
- Page 47 and 48:
presentation to a panel of outsider
- Page 49 and 50:
300always been written by programme
- Page 51 and 52:
17.3 Professionalism in the Softwar
- Page 53 and 54:
Try to make sure that your audience
- Page 55 and 56:
Chapter 17WriteupIf I am not for my
- Page 57 and 58:
Suppose that an RDBMS failure were
- Page 59 and 60:
analysis programs analyzing standar
- Page 61 and 62:
at 9 hours 11 minutes 59 seconds pa
- Page 63 and 64:
found" will result in an access log
- Page 65 and 66:
15.18 Time and MotionThe team shoul
- Page 67 and 68:
select 227, 891, 'algorithm', curre
- Page 69 and 70:
create table km_object_views (objec
- Page 71 and 72: • object-create• object-display
- Page 73 and 74: The trees chapter of SQL for Web Ne
- Page 75 and 76: );274-- ordering within a form, low
- Page 77 and 78: and start the high-level document f
- Page 79 and 80: Example Ontology 2: FlyingWe want a
- Page 81 and 82: systems. What would a knowledge man
- Page 83 and 84: spreadsheet". Other users can comme
- Page 85 and 86: Chapter 15Metadata (and Automatic C
- Page 87 and 88: {site url}{site description}en-usCo
- Page 89 and 90: drawing on the intermodule API that
- Page 91 and 92: At this point you have something of
- Page 93 and 94: • description• URL for a photo
- Page 95 and 96: Here's a raw SOAP request/response
- Page 97 and 98: Chapter 14Distributed Computing wit
- Page 99 and 100: conduct programmer job interviews h
- Page 101 and 102: Most admin pages can be excluded fr
- Page 103 and 104: content that should distinguish one
- Page 105 and 106: Chapter 13Planning ReduxA lot has c
- Page 107 and 108: the Internet-specific problem of no
- Page 109 and 110: wouldn't see these dirty tricks unl
- Page 111 and 112: 12.8 Exercise 4: Big BrotherGeneral
- Page 113 and 114: than one call to contains in the sa
- Page 115 and 116: A third argument against the split
- Page 117 and 118: way 1 1/16One might argue that this
- Page 119 and 120: absquatulate 612bedizen 36, 9211cry
- Page 121: What if the user typed multiple wor
- Page 125 and 126: long as it is much easier to remove
- Page 127 and 128: features that are helpful? What fea
- Page 129 and 130: made it in 1938)? Upon reflection,
- Page 131 and 132: environment, we identify users by t
- Page 133 and 134: those updates by no more than 1 min
- Page 135 and 136: Balancer and mod_backhand, a load b
- Page 137 and 138: translation had elapsed--the site w
- Page 139 and 140: It seems reasonable to expect that
- Page 141 and 142: 11.1.5 Transport-Layer EncryptionWh
- Page 143 and 144: such as ticket bookings would colla
- Page 145 and 146: give their site a unique look and f
- Page 147 and 148: It isn't challenging to throw hardw
- Page 149 and 150: Chapter 11Scaling GracefullyLet's l
- Page 151 and 152: 10.15 Beyond VoiceXML: Conversation
- Page 153 and 154: Consider that if you're authenticat
- Page 155 and 156: In this example, we:194• ask the
- Page 157 and 158: As in any XML document, every openi
- Page 159 and 160: (http://www.voicegenie.com). These
- Page 161 and 162: Chapter 10Voice (VoiceXML)questions
- Page 163 and 164: 9.15 MoreStandards information:•
- Page 165 and 166: 9.14 The FutureIn most countries th
- Page 167 and 168: 9.10 Exercise 7: Build a Pulse Page
- Page 169 and 170: 9.6 Keypad HyperlinksLet's look at
- Page 171 and 172: text/xml,application/xml,applicatio
- Page 173 and 174:
Protocol (IP) routing, a standard H