# 1 Introduction
[NULL]

## 1.1 Purpose
The purpose of the Publications Management System (PMS) is to provide functionality for managing bibliographical information and full-text publications. It will allow access via command line and a web browser, and will manage a database capable of storing bibliographical data and entire publication texts in PDF and Postscript formats.

## 1.2 Scope
The software product to be produced is a Publications Management System (PMS).

The PMS will provide comprehensive functionality for managing bibliographical information and publication texts. It will be accessible via both a command-line interface and a web browser, adhering to W3C XHTML standards. The system will manage a database containing bibliographical details and will store the full text of publications in PDF and Postscript formats.

Key capabilities include:
*   Automatic retrieval of bibliographical information (e.g., author, title) from the complete text of a publication.
*   Manual correction of automatically retrieved information if it is incorrect or insufficient.
*   Explicit recognition of author details (name, first name, institute).
*   The ability for users to manually link different references to the same author (e.g., "D. Vermeir" and "Dirk Vermeir").
*   Support for bulk updates, allowing the import of multiple publications or abstracts at once.
*   Provision of various access types, including access to the full text or abstract of a publication.
*   Implementation of access control mechanisms.

The application of this software is to provide an efficient and organized system for storing, retrieving, and managing academic publications, thereby facilitating research and information dissemination.

[N/A]

## 1.3 Product overview
[NULL]

### 1.3.1 Product perspective
The Publications Management System (PMS) operates as an element within a larger system, relying on a database and a web server. The web server is responsible for executing the PMS, sending queries to the database, and generating the user interface for various user types. The system can be accessed by users through a web browser or by administrators via a command line interface.

#### System interfaces
*   **Database:** The PMS interfaces with a MySQL-Database for storing all data.
*   **Webserver:** The web server is responsible for the execution of the PMS, handling database queries, and generating the user interface for each user.

#### User interfaces
Users can access the PMS from any operating system using a web browser connected to the web server. Explicit accessibility is required for users with Linux as their operating system and using text-based web browsers (e.g., Links2). Administrators can access the system via the command line from within the VUB-network.

If an error occurs during a request, the user should receive an informative error message. The error should also be logged within the PMS to notify administrators of technical difficulties. The PMS web interface will comply with the W3C XHTML 1.0 Transitional standard.

#### Hardware interfaces
There are no specific hardware requirements for the users accessing the PMS.

#### Software interfaces
The PMS requires the following software components and interfaces:
*   **Operating System:** The system is designed to run under a Linux-based environment, specifically the Wilma web server.
*   **Database:** MySQL-Database.
*   **Web Browser:** Any web browser that supports W3C XHTML standards.
*   **Programming Language:** Ruby 1.8 or later.
*   **Bibliographical Formats:** The system supports importing publications in BibTEX and RIS formats.
*   **Version Control:** Git will be used for configuration management.
*   **Documentation:** The code will be documented using RDoc.

#### Communications interfaces
Communication between the PMS (specifically the web server) and the users will occur via an HTTP-connection using TCP/IP port 80.

#### Memory constraints
There is no specific limit on the usage of memory by the PMS itself. However, publications uploaded to the system will have a maximum file size, which is currently to be determined (TBD).

#### Operations
To utilize the functionality of the PMS, a user must either be logged into (and registered with) the system or be connected to the VUB-network. Other necessary and available operations are detailed in the product functions section.

#### Site adaptation requirements
The PMS is designed for easy installation, requiring Ruby 1.8 (or later) and a Linux-based environment.

#### Interfaces with services
[N/A]

### 1.3.2 Product functions
The Publications Management System (PMS) provides a range of functions organized hierarchically by user roles. Each user role inherits the functions of the preceding roles, with additional capabilities granted at higher levels. The user hierarchy is as follows: Guest, VUB-Network User, Member, Publisher, Moderator, and Administrator.

The major functions provided by the PMS include:

*   **Guest Functions:**
    *   Register an account.
    *   Log into the PMS.
    *   Validate a new account.
    *   Retrieve a forgotten password.
    *   Guests cannot search, view results, or upload/edit publications.

*   **VUB-Network User Functions** (includes Guest functions):
    *   Search for publications using keywords, authors, or date ranges.
    *   Perform advanced searches.
    *   Order search results by title, author, or year.
    *   Export and download search results in HTML, PDF, and PS formats.
    *   Search for similar publications (by author, mentioned in results, or institute).
    *   View publication details (title, authors, date, abstract, references).
    *   Download single or multiple publications.
    *   Consult references cited in publications.
    *   Display the full text of a publication.
    *   Export cited references in BibTEX or RIS format.
    *   View author information.
    *   VUB-Network Users cannot upload or edit publications.

*   **Member Functions** (includes VUB-Network User functions):
    *   Change account details (e.g., password, email address).
    *   Request an account upgrade to an Administrator.
    *   Log off the PMS.
    *   Members cannot upload or edit publications.

