13.07.2015 Views

Software Engineering for Internet Applications - Student Community

Software Engineering for Internet Applications - Student Community

Software Engineering for Internet Applications - Student Community

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Chapter 6Content ManagementThere are two fundamental elements to content management: (1)storing stuff in a content repository, and (2) supporting the workflowof a group of people engaged in putting stuff into that repository. Thischapter will treat the storage problem first and then the workflowsupport problem. We'll also look at version control <strong>for</strong> both contentand software, at look and feel design <strong>for</strong> individual pages, atnavigation design, and at in<strong>for</strong>mation architecture.Part of the art of content management <strong>for</strong> an online learningcommunity is reducing the number of types of content. For example,consider a community where the publisher says "I want articles[magnet content], comments from users on articles, news from thepublisher, comments on news from users, questions from users, andanswers to questions." A naive implementation from thesespecifications would result in the creation of six database tables:articles, comments_on_articles, news,comments_on_news, questions, answers. From the RDBMS'sperspective, there is nothing overwhelming about six tables. Butconsider that every new table defined in the RDBMS implies roughly20 Web scripts. Ten of these scripts will constitute a user experience:view a directory of content in Table A, view one category, view oneitem, view the newest items, grab a <strong>for</strong>m to insert an item, confirminsertion, request an email alert of comments on an item. Ten ofthese scripts will constitute an administrator's experience: view adirectory of content in Table A, view one category, view one item,view the newest items, approve an item, disapprove an item, deletean item, confirm deletion of an item, etc. It will be a bit tough to codethese 20 scripts in a general fashion because the SQL statementswill differ in at least the table names used.Consider further that to offer a complete index of site content, you'llhave to write a program that pulls text from at least six tables into asingle index.How different are these six kinds of content, really? We'll look at thetables that we need to define <strong>for</strong> storing articles, then proceed to theother types of content.94Anderssoneve@eveandersson.comPhilipGreenspunphilg@mit.eduAndrewGrumetaegrumet@alum.mit.edu14.2 Exercise 1: <strong>Community</strong> Reading List, DataModel and Amazon APIYour goal in this exercise is to provide a facility <strong>for</strong> your communitymembers to develop a shared reading list, a set of books that new ornovice members might find useful. You'll use the SOAP interface thatis part of Amazon Web Services(http://www.amazon.com/webservices/) to retrieve productin<strong>for</strong>mation directly from the Amazon servers that will then bedisplayed within your server's HTML pages.Start by writing a design document that lays out your SQL data modeland how you're going to use the Amazon API (which functions tocall? which values to process?). Your recommended_books tableprobably should be keyed by the International Standard BookNumber (ISBN). For most of your career as a data modeler, it is bestto use generated keys. However, in this case there is an entireinfrastructure to ensure the uniqueness of the ISBN (seewww.isbn.org) and there<strong>for</strong>e it is safe <strong>for</strong> use as a primary key.For each book your data model ought to be able to record at least thefollowing:• title• authors (either mushed together in one column, a horrifyingviolation of First Normal Form, or broken out if you have theenergy)255

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!