Project Description and Scope
As people like to follow the latest information of the Chicago sports, we usually need to across several websites to catch the news is frustrated. Thus, we provide a website as a platform across-channel and presenting the recent games for people. Before the game we can find and after the game we can review, there is no complex structure to confuse sports fans. The mobile site becomes a shortcut for users to catch the condensed critical news and core calendar function. Our main scopes are as following:
1. Recent game calendar:
An integrating multiple kinds of sports calendar must be the major sweet we serve. People can easily to find their favorite sports coming games without digging pages and pages. With the utilized feature for our users, the sport searching gateway we present is straightforward.
2. Fans socialization channels:
With multiple kinds of sports channel, we invoke people can engage with their favorite team and participate in the sports news interaction. Fans have ability to respond the team events performed as news article and video with their commentaries.
3. Mobile sports-connecting:
Integrated with a mobile site, people can easily to connect to the latest news in our web application. Without turning on a computer and tedious approach procedures, the latest sports calendar shows up in their handy mobile devices.
Overview of Application Changes
Modules 1 – SearchAs a part of our site we have decided to implement the search module. The searchable content will be housed in the database and will be accessed via SQL query. Users will have the ability to search for team information, player information, and several different key word categories.
Module 2 – RegisterAs a part of our sites functionality we have decided to give users the option to create a profile. This information will be stored in the database in the user information table. Though this function is available it’s not required to navigate the site.
Module 3 - Dynamic ContentOnce authentication has occurred the content on the site will change based criteria selected by the user. For example, if the user chooses the Bulls as his favorite team then the content will display Bulls information on the front page. Furthermore, the background and overall theme of the site will change bases on this selection.
Module 4 - Personal ProfileEach user that registers with site will have the ability to modify the look of the page. Users can put pertinent information on their page in places where they can easily access.
Module 5 – CalendarWe decided to add a calendar function to the site. The calendar will display schedule for sporting events. This information will be housed in the database in the team in formation table.
Module 6 - Link Click CounterWhen a user uses our site to access the sites posted on our page each of these interactions will be counted. The number of interaction will be stored in the data base in the websites table.
Significant Algorithms
UML diagrams
Fig.1 System MVC package diagram
Fig.2 User package class diagram
Fig.3 Content package class diagram
Fig.4 Page package class diagram
MVC pattern design:
Our site use MVC pattern to perform the dynamic system operation in System MVC package diagram. When visitors surf the site as a User, Page is the View interface for User to interact with the system. Depend on the User behavior in Page, they can either submit a link of page requests to talk with ContentController or submit a searching request directly. Before controllers talk with Database as a Model, they have to go through the SecurityService as a guard of the Database in order to ensure the information messages are integrity and authenticated. When Database retrieves invoked information, it will return for ContentController to distribute the site page.
Class glossary
• System MVC Package diagram
User package: The role of visitors and whose authority interacts with the system View (Page).
Page package: The performance of the system site shows to visitors (User).
Content package: The aggregation of different content classes is retrieved from Database.
ContentController class: The content distribution class arranges the information request from View (Page) to search in Model (Database) and manage the user login process.
SearchingController class: This class handles the searching request from Page directly or the related content searching for ContentController.
SecurityServices class: The class catches a cookie as a log for User page visiting and ensures the requesting message to Database is authenticated.
Database classs: Handling SQL command to retrieve contents to ContentController.
• User package class diagram
User interface: An interface to define visitors' basic functions.
Anonymous class: The class represents a visitor who doesn't request to login.
RegisteredUser class: A registered user has authority to edit personal information, leave comments, and register for newsletter.
UserInformation class: The class is a member of Content package and contains RegisterUser personal information.
Comment class: The class is a member of Content package and allows RegisterUser to create ones.
Administrator class: An advanced role of RegisteredUser who can edit content in the site and create users.
• Content package class diagram
Content class: This represents the general content class.
UserInformation class: Contains RegisteredUser personal information.
Calendar class: This class manages a calendar frame to show the events in current month, supporting the specific team or overall schedule.
AD class: Each AD has the sponsor and we can counter people click times to the AD.
ArticleList class: This class collects the Article as a stream list and is available to filter the latest ones and specific team.
Article class: Each article has its owned basic information and allow people leave comments with it.
VideoList class: This class collects the Video as a stream list and is available to filter the latest ones and specific team.
Video class: Each video has its owned basic information and allows people leave comments with it.
Comment class: Each comment has its owned basic information and allows people to create.
Picture class: The class contains the picture file.
• Page package class diagram
Page class: This represents the general page class with searching modular.
NewsPage class: This class controls news performing interface distribution.
FrontPage class: As a home page of the site, it shows the general information for people.
TeamPage class: Representing a specific team page, it only shows the team's information.
RegisterPage class: This is a one page visitor registering page for people to submit their information.
PersonalPage class: This is a general performance of personal profile to share in public.
ContentPage class: As visitors request an article or video page, this class handles the interface to distribute the contents which will correspond to specific team framework.
ArticlePage class: This class represents a specific article page.
VideoPage class: This class represents a specific video page.
Data Structures
DROP TABLE USER;
DROP TABLE TEAM;
DROP TABLE EVENS;
DROP TABLE SPONSORS;
DROP TABLE NEWS;
DROP TABLE WEBSITE;
CREATE TABLE User (
UserID INT PRIMARY KEY,
UserEmail VARCHAR2(255) NOT NULL,
UserFirstName VARCHAR2(20) NOT NULL,
UserLastName VARCHAR2(25) NOT NULL,
UserFavoriteTeam VARCHAR2(25) NOT NULL,
UserCity VARCHAR2(20) NOT NULL
UserState VARCHAR2(20) NOT NULL
UserZipCode INT NOT NULL,
);
CREATE TABLE Team (
TeamID INT PRIMARY KEY,
TeamURL VARCHAR2(75) NOT NULL,
TeamName VARCHAR2(20) NOT NULL,
TeamLocation VARCHAR2(25) NOT NULL,
TeamCity VARCHAR2(25) NOT NULL,
TeamWins INT NOT NULL,
TeamLoses INT NOT NULL,
);
CREATE TABLE Events (
EventID INT PRIMARY KEY,
EventComments VARCHAR2(255) NOT NULL,
EventDate DATE? NOT NULL,
EventTime ?????????
EventType VARCHAR2(50) NOT NULL,
EventCity VARCHAR2(25) NOT NULL,
EventHomeTeam VARCHAR2(25) NOT NULL
EventAwayTeam VARCHAR2(25) NOT NULL
);
CREATE TABLE Sponsor (
SponsorID INT PRIMARY KEY,
SponsorURL VARCHAR2(75) NOT NULL,
SponsorAD VARCHAR2(20) NOT NULL,
);
CREATE TABLE News (
ArticleID INT PRIMARY KEY,
ArticleURL VARCHAR2(75) NOT NULL,
);
CREATE TABLE WEBSITE (
WebstieID INT PRIMARY KEY,
WebSiteURL VARCHAR2(75) NOT NULL,
WebstieVisits INT PRIMARY KEY
);
ALTER TABLE TEAM ADD CONSTRANT UserID_FK FOREIGN KEY (UserID) REFERENCES User (UserID);
ALTER TABLE TEAM ADD CONSTRANT SponsorID_FK FOREIGN KEY (SponsorID)
REFERENCES SPONSOR (SponsorID);
ALTER TABLE USER ADD CONSTRANT TeamID_FK1 FOREIGN KEY (TeamID) REFERENCES TEAM (TeamID);
ALTER TABLE NEWS ADD CONSTRANT TeamID_FK2 FOREIGN KEY (TeamID) REFERENCES TEAM (TeamID);
ALTER TABLE SPONSOR ADD CONSTRANT TeamID_FK3 FOREIGN KEY (TeamID) REFERENCES TEAM (TeamID);
ALTER TABLE EVENTS ADD CONSTRANT TeamID_FK3 FOREIGN KEY (TeamID) REFERENCES TEAM (TeamID);
Security Requirements
To make a security policy for our website we should determine the assets that should be protected in the website, for example the emails of the people who registered for the site and their information should be protected from unauthorized access. We should also determine who should have access to specific part of the system, for example a user should not access the database the same way the admin would.
1) Authentication: To prove that the user is a valid and registered user.
-Authorization: The level of authority the users have.
-We could store the usernames in plaintext and encrypt the passwords using one-way encryption algorithm. The system could verify the user by checking the username they entered against the usernames stored in the database. And the password will be checked against the encrypted password stored in the database for the user.
2) Error handling: redirecting the users to an error page. This would help a lot in the security of the website, sometimes when an error occurs a user could view the website sources which could be a threat to the website.
• Page error handling: Catching errors that would happen within a single page automatically and redirect the user to an error page.
-example of the code that could be used:
• Application error handling: To catch errors that would happen anywhere in the website.
3) Catching exceptions for forms:
• Catching if the email the user entered is valid or not by checking the format of the email address.
• Comparing the password the user chooses by making the user enter the password twice.
• We could use JavaScript to make the users fill the forms, this will be more secured than java applets, because the must start the program in order to submit the form, which is unlike Java applet that could be less secured.
4) Cookies: Will allow the server to maintain continuing open session with the client. This will help recognizing the returning users of the website.
We will need persistent cookies, which will contain log in information and recognize visitors when they return to the site. Session cookies could help identifying the type of ads the users might be interested in.
Usability Testing
Post a comment to an article (Unregistered user)
When a new user is reading an article, he/she wants to leave a comment on it. However, only registered users can comment on articles. So the user goes to the registration page from the link at top right corner of the page. The user then fills out all necessary fields on the registration form. Once the information is approved, the website will jump to the previous article page showing the user is already logged-in. Now the user can input his/her comments. When the comment is posted successfully, a message will display to let the user know.
Expected response time: 4 minutes
Workflows:
Post a comment to a video (Registered user)
An old user comes to the website and opens a video. He/she wants to leave a comment on the video. However, only logged-in users can leave a comment. So the user goes to the top right corner and logs-in from the current page. Once the user name and password are verified, the user will be logged in successfully and able to leave comments. When the comment is posted successfully, a message will display to let the user know.
Expected response time: 2 minutes
Workflow:
Edit user preferences (Must be Registered User)
When a registered user is browsing on website, he/she wants to change their preferences. So the user logs into their account from the top right corner of the current page. After the user is logged in, he/she goes to the profile page by clicking on the username, which is at the original position of login fields. The user can choose which part of the profile he/she wants to edit. Once they make the changes and want to leave the page, the website will confirm the changes by asking the user to save the changes they made.
Expected response time: 3 minutes
Workflow:
Find schedule of user’s favorite team on a specific date (Unregistered User)
A visitor to the site wants to check the game schedule of his favorite team on a specific date without becoming a registered member. He must click on the tag of his favorite team from the main navigation, which will direct him to his team’s homepage. Then he will access the team calendar and pick the specific date to get the game schedule.
Expected response time: 1.5 minutes
Workflow:
Contribution of members
Chen, Pou-Chang | Project Description and Scope; Significant Algorithms; team website |
Hines, Melvin | Overview of application changes; data structure |
Mulholland, Zach | Interface design; final editing; usability testing |
Sendi, Abdeen Muneer | Security requirements |
Yuan, Qiong | Website and mobile site; team website; usability testing |