*   **Publisher Functions** (includes Member functions):
    *   Access and manage their own uploaded publications.
    *   Upload publications (PDF, PS) following BibTEX or RIS format.
    *   Automatically retrieve and manually correct bibliographical information from uploaded texts.
    *   Specify that different name variations refer to the same author or institute.
    *   Edit their own uploaded publications.
    *   Perform bulk uploading of multiple publications or abstracts.

*   **Moderator Functions** (includes Publisher functions):
    *   Manage user levels within their department (upgrade/downgrade Members to Publishers and vice versa).
    *   Manage group permissions under their jurisdiction.
    *   Edit author information.
    *   Edit departmental publications (bibliographical details).

*   **Administrator Functions** (includes Moderator functions):
    *   Access a control panel for system management.
    *   Create and delete any user account.
    *   Create and delete any group.
    *   Manage user levels for all users (change any user to any other level).
    *   Edit all publications (change or overwrite bibliographical details).
    *   Edit system configuration settings.

**Optional Functions** (future expansions):

*   Extend support for additional publication formats (e.g., MS WORD).
*   Provide a list of documents that refer to a specific publication in the result page.
*   Implement automatic recognition of identical authors or institutes (e.g., 'D. Vermeir' and 'Dirk Vermeir').
*   Enable the PMS to retrieve full texts via URLs from BibTEX files containing only abstracts and URL fields.
*   Expand the system to support uploading and automatic recognition of audio and video files (e.g., MP3, MPEG).

### 1.3.3 User characteristics
The users of the PMS are expected to be academic personnel and students with various technical backgrounds. All users should have a basic knowledge of the internet.

### 1.3.4 Limitations
The following items limit the supplier's options for the Publications Management System (PMS):

*   **Regulatory Requirements and Policies:**
    *   The PMS web interface must comply with the W3C XHTML 1.0 Transitional standard.
    *   Only free software can be used for the tools and the end product.
    *   The implementation must be compliant with the Coding Conventions of SE1.
    *   Design diagrams must follow the UML standard.

*   **Hardware Limitations:**
    *   There are no specific hardware requirements for the users.
    *   The maximum file size for publications is to be determined (TBD).

*   **Interfaces to Other Applications:**
    *   The system must interface with a MySQL database.
    *   The system relies on a web server for execution and user interface generation.
    *   Communication between the PMS (web server) and users must occur via HTTP over TCP/IP port 80.

*   **Parallel Operation:**
    *   The database must be capable of handling several concurrent requests using SQL statements.

*   **Audit Functions:**
    *   Errors occurring during requests must be logged in the PMS to notify Administrators.

*   **Higher-Order Language Requirements:**
    *   The programming language used will be Ruby.
    *   The implementation must be object-oriented.

*   **Signal Handshake Protocols:**
    *   Communication between the PMS and users will use HTTP over TCP/IP.

*   **Quality Requirements:**
    *   The PMS is developed to minimize software faults.
    *   The PMS's availability is dependent on the Wilma server's availability; during downtime, the PMS must display an error message.
    *   User accounts are protected by personal, encrypted passwords.
    *   Direct access to the data stored in the database is restricted to Administrators using the Command Line Interface (CLI).
    *   User levels and their associated privileges for editing, deleting, and uploading publications must always be respected.
    *   The PMS is developed for a Linux-based environment (Wilma); while relocation to a server with a different operating system is possible with adjustments, full portability was not a primary implementation goal.

*   **Safety and Security Considerations:**
    *   Access to the PMS from outside the VUB-network is restricted to logged-in users.
    *   Unauthenticated users (not logged in and/or not connected to the VUB-network) are granted only Guest privileges.
    *   Command line users are assumed to have Administrator privileges due to local access to the Wilma machine.

*   **Limitations Sourced from Other Systems:**
    *   The PMS must run on a Linux-based environment, specifically the Wilma web server.
    *   Users must have a web browser that supports W3C XHTML and a TCP/IP connection to the web server.
    *   HTTP traffic must be enabled on the network connection between the server and client.
    *   The use of frameworks is not allowed.
    *   The code must be documented using RDoc.
    *   Git will be used for configuration management.

## 1.4 Definitions
*   **Customer**: The person, or persons, who pay for the product and usually (but not necessarily) decide the requirements. In the context of this recommended practice the customer and the supplier may be members of the same organization.
*   **Supplier**: The person, or persons, who produce a product for a customer. In the context of this recommended practice, the customer and the supplier may be members of the same organization.
*   **User**: The person, or persons, who operate or interact directly with the product. The user(s) and the customer(s) are often not the same person(s).
*   **BibTEX**: This is a tool for formatting lists of references. The BibTEX tool is typically used together with the LATEX document preparation system.
*   **Bulk Update**: Refers in this case to importing many publications (or abstracts) at once (e.g. through BibTeX files).
*   **Git**: A distributed revision control / software configuration management project created by Linus Torvalds.
*   **RDoc**: Document Generator for Ruby Source.
*   **RIS**: The RIS file format is a tagged format for expressing bibliographic citations.
*   **Ruby**: This is a reflective, dynamic, object-oriented programming language.
*   **Wilma**: This is a multifunctional Linux server for the students of the faculty of sciences at the VUB.

