Research Expert
Detailed Design
EEL-5881, Fall, 2008
Team Name: Team 3
Team Members:
Contents of this Document
Reusability:
The design consists
of mechanisms supporting generic database interaction, and conventions for
adding new database objects and methods. Specifically, with a layered
design, the front-end is independent of, and abstracted from the back-end
database. Therefore, the underlying database could be entirely exchanged for
a different platform (e.g. SQL Server to MySQL). Moreover, the web-based
front-end could be exchanged for a different UI (e.g. WinForms, Silverlight,
Windows Presentation Foundation (WPF)) without any modifications to the
data-layer or database. Additionally, the DataRecord and DataManager design
conventions allow for rapid addition of new database objects – reusing a set
of base code and design conventions to support program modification and
feature extension.
Testability:
The
tiered design is ideal for isolating system functionality for testing.
Indeed, the design allows for independent testing of the system tiers and
improved code coverage. The design allows unit tests to be rapidly created,
with conventions in place to build positive and negative test cases for
hierarchically structured data (where testing one data object requires the
creation of underlying data).
Maintenance:
Maintenance generally
requires well organized, readable code, consistent coding style, and the
ability to expand the system without a massive rewrite. The tiered high
level design of Research Expert system which contains Database, Data Layer
and Web Client which are independent to each other, support the concept of
expansion or modification. The front-end Web Client is independent
of back-end database and interact through the Data Layer. The design of
DataRecord and DataManager which comes under Data Layer contains source
code written in C# which is easily readable and understandable and is
flexible to support modifications and so do the stored procedures and tables
in Database layer scripted using T-SQL commands. The changes will be
implemented and documented.
Portability:
The design of Database with T-SQL command and
Data Layer with C# will be easily portable to other systems and C# compilers
are platform independent and will work on operating systems like MAC,
WINDOWS, LINUX etc., The web client will be designed using web standards,
the Research Expert application is expected to function with modern
browsers.
Performance:
The Data Layer which is the middleware is
developed using C# which will be executed faster and increase the
performance of the application.
Security:
ASP. NET provides a number of options for
implementing security and restricting user access to a web application. Only
the user who has username and password can access the Research Expert
application.
Prototype and Alternate design strategies:
For our
Research Expert project, we did not explore alternate design.
With prior
experience with similar systems, Paul had already prototyped like systems
and came up with this as a solid design.
The time frame and limited human resources prohibit any serious
pre-production prototype phase.
Technical Risks:
- Because of limited time and human resources, the Research Expert
application will be tested and run only on IE7. The changes in the
platform will be studied and implemented regularly.
-
The application developed with ASP.NET 2.0 will create technical
risks because of its stateless nature.
-
The system's interaction to the Adobe PDF API is very difficult and
create problems.
Detailed Design Information
The detailed design can be broken into its three separate tiers, as described in the High Level Architecture:
- Database Back-End
- PublicationSourceType
- [Key]
Identifier to uniquely identify a PublicationSourceType
- Name
Name of the publication source type (i.e. "conference", "journal", etc.)
- PublicationSource
- [Key]
Identifier to uniquely identify a PublicationSource
- Name
Name of the publication source (i.e. "I/ITSEC 2008", etc.)
- TypeKey
Foreign key to PublicationSourceType
- DocumentType
- [Key]
Identifier to uniquely identify a DocumentType
- Name
Description of the type of document (i.e. "Adobe Acrobat", etc.)
- FileExtension
Name of the document extension (i.e. ".pdf", etc.)
- Review
- [Key]
Identifier to uniquely identify a Review
- DocumentKey
- CreationDate
Date in which the review was created
- UserKey
- Rating
User rating associated with the review
- Comments
Optional user created text serving as a comment as part of a review
- Data
Binary data representation of the review itself
- Document
- [Key]
Identifier to uniquely identify a Document
- DocumentTypeKey
Foreign key to DocumentType
- RepositoryKey
Foreign key to Repository
- Title
The name of the user-uploaded document
- AuthorKey
- PublicationSourceKey
Foreign key to PublicationSource
- PublicationDate
Date of the document's publication
- Abstract
Text that represents the abstract of the document
- Data
Binary data representation of the document itself
- Repository
- [Key]
Identifier to uniquely identify a Repository
- userKey
- CreationDate
Date of the repository's creation
- Name
Text name of the repository
- Description
Text to help describe a repository
- Author
- [Key]
Identifier to uniquely identify a Author
- FullName
Full name of the author (i.e. John Smith)
- Affiliation
Describes any affiliations the author may have (i.e. UCF, IEEE, etc.)
- User
- [key]
Key to uniquely identify the User
- Username
- Password
- IsSiteAdministrator
To check whether the user is a site administrator
- FullName
- EmailAddress
Email address of the user
- URL
- Group
- [Key]
Identifier to uniquely identify a Group
- UserKey
- Name
- Role
- [Key]
Key to uniquely identify the Role
- Name
Name of the Role (i.e. user, observer, administrator etc.)
- Description
Text to help describe the role
- UserGroupLink
- UserKey
Foreign key to user and also act as primary key to uniquely identify the User
- GroupKey
Foreign Key to Group and also a primary key to uniquely identify a Group
- RoleKey
- RepositoryUserLink
- RepositoryKey
Foreign key to the repository and also primary key to uniquely identify the repository
- UserKey
Foreign key to the User and also primary key to uniquely identify the user
- RoleKey
- RepositoryGroupLink
- RepositoryKey
Foreign key to Repository and also act as primary key to uniquely identify the Repository
- GroupKey
Foreign Key to Group and also a primary key to uniquely identify a Group
- RoleKey
- Data Layer Middleware
Managers are C# classes that handle the creation, retrieval, updating, and deletion of records. For example, the AuthorManager has a C# AddAuthor function (creation), which in turn will call the AddAuthor SQL stored procedure, which adds the author to the database.
Each Record class will contain a nested List class, which will simply be a list of the Record class. For example, AuthorRecord has a nested AuthorRecordList class, which is a list of AuthorRecords. There will be a one to one relationship between C# Record classes and database tables. UML Class diagrams are as follows, broken into several images to improve readability. Note that after the first diagram, the Database and SqlDataProvider classes are implied for the rest of the diagrams, but are removed to reduce clutter.
- AuthorManager
- Document
- DocumentType
- Group
- PublicationSource
- PublicationSourceType
- RepositoryGroupLink
- Repository
- RepositoryUserLink
- Review
- Role
- UserGroupLink
- User
Trace of Requirements to Design
Functional Requirements:
Requirements |
1. The research papers shall be
stored in database. |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
This requirement is entirely mapping to the entire
database layer. |
Requirements |
2. The application shall be web-based, supporting IE7 |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
Research Expert is a web-based application developed
using ASP.NET, C# and SQL Server 2005 which supports IE7. This
requirement is directly mapping to the entire system. |
Requirements |
3. Site administrators shall have a simple process for
installing the application |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
The site administrators will create a
installation system to easily install the application. |
Requirements |
4. Site administrators shall have superuser privileges
to the entire system |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
The site administrators who are the owners of
the entire system have superuser privileges shall be able to
add, delete and modify the repositories and memberships of the
users and also can transfer the membership of the repositories
to other users. This requirement is directly mapping to web
client. |
Requirements |
5. Users shall be able to self-subscribe to the
application |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
This requirement is directly mapping to
the web client layer. |
Requirements |
6.The site-administrator shall be able to specify a
maximum document size |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
The site administrator who has the superuser
privilege specify the maximum size of the document that will be
stored by the users in the repositories and the requirement is
directly mapping to the web client layer. |
Requirements |
7. The database can be organized into user-created
repositories |
Class |
RepositoryManager |
Methods |
AddRepository |
Tables |
Repository.sql |
Stored Procedures |
Repository.sql [Procedure
AddRepository] |
Description |
All authenticated users shall be able to create their
own repositories in the underlying database. This requirement is
directly mapping to Data Layer and Database. |
Requirements |
8.Users shall be able to maintain control of their own
repositories |
Class |
None |
Methods |
None |
Tables |
RepositoryUserLink.sql |
Stored Procedures |
RepositoryUserLink.sql |
Description |
Users have Admin privileges for their own
repositories and shall be able to maintain the memberships of their
repositories. The users
with Read-Write and Read-Only privileges cannot modify memberships
or delete the
repository. This requirement is directly mapping to database layer. |
Requirements |
9.Users shall be able to assign access levels to other
users for their repositories |
Class |
RepositoryUserLinkManager |
Methods |
AddRepositoryUserLink |
Tables |
RepositoryUserLink.sql |
Stored Procedures |
RepositoryUserLink.sql [ Procedure
AddRepositoryUserLink] |
Description |
Users with admin privilege shall be able to assign Read-Write or Read-only
access levels to other users for their repositories . This
requirement is directly mapping to database and data layer. |
Requirements |
10. User level access permissions consist of Admin,
Read-Only, Read-Write 39. Groups shall
maintain their own permission levels for individual users, which include
group admin and group user |
Class |
Database.cs |
Methods |
None |
Tables |
Role.sql |
Stored Procedures |
None |
Description |
The Role field is populated with default
values as Observer (Read-only), user (Read-Write) and
Administrator (Repository administrator) and assign values as 0,
1 and 2 in Database.cs . This requirement is directly mapping to
database layer. |
Requirements |
11. Users with Read-Write
privileges shall be able to add, modify and delete documents on
corresponding repositories. |
Class |
DocumentManager, DocumentRecord |
Methods |
AddDocument, DeleteDocument, UpdateDocument |
Tables |
Document.sql, RepositoryUserLink |
Stored Procedures |
Document.sql [ Procedure AddDocument, DeleteDocument,
UpdateDocument] |
Description |
The users in the RepositoryUserLink who have the role
Read-Write have ability to
add, delete or modify the documents in the Repositories. This
requirement is directly mapping to Data Layer and database. |
Requirements |
12. Users with Admin privileges shall have the
ability to add and delete users to the repository and modify their
privileges |
Class |
RepositoryUserLinkManager |
Methods |
AddRepositoryUserLink, DeleteRepositoryUserLink,
UpdateRepositoryUserLink |
Tables |
RepositoryUserLink.sql |
Stored Procedures |
RepositoryUserLink.sql [Procedure
AddRepositoryUserLink, DeleteRepositoryUserLink,
UpdateRepositoryUserLink] |
Description |
Users with Admin privileges shall be able to add and
delete users to the repository and modify their privileges and update
the database through the above functions and stored procedures. This
requirement is directly mapping to the data layer and the
database layer. |
Requirements |
13. Users with Read-Only privileges shall have the
ability to view documents on the repository |
Class |
RepositoryUserLinkmanager, RepositoryManager,
DocumentManager |
Methods |
LoadDocumentByDocumentTypeKey,
LoadDocumentByAuthorKey, LoadDocumentByPublicationSourceKey,
RetrieveDocumentByKey |
Tables |
RepositoryUserLink.sql, Repository.sql,
Document.sql |
Stored Procedures |
Document.sql [Procedure
LoadDocumentByDocumentTypeKey, LoadDocumentByAuthorKey,
LoadDocumentByPublicationSourceKey, RetrieveDocumentByKey] |
Description |
The users in the RepositoryUserLink who have
the Role Read-Only shall only able to retrieve and view
documents from the Repository. This requirement is directly
mapping to the data layer and the database layer. |
Requirements |
14. User with RW and Admin access to the repository
shall be able to upload comments and reviews to any document.
18.
Documents shall be able to have more than one review. |
Class |
ReviewManager, RepositoryuserLink |
Methods |
AddReview |
Tables |
Review.sql |
Stored Procedures |
Reviews [ Procedure AddReview] |
Description |
Users in the RepositoryUserLink who have the
role RW and Admin to the repository have ability to add reviews
and comments which
will be added to Review table in the database. This requirements
is directly mapping to the data layer and the database layer. |
Requirements |
15. Users shall be able to upload .pdf files.
16. Users
shall be able to upload .doc files |
Class |
None |
Methods |
None |
Tables |
Document.sql |
Stored Procedures |
DocumentType.sql |
Description |
The users shall be able to upload .pdf and
.doc files to the database by mentioning appropriate
DocumentTypeKey. This requirement is directly mapping to
database layer. |
Requirements |
17. Users must login to the application with a username
and a password |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
This requirement is directly mapping to web
client layer. |
Requirements |
19. Documents shall be able to be linked to each other
with annotations (independent of document references) |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
The annotated reference to any other document
shall be established within database independent to internal
associations defined within a document. This requirement is directly
mapping to the web client layer. |
Requirements |
20. Each article shall have references to other related
articles |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
Each article will have direct reference to
related articles. The user shall be able to import the referenced
articles which are not presented in the database and the requirement is mapping to web
client layer. |
Requirements |
21.Documents shall be tagged with searchable keywords |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
This requirement is mapping to web
client layer |
Requirements |
22. Users shall be able to join groups with other
users. |
Class |
UserGroupLinkManager, GroupManager |
Methods |
UpdateUserGroupLink, UpdateGroup |
Tables |
UserGroupLink.sql, Group.sql |
Stored Procedures |
UserGroupLink.sql [Procedure
UpdateUserGroupLink], Group.sql [ Procedure UpdateGroup]
|
Description |
The users of the application shall be able to
join a group as a individual user or with othergroups. And the
user shall be a member of any number of groups. There is a
many-to-many relationship between User and Group data table.
This requirement is directly mapping to the database layer. |
Requirements |
23.Users shall be able to grant access to groups and as
well as individual users |
Class |
None |
Methods |
None |
Tables |
RepositoryUserLink.sql |
Stored Procedures |
None |
Description |
As the repository consists of both individual
users and groups as their members, the user with the role Admin
in the RepositoryUserLink shall be able to grant access to
groups and other users to their repositories. This requirement
is directly mapping to the database layer. |
Requirements |
24. Metadata shall include author, publication date,
title, abstract, keywords, publication source, references |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
The document is automatically populated with
metadata which will be useful for searching and this requirement
is directly mapping to web client layer |
Requirements |
25. Users shall be able to search for documents based on
metadata |
Class |
DocumentManager |
Methods |
LoadDocument, LoadDocumentByAuthorKey,
LoadDocumentByPublicationSourceKey, LoadDocumentByDocumentTypeKey,
RetrieveDocumentByKey |
Tables |
Document.sql |
Stored Procedures |
Document.sql [Procedure LoadDocument,
LoadDocumentByAuthorKey, LoadDocumentByPublicationSourceKey,
LoadDocumentByDocumentTypeKey, RetrieveDocumentByKey] |
Description |
User shall be able to search documents using
metadata like author, document type, publication source, abstract etc.
The functions in the DocumentManager and Document stored procedure which
helps to loads or retrieve document from the repository. |
Requirements |
26. Uploaded documents shall be parsed to auto-populate
metadata |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
This requirement is directly mapping to web
client layer |
Requirements |
28. The application shall provide notification of
recently added or modified content |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
This requirement is directly mapping to the
web client layer. |
Requirements |
29. Users shall be able to create a favorite articles
list |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
This requirement is directly mapping to web
client layer |
Requirements |
32. The application shall provide an article browsing
interface |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
This requirement is directly mapping to web
client layer |
Requirements |
33. Users shall be able to modify their profile |
Class |
UserManager |
Methods |
RetrieveUserByKey,RetrieveUserByUsername,UpdateUser |
Tables |
User.sql |
Stored Procedures |
User.sql [Procedure RetrieveUserByKey,RetrieveUserByUsername,UpdateUser] |
Description |
The users shall be able to retrieve their user
profile and make changes and update the profile to the database. This
requirement is directly mapping to database layer. |
Requirements |
34.User profiles shall consist of first name,
last name, username, password, email address, affiliation, URL,
group associations |
Class |
None |
Methods |
None |
Tables |
User.sql |
Stored Procedures |
None |
Description |
The User.sql table contains Username,
Password, Full Name, Email, URL. So that user shall have to
provide all these informations. This requirement is directly
mapping to database layer. |
Requirements |
35. A group shall provide an organization
mechanism for users |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
This requirement is directly mapping to web
client layer. |
Requirements |
36. Groups can be associated with multiple
repositories with corresponding permissions |
Class |
RepositoryGroupLink |
Methods |
UpdateRepositoryGroupLink |
Tables |
RepositoryGroupLink.sql, Group.sql,
Repository.sql |
Stored Procedures |
RepositoryGroupLink.sql [Procedure
UpdateRepositoryGroupLink] |
Description |
There is a many-to-many relationship between
Group and Repository. So the Groups shall be able to associate
with multiple repositories and Repositories will consists of
many groups. This requirement is directly mapping to data layer
and the database layer. |
Requirements |
37. All users shall be able to add and remove
groups and modify membership |
Class |
RepositoryGroupLinkManager |
Methods |
AddRepositoryGroupLink,
DeleterepositoryGroupLink, UpdateRepositoryGroupLink |
Tables |
RepositoryGroupLink.sql |
Stored Procedures |
RepositoryGroupLink.sql [Procedures
AddRepositoryGroupLink, DeleterepositoryGroupLink,
UpdateRepositoryGroupLink] |
Description |
The users with admin privileges shall be able
to add and delete groups and can modify membership of the groups
who are members of their repositories. This requirement is
directly mapping to the data layer and the database layer.
|
Requirements |
38. Groups shall have the same repository
permissions as regular users |
Class |
None |
Methods |
None |
Tables |
RepositoryGroupLink.sql |
Stored Procedures |
RepositoryGroupLink.sql |
Description |
The Groups have the same access permissions
like Administrator, Read-Only or Read-Write to the repositories
like regular users. This requirement is directly mapping to
database layer. |
Requirements |
40. Group admins shall be able to request
enrollment to repositories |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
Group admins shall be able to request
enrollment to the admin of the repositories. The options will be
provided in the client side. This requirement is directly
mapping to web client layer. |
Requirements |
41. Group admins shall be able to maintain
group membership |
Class |
None |
Methods |
None |
Tables |
RepositoryGroupLink.sql |
Stored Procedures |
None |
Description |
Group admins have the ability to change or
transfer membership of the users. This requirement is directly
mapping to database layer. |
Requirements |
42. Groups shall consist of users and other
groups |
Class |
None |
Methods |
None |
Tables |
Group.sql |
Stored Procedures |
None |
Description |
Groups shall consists of individual users and
other groups which in turn have number of users as their
members. This requirement is directly mapping to database layer.
|
Requirements |
43. The system must interact with the Adobe
PDF API (required for parsing .pdf documents) |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
This requirement is directly mapping to web
client layer. |
Requirements |
44. The system must interact with the
Microsoft Office API (for parsing MS Word (.doc) documents) |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
This requirement is directly mapping to web
client layer. |
Requirements |
45. The system must interact with the
underlying database using the OLEDB API. Interactions with the
database will be frequent, though not continuous. Calls through
the OLEDB API will be as stored procedures. |
Class |
None |
Methods |
None |
Tables |
None |
Stored Procedures |
None |
Description |
This requirement is directly mapping to
database layer. |
|