Research Expert
Detailed Design
EEL-5881, Fall, 2008
Team Name: Team 3
Team Members:
Contents of this Document
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.
Technical Risks:
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. |