# 2 References
## 2.1 Compliance References

*   **[1] IEEE Std 830-1998: IEEE Recommended Practice for Software Requirements Specifications**
    *   Report Number: IEEE Std 830-1998
    *   Date: 1998
    *   Publishing Organization: Institute of Electrical and Electronics Engineers (IEEE)
    *   Source: http://www.scribd.com/doc/2620639/IEEE-8301998

*   **[3] W3C XHTML 1.0 Transitional Standard: XHTML 1.0 The Extensible HyperText Markup Language (Second Edition)**
    *   Report Number: W3C Recommendation
    *   Date: 26 January 2000, revised 1 August 2002
    *   Publishing Organization: World Wide Web Consortium (W3C)
    *   Source: http://www.w3.org/TR/xhtml1/

*   **[10] SE1 Coding Conventions: Coding Conventions**
    *   Report Number: [N/A]
    *   Date: [N/A]
    *   Publishing Organization: SE1 (Software Engineering group 1)
    *   Source: http://wilma.vub.ac.be/~se1_0708/docs/coding_conventions/conventions.pdf

*   **[11] UML Standard: Unified Modeling Language (UML) Specification**
    *   Report Number: [N/A]
    *   Date: [N/A]
    *   Publishing Organization: Object Management Group (OMG)
    *   Source: http://www.uml.org/

*   **[12] SE1 SQAP: Software Quality Assurance Plan**
    *   Report Number: [N/A]
    *   Date: [N/A]
    *   Publishing Organization: SE1 (Software Engineering group 1)
    *   Source: http://wilma.vub.ac.be/~se1_0708/docs/sqap/sqap.pdf

*   **[13] SE1 STD: Software Test Plan**
    *   Report Number: [N/A]
    *   Date: [N/A]
    *   Publishing Organization: SE1 (Software Engineering group 1)
    *   Source: TBD

## 2.2 Guidance References

*   **[2] Software Engineering Course: Software Engineering Course Page**
    *   Report Number: [N/A]
    *   Date: 2007-2008
    *   Publishing Organization: Free University of Brussels (VUB)
    *   Source: http://tinf2.vub.ac.be/~dvermeir/courses/software_engineering/projects/2007-2008/index.html

*   **[4] Git: Git Homepage**
    *   Report Number: [N/A]
    *   Date: [N/A]
    *   Publishing Organization: [N/A]
    *   Source: http://git.or.cz/

*   **[5] IEEE: Institute of Electrical and Electronics Engineers Homepage**
    *   Report Number: [N/A]
    *   Date: [N/A]
    *   Publishing Organization: Institute of Electrical and Electronics Engineers (IEEE)
    *   Source: http://www.ieee.org/

*   **[6] RDoc: RDoc Homepage**
    *   Report Number: [N/A]
    *   Date: [N/A]
    *   Publishing Organization: [N/A]
    *   Source: http://rdoc.sourceforge.net/

*   **[7] SE1: Software Engineering Group 1 Homepage**
    *   Report Number: [N/A]
    *   Date: 2007-2008
    *   Publishing Organization: Free University of Brussels (VUB)
    *   Source: http://wilma.vub.ac.be/~se1_0708/

*   **[8] VUB: Free University of Brussels Homepage**
    *   Report Number: [N/A]
    *   Date: [N/A]
    *   Publishing Organization: Free University of Brussels (VUB)
    *   Source: http://www.vub.ac.be

*   **[9] W3C: World Wide Web Consortium Homepage**
    *   Report Number: [N/A]
    *   Date: [N/A]
    *   Publishing Organization: World Wide Web Consortium (W3C)
    *   Source: http://www.w3.org/

# 3 Requirements
[NULL]

## 3.1 Functions
The following defines the fundamental actions and operations within the Publications Management System (PMS), including input processing, output generation, and error handling.

*   **Log in to the system from the internet**
    *   **Summary**: Accessing the system from outside the VUB-network.
    *   **Actors**: Everyone who wants to make use of the system.
    *   **Preconditions**: The actor needs a computer with internet access.
    *   **Description**: The actor gets a screen where he/she will be able to login.
    *   **Exceptions**: User must be registered and have a username and password.
    *   **Result**: The actor can login.

*   **Log in to the system via the VUB-network**
    *   **Summary**: Accessing the system whilst using the VUB-Network.
    *   **Actors**: Everyone who wants to make use of the system.
    *   **Preconditions**: Be on a computer that is connected to the VUB network.
    *   **Description**: The actor gets a screen where he will be able to login or where he/she can start a search immediately.
    *   **Exceptions**: None.
    *   **Result**: The actor can login or can perform a search.

