Example user class decomposition on photo.netTo give you an idea of what a user class decomposition might looklike, we'll walk through one <strong>for</strong> the photo.net service.First, consider the overall objective of photo.net: A place where aperson can go and get the answer to any question aboutphotography.Second, consider levels of administrative privilege. There are sitewideadministrators, who are free to edit or delete any content onthe site. These administrators also have the power to adjust theauthority of other users. We have moderators who have authority toapprove or delete postings in particular discussion <strong>for</strong>ums. Finallythere are regular users who can read, post, and edit their owncontributions. A less popular service could probably get away withonly two levels of admin privilege.A different way of dividing the users is by purpose in visiting theservice:48• wanna-be point and shooter -- wants quick advice on whatpoint and shoot camera to buy and where to buy it; wants toinvest minimal time, ef<strong>for</strong>t, and money in photography• novice photographer shopper -- wants to begin takingpictures <strong>for</strong> purposes of artistic expression but does nothave a camera with flexible controls right now• novice photographer learner -- has the right equipmentbut wants ideas <strong>for</strong> where, when, and how to use it; wantscritiques of finished work• expert photographer -- wants new ideas, to see what isnew in the world of hardware, wants to share expertise,wants community• wanna-be commercial photographer -- might be a highschool or college student curious about the future or anolder person wanting to change careers; wants to knowwhether it is feasible to make a living doing photographyand, if so, how to start.• exhibitor -- wants to upload photos into the photo sharingsystem and develop an audience among the photo.netreadership• traveler -- wants to know about locations worldwide <strong>for</strong>photography incidental to an already planned trip or wantsideas <strong>for</strong> where to travel <strong>for</strong> photographic inspirationhad support contracts <strong>for</strong> them) or how to make sure thatnew code works on every brand of RDBMS5. having a strict open-source software policy; reusablecode was documented and open-sourced in the hope that itwould aid other programmers worldwide6. dragging people out to writing retreats; mostprogrammers say that they can't write but experience showsthat peoples' writing skills improve dramatically if only theywill practice writing. We had a beach house near ourheadquarters and dragged people out <strong>for</strong> long weekends tofinish writing projects with help from other programmers whowere completing their own writing projects.7. establishing our own university, TAing at existinguniversities, and mentoring within our offices; a lot ofPhD computer scientists are reluctant to leave academiabecause they won't be able to teach. But we started our ownone-year post-baccalaureate program teaching the normalundergrad computer science curriculum and we were happyto pay a developer to spend a month there teaching acourse. We encouraged our developers to volunteer as TAsor lecturers at universities near our offices. We insisted thatsenior developers review junior developers' code internally.How did it work out? Adhering to these principles, we built aprofitable business with $20 million in annual revenue. Beingengineers rather than business people we thought we were beingsmart by turning the company over to professional managers andwell-established venture capital firms. In search of higher profit theyabandoned our principles and, in less than two years, turned whathad been monthly profits into losses, burning through $50 million incash. The company, by now thoroughly conventional, tanked.In short, despite the experiment having ended rather distressingly itprovided evidence that these seven principles can yield exceptionallyhigh achievement and profits.17.6 Exercise 2Write down your own definition of software engineeringprofessionalism. Explain how you would put it into practice and howyou could build a sustainable organization to support that definition.17.7 Final PresentationIn any course using this textbook, we suggest allocating 20 minutesof class time at the end of any course, per project, <strong>for</strong> a final301
300always been written by programmers who were willing tomake an extra ef<strong>for</strong>t7. a professional programmer teaches face-to-face; we'venot found a substitute <strong>for</strong> face-to-face interaction so asoftware engineering professional should teach fellowworkers via code review, teach short overview lectures tolarge audiences, and help teach multi-week coursesCould one create an organization where programmers can excelalong these seven dimensions? In a previous life, the authors did justthis! We created a free open-source toolkit <strong>for</strong> building <strong>Internet</strong>applications, i.e., something to save customers the agony of doingwhat you've just spent all semester doing (building an applicationfrom scratch). Here's how we worked toward the previously statedobjectives:1. committing to attack the hardest problems <strong>for</strong> a widerange of computer users; niche software products areeasy and profitable to build but most of the programmers onsuch a product are putting in the 10,000th feature. Ourcompany simultaneously attacked the problems of publiconline community, B2B ecommerce, B2C ecommerce,cooperative work inside an organization, cooperative workacross organizations, running a university, accounting andpersonnel (HR) <strong>for</strong> a services company, etc. This gave ourprogrammers plenty of room to grow.2. staying lean on the sales, account management, userinterface, and user experience specialists; aprogramming team was in direct contact with the <strong>Internet</strong>service operator and oftentimes with end-users. Ourprogrammers had a lot of control over and responsibility <strong>for</strong>the end-user experience.3. hiring good people and paying them well; it is onlypossible to build a high-quality system if one has highqualitycolleagues. Despite a tough late 1990s recruitingmarket we limited ourselves to hiring people who haddemonstrated an ability to produce high-quality code on atrio of problem sets (originally developed <strong>for</strong> this course'spredecessor at MIT).4. giving little respect to our old code and not striving <strong>for</strong>compatibility with too many substrate systems; we letour programmers build their professional reputation <strong>for</strong>innovation rather than become embroiled in worrying aboutwhether a new thing will inconvenience legacy users (we• reader -- likes the travel stories like Travels with Samanthaand viewing photographs but does not want to takephotographs him or herselfA final way of dividing users that may be useful is by how theyconnect. In the case of photo.net it is easy to envision the Webbrowser user. This user is uploading and downloading photos,participating in discussions, reading tutorials, shopping <strong>for</strong>equipment, etc. The same person may connect via a mobile phone inwhich case he or she becomes a mobile user. If the mobile user is inthe middle of a photographic project we want to provide in<strong>for</strong>mationabout nearby camera shops, processing labs, repair shops, time ofsunset, good locations, and other useful data. If the mobile user isconnecting <strong>for</strong> social purposes we need to think about what arepractical ways <strong>for</strong> a person on a mobile phone to participate in anonline community. Our engineering challenge is similar <strong>for</strong> thetelephone user.3.2 Usage ScenariosFor each class of user you should write down a rough idea of what aperson in this class would get from your new service. You may wantto hint at page flow.Example: novice photographer shopper at photo.netThe novice should start by reading a bunch of carefully authoredcamera buying advice articles and then reviews of specific cameras.Much of the best shopping advice is contained in question-andanswerexchanges within the discussion <strong>for</strong>ums so editors will need away to pick out and point to the best threads in the <strong>for</strong>um archives.After our user has read all of this stuff, it would be ideal if he or shecould be directed into a Q&A <strong>for</strong>um where "here's what I've decidedto buy; what do you think?" questions are welcomed. That could beimplemented as an explicitly social shopping system with one column<strong>for</strong> responses from other readers and an adjacent column <strong>for</strong> bidsfrom camera shops.Example: site-wide administrator at photo.netThe site-wide administrator should log in and see a page that givesthe pulse of the community with statistics on the number of newusers registered, the quantity of photos uploaded into the photosharing system, the activity in the discussion <strong>for</strong>ums, the relativeef<strong>for</strong>ts of the moderators (volunteers from the community). If thereare unbanned users who been responsible <strong>for</strong> an onerous amount ofmoderator work in deleting off-topic postings, etc., these should be49
- 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: presentation to a panel of outsider
- 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 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