EEL-5881 Software Engineering Project Page

EEL-5881

Software Engineering Project: Research Expert



Home



Concept of Operations

Project Management Plan

Software Requirements Spec

Test Plan

High-Level Design

Detailed Design

Test Results

User's Manual

Source Code

Build Instructions

Project Legacy



Presentations


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
        • Foreign key to Document
      • CreationDate
        • Date in which the review was created
      • UserKey
        • Foreign key to User
      • 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
        • Foreign key to Author
      • 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
        • Foreign key to User
      • 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
        • Username of the user
      • Password
        • Password of the user
      • IsSiteAdministrator
        • To check whether the user is a site administrator
      • FullName
        • Full name of the user
      • EmailAddress
        • Email address of the user
      • URL
        • url to the website
    • Group
      • [Key]
        • Identifier to uniquely identify a Group
      • UserKey
        • Foreign key to User
      • Name
        • Name of the group
    • 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
        • Foreign key to Role
    • 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
        • Foreign key to the Role
    • 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
        • Foreign key to Role

           

    • 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.