*   **Register for an account**
    *   **Summary**: Requesting access to the system (become a Member).
    *   **Actors**: Everyone who wants to make use of the system.
    *   **Preconditions**: The actor needs a computer with internet access or is connected to the VUB-network.
    *   **Description**:
        *   The actor selects the Register function.
        *   The actor chooses a username and password and fills in personal data: name, login name, email address, university and department.
        *   The system checks if username already exists.
        *   The actor confirms.
    *   **Exceptions**: None.
    *   **Result**: An email is sent to the Administrator.

*   **Log off**
    *   **Summary**: Log off the system.
    *   **Actors**: Members, Publishers, Moderators and Administrators.
    *   **Preconditions**: The user is logged in to the system.
    *   **Description**: The actor selects the Logout function.
    *   **Exceptions**: None.
    *   **Result**: The actor is directed to the system start page where he/she can log in.

*   **Change password**
    *   **Summary**: A user who has forgotten his/her password, can request a new one.
    *   **Actors**: VUB-network users, Members, Publishers, Moderators and Administrators.
    *   **Preconditions**: The user must have registered before; he/she must have a valid username on the system.
    *   **Description**:
        *   The actor chooses to change password.
        *   The actor fills in his user name and enters a new password.
        *   The actor confirms.
    *   **Exceptions**: No valid username on the system.
    *   **Result**: An email is sent to the Administrator.

*   **Search for publications**
    *   **Summary**: Searching for publications in the system.
    *   **Actors**: VUB-network users and Members, Publishers, Moderators and Administrators.
    *   **Preconditions**: The actor needs to be logged in to the system or is connected to the VUB-network.
    *   **Description**:
        *   The actor selects the Search Publication function.
        *   The actor fills in the search criteria: keyword, author, period of publication and/or more advanced search criteria such as keyword(s) and/or reference, etc.
    *   **Exceptions**: None.
    *   **Result**: A list of publications fulfilling the search criteria.

*   **View the results of a Search**
    *   **Summary**: View of the results of a publication search.
    *   **Actors**: VUB-network users and Members, Publishers, Moderators and Administrators.
    *   **Preconditions**: Having executed a Publication Search.
    *   **Description**: The actor gets one or more screens displaying one or more of the search results. For each result, the title and the main author of the publication are displayed. Navigation through different screens of search results is possible with the next or previous page option.
    *   **Exceptions**: When the search criteria did not give any result.
    *   **Result**: The actor will obtain the full list of all results satisfying his search criteria.

*   **View publication details**
    *   **Summary**: View details of a selected publication.
    *   **Actors**: VUB-network users and Members, Publishers, Moderators and Administrators.
    *   **Preconditions**: Having executed a Search and viewed the search results screen.
    *   **Description**: The actor can view more detailed information of a selected publication by clicking the title of the publication or by clicking the view button located behind the title.
    *   **Exceptions**: None.
    *   **Result**: The actor will obtain the title, authors, publication date, abstract, cited references, etc. of the selected publication.

*   **View detailed information for multiple publications**
    *   **Summary**: Detailed view of multiple publications.
    *   **Actors**: VUB-network users and Members, Publishers, Moderators and Administrators.
    *   **Preconditions**: Having executed a Search and viewed the search results screen.
    *   **Description**:
        *   The actor selects some of the publications by ticking the box in front of the titles and selects the View function.
        *   Or: The actor selects all publications by clicking the 'View All' button at the bottom of the screen.
    *   **Exceptions**: None.
    *   **Result**: The actor obtains a set of screens displaying the title, authors, publication date, abstract, cited references, etc. of the selected publications.

*   **Download a single publication**
    *   **Summary**: Downloading the full text of a publication.
    *   **Actors**: VUB-network users and Members, Publishers, Moderators and Administrators.
    *   **Preconditions**:
        *   Having executed a Search and viewed the search results screen.
        *   Having entered the detailed view screen of a publication.
    *   **Description**:
        *   In the results screen: the actor can download a selected publication by clicking on the Download button for the selected publication.
        *   In the detailed view screen of a publication: the actor can download the publication by clicking the Download button just beneath the abstract.
    *   **Exceptions**: None.
    *   **Result**: The actor will obtain an electronic copy of the publication.

*   **Download multiple publications**
    *   **Summary**: Downloading the full text of multiple publications.
    *   **Actors**: VUB-network users and Members, Publishers, Moderators and Administrators.
    *   **Preconditions**: Having executed a Search and viewed the search results screen.
    *   **Description**: The actor can download all the publications in a search result by clicking on the Download button next to "All" at the bottom of the screen.
    *   **Exceptions**: None.
    *   **Result**: The actor will obtain an electronic copy of the publications.

