3.12 Domain Name SystemThe Domain Name System (DNS) translates human-readablehostnames, e.g., www.google.com, into machine-readable andnetwork-routable IP addresses, e.g., 216.239.57.100. DNS is adistributed application in that there is no single computer that holdstranslations <strong>for</strong> all possible hostnames. A domain registrar, e.g.,register.com, records that the domain servers <strong>for</strong> the google.comdomain are at particular IP addresses. A user's local name server willquery the name servers <strong>for</strong> google.com to find the translation <strong>for</strong> thehostname www.google.com. Note that there is nothing magic about"www"; it is merely a conventional name <strong>for</strong> a computer that runs aWeb server. The procedure <strong>for</strong> translating a hostname such asfroogle.google.com is the same as that applied <strong>for</strong> www..3.13 Exercise 5: Settle on a hostnameWorking with your client, pick a hostname <strong>for</strong> the application thatyou'll be building this semester. If you're building something withinMIT, <strong>for</strong> example, you'll probably want to pick something.mit.edu. Youand your client will need to navigate the IT bureaucracy to registerthat hostname and map it to the IP address of your server. If you'rebuilding a service <strong>for</strong> a client who does not have an <strong>Internet</strong> domain,encourage them to visit a come up with a good name and register it.The authors have had good experience with register.com, a servicethat includes bundled use of their DNS servers; the domain ownercan edit the hostname-to-IP-address translations with a Web browserinterface.3.14 Exercise 6: Negotiate Intellectual PropertyRightsOne of the thing that distinguishes a professional software engineeris success in negotiating intellectual property rights. If you give awayall rights to everything that you produce as a "work <strong>for</strong> hire" you won'thave a personal toolkit of software that you can reuse on newprojects. If you don't give away any rights nobody will be able to runyour software, which probably means that you won't be able to solvesocial or organizational problems. A good negotiator gives awaythings that are valuable to the other side but that aren't valuable tohis or her side.user". For many services an intermediate granularity of "one session"will be appropriate.With a "one session" granularity and appropriate dimensions it ispossible to ask questions such as "What percentage of the sessionswere initiated in response to an ad at Google.com?" (source fieldadded to the fact table), "Compare the likelihood that a purchase wasmade by users on their 4th versus 5th sessions with the service?"(nth-session field added to the fact table), "Compare the value ofpurchases made in sessions by <strong>for</strong>eign versus domestic customers"(purchase amount field added to the fact table plus a customerdimension).16.10 More• www.analog.cx -- download the analog Web server loganalyzer• http://www.microsoft.com/technet/treeview/default.asp?url=/technet/ScriptCenter/logs/logparser/default.asp -- MicrosoftLog Parser• www.cygwin.com -- standard Unix tools <strong>for</strong> Windows16.11 Time and MotionGenerating the first access log report might take anywhere from afew minutes to an hour depending on the quality of the log analysistool. As a whole the first exercise shouldn't take more than two hours.Tracking errors should take 2 to 4 hours. Talking to the client willprobably take about one hour. Designing the data warehouse shouldtake about one to two hours depending on the student's familiaritywith data warehousing.During this course, <strong>for</strong> example, you will ideally want to retainownership of all software that you produce. You will there<strong>for</strong>e be freeto reuse the code in any way shape or <strong>for</strong>m. The client, however, isgoing to be putting in a lot of time and ef<strong>for</strong>t working with you over aperiod of months and is thus entitled to some benefit. Your university56293
Suppose that an RDBMS failure were combined with a naiveimplementation of notify_the_maintainers on a site that gets10 requests per second. Suppose further that all of the people on theemail notification list have gone out <strong>for</strong> lunch together <strong>for</strong> one hour.Upon their return they will find 60x60x10 = 36,000 identical emailmessages in their inbox.To avoid this kind of debacle it is probably best to havenotify_the_maintainers record a last_notification_senttimestamp in the HTTP server's memory or on disk and use it toignore or accumulate requests <strong>for</strong> notification that come in, say,within 15 minutes of a previous request. A reasonable assumption isthat a programmer, once alerted, will visit the server and start lookingat the full error logs. Thus last_notification_sent need not actuallysend out in<strong>for</strong>mation about every problem encountered.16.8 Exercise 3: Talk to Your ClientUsing the standardized Web server log reports that you obtained inan earlier exercise as a starting point, talk to your client about whatkind of user activity analysis he or she would really like to see. Youwant to do this after you've got at least something to show so that thediscussion is more concrete and because the client's thinking is likelyto be spurred by looking over a log analyzer's reports and noticingwhat's missing.Write down the questions that your client says are the mostimportant.16.9 Exercise 4: Design a Data WarehouseWrite a SQL data model <strong>for</strong> a dimensional data warehouse of useractivity. Look at the retail examples inhttp://philip.greenspun.com/sql/data-warehousing <strong>for</strong> inspiration. Theresulting data model should be able to answer the questions put <strong>for</strong>thby your client in Exercise 3.The biggest design decision that you'll face during this exercise is thegranularity of the fact table. If you're interested in how users get frompage to page within a site the granularity of the fact table must be"one request". On a site such as the national "don't call me", registrywww.donotcall.gov, launched in 2003, you might only want to storeone row per registered user, summarizing their appearance at thesite and completion of registration, a fact table granularity of "one292tuition payments have probably drained away all of the cash in yourbank account and there<strong>for</strong>e you won't be giving the client money ascompensation <strong>for</strong> his or her time. What you can do is give the client alicense to use your software. This obviously benefits the client but italso benefits you. The more people that are out there happily runningyour software the better your professional resume looks.Should you try to limit what the client can do with your software?Generally this isn't worthwhile. Any organization that comes to you <strong>for</strong>programming assistance is probably not an organization that willwant to hang out a shingle and offer to develop software <strong>for</strong> others. Ifthey do decide that it would make sense to adapt your software toanother application within the company it is very likely that they willcall you first to offer a consulting fee in exchange <strong>for</strong> your assistance.How about limiting your liability? Oftentimes software engineers arecalled upon to write programs whose failure would have catastrophicresults. Suppose that you are offered $100,000 to write a tradingprogram <strong>for</strong> an investment bank. That may seem like a great dealuntil the bank sues you <strong>for</strong> $100 million, alleging that a bug in yourprogram cost them $100 million in lost profits. In the biomedical fielda bug can be much more serious. There is the famous case of theTherac-25 radiation treatment machine, bugs in whose controlsoftware cost lives (see http://sunnyday.mit.edu/therac-25.html).Disclaiming liability is difficult, even <strong>for</strong> trained lawyers, and hencethis is best left to professionals. Nearly every commercial softwarelicense includes a disclaimer of warranty. Here's a snippet from theMicrosoft End User License Agreement (EULA):19. DISCLAIMER OF WARRANTIES. TO THE MAXIMUM EXTENTPERMITTED BY APPLICABLE LAW, MICROSOFT AND ITSSUPPLIERS PROVIDE THE SOFTWARE AND SUPPORTSERVICES (IF ANY) AS IS AND WITH ALL FAULTS, AND HEREBYDISCLAIM ALL OTHER WARRANTIES AND CONDITIONS,WHETHER EXPRESS, IMPLIED, OR STATUTORY, INCLUDING,BUT NOT LIMITED TO, ANY (IF ANY) IMPLIED WARRANTIES,DUTIES OR CONDITIONS OF MERCHANTABILITY, OF FITNESSFOR A PARTICULAR PURPOSE, OF RELIABILITY ORAVAILABILITY, OF ACCURACY OR COMPLETENESS OFRESPONSES, OF RESULTS, OF WORKMANLIKE EFFORT, OFLACK OF VIRUSES, AND OF LACK OF NEGLIGENCE, ALL WITHREGARD TO THE SOFTWARE, AND THE PROVISION OF ORFAILURE TO PROVIDE SUPPORT OR OTHER SERVICES,INFORMATION, SOFTWARE, AND RELATED CONTENT57
- 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: Chapter 17WriteupIf I am not for my
- 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 and 122:
What if the user typed multiple wor
- Page 123 and 124:
Chapter 12S E A R C HRecall from th
- 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