6.4 What is Different About News?What is so different about news that we need to have a separatetable? Oftentimes news has an expiration date, after which it is nolonger interesting and should be pushed into an archive. "Pushinginto an archive" does not necessarily mean that the item must bemoved into a different table. It might be enough to program thepresentation scripts so that unexpired news items are on the firstpage and expired items are available by clicking on "archives".Often a company's press release will be tagged "<strong>for</strong> release Monday,April 17." If a publisher wants to continue receiving press releasesfrom this company, it will respect these dates. This implies the need<strong>for</strong> a release_time column in the news data model.Other than these two columns (expiration_time andrelease_time), it would seem that a news story needs more orless the same columns as articles: a place <strong>for</strong> a one-line summary, aplace <strong>for</strong> the body of the story, a way to indicate authorship, a way toindicate approval within the editorial workflow.Upon further reflection, however, perhaps these columns could beuseful <strong>for</strong> all site content. An article on installing Windows 2000probably should be set to expire in 2002 or 2003. If a bunch ofauthors and editors are working on a major site update, perhaps itwould be nice to synchronize the release of the new content <strong>for</strong>Tuesday at midnight. Let's go back to content_raw:create table content_raw (content_id integer primary key,refers_to references content_raw,creation_user not null references users,creation_date not null date,release_time date, -- NULL means "immediate"expiration_time date, -- NULL means "never expires"languagechar(2) references language_codes,mime_type varchar(100) not null,one_line_summary varchar(200) not null,body clob,editorial_status varchar(30)check (editorial_status in('submitted','rejected','approved','expired')));How do we find news stories amongst all the content rows? Whatdistinguishes a news story with a scheduled release time andexpiration date from an article on the Windows 2003 operating100Place your completed plan at /doc/planning/YYYYMMDDimplementationand email your client(s) and instructors notifyingthem that the plan is ready <strong>for</strong> final review.13.7 Is this Necessary?Suppose that your team is only two people and your client is oneteam member's mother, owner of a local SCUBA diving shop. Is itnecessary to engage in such a <strong>for</strong>mal process? Wouldn't it bepossible to obtain a successful result by sitting down in one room andhacking out code, periodically calling Mom over to look at what'sbeen done?Absolutely.Why the emphasis on process then when the teams are so small? Itis a good habit <strong>for</strong> every software developer to get into, especially asmodern software projects tend to stretch across corporate andinternational borders.Consider a software project from a Jane Decision-Maker'sperspective. Jane doesn't know enough to distinguish between goodcode and bad code. Nor can she look at a mostly-finished project andfigure out how much more coding is required to make it work. JaneDecision-Maker is not going to be com<strong>for</strong>ted by a team ofprogrammers with a track record of pulling everything together with alast-minute miracle. How does she know that the miracle will happenagain on her project?What Jane will be com<strong>for</strong>ted by is process and programmers whoappear to operate in a manner that is predictable to them and theirclient. The more detailed the plain-language plans the morecom<strong>for</strong>ted Jane will be, especially if the work has been contracted outto a separate corporation.In summary, larger teams require more process, longer projectsrequire more process, and work that is spread across enterprisesand/or international borders requires more process. Your project <strong>for</strong>this class is being done by a small team on a condensed scheduleand, ideally, within the same city as the client. What benefit is thereto you from using a process that isn't absolutely necessary?One benefit from using a more thorough process is that you'll tend toimpress people a lot more in presentations of your work. People who249
Most admin pages can be excluded from the Minimum LaunchableFeature Set. Until there are users there won't be any user activity andthere<strong>for</strong>e little need <strong>for</strong> statistics or moderation and organization ofcontent. Things that are valuable to the users and client butreasonably easy to implement should be in Version 1.0. Anything thatrequires serious programming ef<strong>for</strong>t or that cannot be completelyspecified right now should be pushed out to Version 2.0.Place your feature grid at /doc/planning/YYYYMMDD-featuregrid.13.6 Exercise 3: Implementation PlanNow that you've figured out what you're going to do, it is time to writedown how you're going to do it. Write an implementation plan thatcovers all activity by team members and the client through the lastday of this course. The implementation plan should include dates <strong>for</strong>code freezes, acceptance testing, launch, and any relaunches. Theimplementation plan should be explicit and specific about which teammember is going to do what and, more important, what the client'sresponsibilities are. "Joe Client will deliver additional site content byearly May" is too vague. Better: "Joe Client will deliver copy <strong>for</strong> the/about-us, /privacy, /copyright, and /contact pages by May 2."Keep in mind that your goal is to launch the service as soon aspossible so that everyone can learn from interaction with real liveusers.How can you estimate the number of hours that will be required toexecute the tasks in the plan? After all, you've never done the thingsin the implementation plan be<strong>for</strong>e or they wouldn't be in the "to-beimplementedplan". The best tool <strong>for</strong> estimating a new project is arecord of how long it took to do a bunch of old projects. To what isthe new project most similar? Suppose that it took you 3 days to builda discussion <strong>for</strong>um system <strong>for</strong> example and you're asked to build aclassified ad system. Both systems need a comparable numberdatabase tables. Both systems accept content from users and requiresome sort of administrator approval. If built on the same server that iscurrent running the discussion <strong>for</strong>um, the classified ad systemdoesn't require any new software, subsystems, or other tools that youhaven't already installed and used. Thus it would probably be safe toestimate the classified ad system as a 3-day project.248system with a scheduled release time and expiration date. We'll needone more column:create table content_raw (content_id integer primary key,content_type varchar(100) not null,refers_to references content,creation_user not null references users,creation_date not null date,release_time date,expiration_time date,languagechar(2) references language_codes,mime_type varchar(100) not null,one_line_summary varchar(200) not null,body clob,editorial_status varchar(30)check (editorial_status in('submitted','rejected','approved','expired')));create view news_current_and_approvedasselect *from content_rawwhere content_type = 'news'and (release_time is null or sysdate >= release_time)and (expiration_time is null or sysdate = release_timewill exclude any rows where release_time is NULL.6.5 What is Different About Discussion?It seems that we've managed to treat four of the six required contenttypes with one table. What's more, we've done it without having along list of NULLed columns <strong>for</strong> a typical item. For an article,101
- 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: conduct programmer job interviews h
- 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