*   **Consult publication references**
    *   **Summary**: Consult the references cited in a publication resulting from a search done on the system.
    *   **Actors**: VUB-network users and Members, Publishers, Moderators and Administrators.
    *   **Preconditions**:
        *   Having executed a Search and viewed the search results screen.
        *   Having entered the detailed view screen of a publication.
    *   **Description**:
        *   In the results screen: the actor clicks on the reference button located behind the publication title.
        *   In the detailed view screen of a publication: the actor clicks on the reference button just under the abstract.
    *   **Exceptions**: None.
    *   **Result**: The actor will obtain a screen displaying the title, authors, publication date, abstract and cited references of the selected reference.

*   **Consult references for multiple publications**
    *   **Summary**: Consult the references cited in all the publications resulting from a search done on the system.
    *   **Actors**: VUB-network users and Members, Publishers, Moderators and Administrators.
    *   **Preconditions**: Having executed a Search and viewed the search results screen.
    *   **Description**: The actor can see all the references cited in the publications by clicking on the references button next to "All" at the bottom of the screen.
    *   **Exceptions**: None.
    *   **Result**: The actor will obtain a list of references cited in the publications.

*   **Display the full text of a publication**
    *   **Summary**: Obtain a copy of the full text of a publication resulting from a search done on the system.
    *   **Actors**: VUB-network users and Members, Publishers, Moderators and Administrators.
    *   **Preconditions**: Having entered the detailed view screen of a publication.
    *   **Description**: In the detailed view screen of a publication: the actor displays the full text of the publication by clicking the full text button just under the abstract.
    *   **Exceptions**: Full text must be available in the system.
    *   **Result**: The actor will see the full text of the publication.

*   **View details of a reference**
    *   **Summary**: View details of a selected reference cited in a publication resulting from a search done on the system.
    *   **Actors**: VUB-network users and Members, Publishers, Moderators and Administrators.
    *   **Preconditions**: Having entered the detailed view screen of a publication.
    *   **Description**: In the detailed view screen of a publication, the actor can access directly to the detailed view screen of a cited reference by clicking on the reference.
    *   **Exceptions**: Only when the reference is present in the system.
    *   **Result**: The actor will access the view screen (containing title, authors, data of publication, abstract and cited reference) of the selected reference.

*   **Export the references cited in a publication (BIB format)**
    *   **Summary**: Download the references cited in a publication in BibTeX format.
    *   **Actors**: VUB-network users and Members, Publishers, Moderators and Administrators.
    *   **Preconditions**: Having entered the detailed view screen of a publication.
    *   **Description**: In the detailed view screen of a publication: the actor selects the format (bib) for the exported references and confirms.
    *   **Exceptions**: None.
    *   **Result**: File with the references of a publication in BibTeX format.

*   **Export the references cited in a publication (RIS format)**
    *   **Summary**: Download the references cited in a publication in RIS format.
    *   **Actors**: VUB-network users and Members, Publishers, Moderators and Administrators.
    *   **Preconditions**: Having entered the detailed view screen of a publication.
    *   **Description**: In the detailed view screen of a publication: the actor selects the format (RIS) for the exported references and confirms.
    *   **Exceptions**: None.
    *   **Result**: File with the references of a publication in RIS format.

*   **View authors**
    *   **Summary**: View information about an author of a publication in the system.
    *   **Actors**: VUB-network users and Members, Publishers, Moderators and Administrators.
    *   **Preconditions**: Having executed a publication search and viewed the search results screen.
    *   **Description**: In the results screen: the actor clicks on the author name of one of the publications.
    *   **Exceptions**: None.
    *   **Result**: The system shows the author details.

*   **Editing personal data**
    *   **Summary**: Editing personal data.
    *   **Actors**: Members, Publishers, Moderators and Administrators.
    *   **Preconditions**: The actor needs to be logged in to the system.
    *   **Description**:
        *   The actor selects the Edit Settings function.
        *   The actor changes his personal data such as password, university, department.
        *   The actor confirms.
    *   **Exceptions**: None.
    *   **Result**: The personal data of the user will be changed.

*   **Access to your own publications**
    *   **Summary**: Access directly to your own publications.
    *   **Actors**: Publishers, Moderators and Administrators.
    *   **Preconditions**: None.
    *   **Description**: The Publisher selects the "My Publications" box.
    *   **Exceptions**: None.
    *   **Result**: The user obtains a set of screens displaying the title, authors, publication date, abstract and cited references of all the publications that he/she has previously uploaded in the system.

*   **Edit your own publications**
    *   **Summary**: Possibility to modify information of your own publications by a Publisher.
    *   **Actors**: Publishers, Moderators and Administrators.
    *   **Preconditions**: The actor needs to be logged in to the system and has done a "My Publications" search.
    *   **Description**:
        *   In the results screen: the actor chooses a publication from the list, edits the publication and confirms his changes.
        *   Via the My Publications search: the list of Publisher publications will be displayed and editing is possible by ticking the "edit" box.
    *   **Exceptions**: Only for publications owned by the actor.
    *   **Result**: Changes are applied to the publication in the system.

*   **Upload publications**
    *   **Summary**: Add a publication to the system.
    *   **Actors**: Publishers, Moderators and Administrators.
    *   **Preconditions**: The actor has a document in one of the supported formats: PDF, PS, ODT.
    *   **Description**:
        *   The actor selects the document to add to the system and confirms.
        *   The system tries to retrieve the publication details from the document.
        *   The system shows the new publication with the retrieved information.
        *   The actor either accepts or makes some changes to the publication and confirms the changes.
    *   **Exceptions**: None.
    *   **Result**: The system contains a new publication.

*   **Search users**
    *   **Summary**: Searching users in the system.
    *   **Actors**: Moderators and Administrators.
    *   **Preconditions**: The actor needs to be logged into the system.
    *   **Description**:
        *   The actor selects the Search Users function.
        *   The actor fills in some search criteria.
        *   The system shows the results.
    *   **Exceptions**: None.
    *   **Result**: List of users meeting the search criteria.

*   **Edit user settings**
    *   **Summary**: Select a system user (Members, Publishers, Moderators) and change his settings.
    *   **Actors**: Moderators and Administrators.
    *   **Preconditions**: A list of users as resulting from the user search function.
    *   **Description**:
        *   The actor selects a user from a list of users resulting from a search query.
        *   The actor changes the user settings.
        *   The actor confirms the changes.
    *   **Exceptions**: None.
    *   **Result**: The user settings are changed.

*   **Create User**
    *   **Summary**: Create a new user.
    *   **Actors**: Administrator.
    *   **Preconditions**: None.
    *   **Description**:
        *   Administrator selects the Create User function.
        *   Administrator fills in user details: username, password, email, group.
        *   Administrator confirms.
    *   **Exceptions**: The username already exists in the system.
    *   **Result**: The system contains a new user.

*   **Delete User**
    *   **Summary**: Delete an existing user.
    *   **Actors**: Administrator.
    *   **Preconditions**: None.
    *   **Description**:
        *   Administrator selects the Delete User function.
        *   Administrator fills in username.
        *   System shows user details.
        *   Administrator confirms.
    *   **Exceptions**: The username does not exist in the system.
    *   **Result**: The user is deleted in the system.

*   **Create Group**
    *   **Summary**: Create a new group.
    *   **Actors**: Administrator.
    *   **Preconditions**: None.
    *   **Description**:
        *   Administrator selects the Create Group function.
        *   Administrator fills in group details: groupname, users.
        *   Administrator confirms.
    *   **Exceptions**: The groupname already exists in the system.
    *   **Result**: The system contains a new group.

*   **Search Group**
    *   **Summary**: Select a group from a list in order to view the group details.
    *   **Actors**: Administrator.
    *   **Preconditions**: None.
    *   **Description**:
        *   Administrator selects the Search Group function.
        *   Administrator fills in group details.
        *   System shows search results.
    *   **Exceptions**: None.
    *   **Result**: A list of groups fulfilling the search criteria.

*   **Delete Group**
    *   **Summary**: Delete an existing group in the system.
    *   **Actors**: Administrator.
    *   **Preconditions**: The group must be empty (no users).
    *   **Description**:
        *   Administrator selects the Delete Group function.
        *   Administrator fills in groupname.
        *   System shows group details.
        *   Administrator confirms.
    *   **Exceptions**: The groupname does not exist in the system or the group is not empty.
    *   **Result**: The group is deleted in the system.

*   **Edit group settings**
    *   **Summary**: Select a system group and change its settings.
    *   **Actors**: Administrators.
    *   **Preconditions**: A list of groups as resulting from the group search function.
    *   **Description**:
        *   The actor selects a group from a list of groups resulting from a search query.
        *   The actor changes the group settings.
        *   The actor confirms the changes.
    *   **Exceptions**: None.
    *   **Result**: The group settings are changed.

*   **Edit system configuration settings**
    *   **Summary**: Access the configuration panel in order to change the system configuration settings.
    *   **Actors**: Administrators.
    *   **Preconditions**: None.
    *   **Description**:
        *   Administrator accesses the configuration panel.
        *   Administrator changes the system configuration settings.
        *   Administrator confirms the changes.
    *   **Exceptions**: None.
    *   **Result**: Configuration changes are applied to the system.

## 3.2 Performance requirements
[N/A]

## 3.3 Usability requirements
The system shall meet the following usability requirements:

*   **Effectiveness and Efficiency:**
    *   All functions and options of the Publications Management System (PMS) shall be available in the least amount of clicks, while maintaining a clear structure.
    *   The web interface shall be fast and efficient, enabling users to fulfill all available tasks (upload, download, search, etc.) in the smallest number of pages and clicks.
    *   The PMS shall be accessible from any operating system using a web browser connected to the web server running the PMS.
    *   The PMS shall explicitly support accessibility for users with Linux as an operating system and using a text-based web browser (e.g., Links2).
*   **Satisfaction:**
    *   The web interface shall be attractive, simple, and standard.
    *   The clarity and structure of the web interface shall be very important, even if the aesthetic part is less critical.
    *   In case of an error during a request, the user shall receive an error message clearly stating the cause of the error.
*   **Compliance:**
    *   The PMS web interface shall comply with the W3C XHTML 1.0 Transitional standard.
*   **User Characteristics:**
    *   The system is designed for academic personnel and students with various technical backgrounds, all of whom are expected to have a basic knowledge of the internet.

## 3.5 Logical database requirements
The Publications Management System (PMS) will store all data within a database.

*   **Types of Information:**
    *   All data, including static and dynamic information, system statistics, publication details, and administrator settings.
    *   User account information: first name, last name, password, and a valid email address.
    *   Bibliographical information for publications: title, author(s), institute, publication dates, abstracts, cited references, and the complete text of publications (in PDF and Postscript formats).
    *   Author details: name, first name, and associated institute.
    *   Institute details: name and related aliases.

*   **Frequency of Use:**
    The database must be capable of handling several requests concurrently.

*   **Accessing Capabilities:**
    *   The web server will be responsible for sending queries to the database.
    *   Requests to the database will be performed using SQL statements.
    *   Direct access to the data stored in the database is restricted to Administrator(s) using the Command Line Interface (CLI).

*   **Data Entities and Relationships:**
    *   **Users:** Different types of users (Guest, VUB-Network User, Member, Publisher, Moderator, Administrator) will have accounts with associated personal data and privileges.
    *   **Publications:** Each publication will have bibliographical details, full text (if available), and references.
    *   **Authors:** Authors will be explicitly known by the system, with details such as name, first name, and institute. The system will allow manual indication that different references (e.g., 'D. Vermeir' and 'Dirk Vermeir') refer to the same author.
    *   **Institutes:** Institutes will be explicitly known, and the system will allow manual indication that different names (e.g., 'VUB' or 'Vrije Universiteit Brussel') refer to the same institute.
    *   Publications are associated with Authors and Institutes. Users can upload and manage publications.

*   **Integrity Constraints:**
    The database must maintain consistency at all times, ensuring no pointers to deleted records and no redundant information.

*   **Security:**
    *   User passwords must be encrypted when submitted from the user to the server and saved in an encrypted format within the database. Only the PMS should be able to access these encrypted passwords.
    *   Direct access to the data stored in the database is exclusively permitted for Administrator(s) via the CLI.
    *   User levels and their associated privileges (for editing, deleting, and uploading publications and their bibliographical details) must be strictly enforced.

*   **Data Retention Requirements:**
    A backup structure is a mandatory requirement to safeguard all data in the event of server or disk failures.

## 3.6 Design constraints
The following constraints are imposed on the system design:

*   The PMS web interface must conform to the W3C XHTML 1.0 Transitional standard.
*   The implementation must be compliant with the Coding Conventions of SE1.
*   The implementation must be object-oriented.
*   Design diagrams must be made following the UML standard.
*   The design of the PMS should be modular to simplify the design and implementation of expansions and replacements.
*   The PMS must be able to run on Linux, specifically the Wilma web server.
*   The web interface will be attractive, simple, and standard.
*   All functions and options of the PMS should be available in the least amount of clicks, while maintaining a certain amount of structure.
*   The used programming language will be Ruby.
*   The code will be documented using RDoc.
*   Git will be used for configuration management.
*   The use of frameworks is not allowed.
*   Only free software can be used for the tools and for the end product.
*   The PMS should be easily installable.

## 3.7 Software system attributes
#### Reliability
The PMS is developed so that it should not experience software faults. To achieve the least amount of software bugs, a spiral model with two iterations is used. For more information about the reliability of the PMS and the testing processes used, refer to the SQAP [12] and STD [13] of SE1.

#### Availability
The PMS will be available at all times from any computer (fulfilling assumptions and dependencies in Section 2.6), except when the Wilma server is unavailable. The availability of Wilma is an issue to be handled by the customer.

In case of a corrupted database, the Administrator should replace the database with the last available database backup. In case of another failure (hardware or software related), the problem should first be solved, and then the PMS should be reinitialized. During this downtime, the PMS should display an error message to visitors, stating that the PMS is temporarily down.

#### Security
Every user account is protected with a personal password. No one except the specific user should be able to log into that account and change personal information.

The user's password should be encrypted when submitted from the user to the server. It should also be saved in an encrypted way in the database, and no one except the PMS should be able to access these passwords.

Direct access to the data stored in the database is only allowed for Administrator(s) using the Command Line Interface (CLI).

The user levels (see section 2.3) should always be respected with regard to editing, deleting, and uploading publications (and their bibliographical details).

#### Maintainability
The database of the PMS should be maintained by the Administrator(s).

The PMS (with concern to user levels, special privileges, etc.) should be maintained by the Administrators on a global level.

On the Departmental level, the Moderator(s) will be able to maintain the PMS. If the PMS remains available under all circumstances, no other maintenance measures are required.

#### Portability
The PMS is developed and tested to run on Wilma, as specified by the customer. Although this is a Linux-based platform, it would be possible to relocate the PMS to a server with a different Operating System (OS) as long as all necessary software is available on it and some adjustments are made. This feature was not fully implemented in the PMS as it was not demanded by the customer.

## 3.8 Supporting information
This project is part of the course Software Engineering taught by Prof. Dr. Dirk Vermeir at the Free University of Brussels.

The development of the Publications Management System (PMS) will follow an iterative approach. The first iteration will include basic functions, with more functions and enhancements added in a second iteration. For this purpose, requirements are categorized as:
*   **Critical (C)**: Needed for the first iteration.
*   **Sufficient (S)**: Needed for the second iteration to achieve an adequate end product.
*   **Optional (O)**: To be implemented if there is enough time left.

The following functions are considered possible future expansions of the PMS and are not part of the current requirements:
*   Further extending of supported formats (e.g., MS WORD).
*   The possibility to view in the result page a list of documents that refer to this publication.
*   Automatic recognition that references like ‘D. Vermeir’ and ‘Dirk Vermeir’ refer to the same author, and that ‘VUB’ or ‘Vrije Universiteit Brussel’ refer to the same institute.
*   If a BibTEX file with only abstracts and referring URL-fields is uploaded, the PMS would be able to get the full texts through those URLs.
*   Expansion of the modular PMS system to upload and automatically recognize audio and video files (e.g., mp3, mpeg).

The PMS is designed to be easy to install. It requires Ruby 1.8 (or later) and will run under a Linux-based environment, specifically the Wilma web server. The exact installation procedure is TBD.

# 4 Verification
[NULL]

## 4.1 Functions
[N/A]

## 4.2 Performance requirements
[N/A]

## 4.3 Usability requirements
[N/A]

## 4.5 Logical database requirements
[N/A]

## 4.6 Design constraints
[N/A]

## 4.7 Software system attributes
### Reliability
Verification of reliability will be conducted according to the testing processes detailed in the Software Quality Assurance Plan (SQAP) [12] and Software Test Plan (STD) [13] of SE1.

### Availability
[N/A]

### Security
[N/A]

### Maintainability
[N/A]

### Portability
[N/A]

# 5 Appendices
[NULL]

## 5.1 Assumptions and dependencies
*   The users must have a web browser that supports W3C XHTML and have a TCP/IP connection to the web server.
*   HTTP traffic must be possible on the network connection between the server and the client.
*   Command line users have access to the server shell, and therefore also have all Administrator privileges.

## 5.2 Acronyms and abbreviations
*   **BibTEX**: This is a tool for formatting lists of references. The BibTEX tool is typically used together with the LATEX document preparation system.
*   **Bulk Update**: Refers in this case to importing many publications (or abstracts) at once (e.g. through BibTeX files).
*   **CLI**: Command Line Interface.
*   **Customer**: The person, or persons, who pay for the product and usually (but not necessarily) decide the requirements. In the context of this recommended practice the customer and the supplier may be members of the same organization.
*   **Git**: A distributed revision control / software configuration management project created by Linus Torvalds.
*   **HTML**: Hypertext Markup Language.
*   **HTTP**: Hypertext Transfer Protocol.
*   **IEEE**: Institute of Electrical and Electronics Engineers.
*   **OS**: Operating System (e.g. Linux, MS Windows XP, Mac OS X).
*   **PDF**: Portable Document Format.
*   **PMS**: Publication Management System.
*   **PS**: Postscript.
*   **RDoc**: Document Generator for Ruby Source.
*   **RIS**: The RIS file format is a tagged format for expressing bibliographic citations.
*   **Ruby**: This is a reflective, dynamic, object-oriented programming language.
*   **SCMP**: Software Configuration Management Plan.
*   **SE1**: Software Engineering group 1.
*   **SQAP**: Software Quality Assurance Plan.
*   **SRS**: Software Requirements Specification.
*   **STD**: Software Test Plan.
*   **Supplier**: The person, or persons, who produce a product for a customer. In the context of this recommended practice, the customer and the supplier may be members of the same organization.
*   **TBD**: To Be Determined.
*   **UML**: Unified Modelling Language.
*   **User**: The person, or persons, who operate or interact directly with the product. The user(s) and the customer(s) are often not the same person(s).
*   **VUB**: Free University of Brussels.
*   **W3C**: World Wide Web Consortium.
*   **Wilma**: This is a multifunctional Linux server for the students of the faculty of sciences at the VUB.
