# 1 Introduction
[NULL]

## 1.1 Purpose
The purpose of this document is to present an overall description and listing of the functionality of a Publications Management System (PMS). This document is intended for the customer(s) and suppliers of the system, including designers, testers, and the implementation unit.

## 1.2 Scope
The software product to be produced is the Publications Management System (PMS). The PMS will manage a database containing bibliographical information and provide functionalities to save the entire text of a publication in PDF and Postscript formats. It will automatically retrieve bibliographical information from the complete text of a publication and allow manual corrections if necessary. The system will recognize authors and institutions, enabling users to indicate equivalences, such as 'D. Vermeir' and 'Dirk Vermeir' referring to the same author. Additionally, the PMS will support bulk updates and various access types, including access to publication contents if available, while also implementing access control.

The application of the PMS is to facilitate the management and retrieval of academic publications, providing benefits such as streamlined access to publication data, enhanced data accuracy through manual corrections, and efficient bulk data handling. The objectives include improving the accessibility and organization of publication data for users, including academic personnel and students, and ensuring compliance with W3C XHTML standards for web access. The goals are to create a user-friendly, efficient, and secure system that supports both command line and web browser access, aligning with the requirements of the Free University of Brussels.

## 1.3 Product overview
[NULL]

### 1.3.1 Product perspective
The Publications Management System (PMS) is designed to function as a standalone system that manages bibliographical information and publication texts. It interfaces with a database and a web server, accessible via web browsers and command line interfaces. The PMS is not part of a larger system but relies on several interfaces and components to deliver its functionality.

#### System interfaces
- **Database Interface**: The PMS interfaces with a MySQL database to store and retrieve bibliographical data and publication texts.
- **Web Server Interface**: The web server executes the PMS and handles queries to the database, generating user interfaces for different user types.

#### User interfaces
- **Web Browser Access**: Users can access the PMS through any operating system using a web browser. The interface is designed to be accessible, particularly for users with Linux OS using text-based browsers like Links2.
- **Command Line Access**: Administrators can access the system via command line within the VUB network.

#### Hardware interfaces
- There are no specific hardware requirements for users accessing the PMS. The system is designed to be accessible from any standard computing device with internet access.

#### Software interfaces
- **Operating System**: The PMS is designed to run on a Linux-based environment, specifically the Wilma server.
- **Programming Language**: The system is developed using Ruby 1.8 or later.

#### Communications interfaces
- **HTTP Connection**: Communication between the PMS and users is facilitated via HTTP using TCP/IP port 80.

#### Memory constraints
- There is no specific limit on memory usage by the PMS, but publications have a maximum file size, which is currently TBD.

#### Operations
- Users must be logged into the PMS or connected to the VUB network to access its functionalities. The system supports various user operations, including registration, login, and publication management.

#### Site adaptation requirements
- The PMS requires Ruby 1.8 or later and is designed to be easily installable on a Linux-based environment.

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

### 1.3.2 Product functions
The Publications Management System (PMS) provides a hierarchical structure of user roles, each with specific functions:

- **Guest**: Can register an account, log in, validate a new account, and retrieve a password. Guests cannot search, upload, or edit publications.

- **VUB-Network User**: Can search for publications using keywords, authors, and dates, perform advanced searches, order results, export and download results, and search for similar publications. They cannot upload or edit publications.

- **Member**: Inherits all functions of a VUB-Network User and can change account details and log off the PMS.

- **Publisher**: Inherits all functions of a Member and can upload publications, edit their own publications, and perform bulk uploads.

- **Moderator**: Inherits all functions of a Publisher and can manage user levels within their department, manage group permissions, and edit author information. They can also edit departmental publications.

- **Administrator**: Inherits all functions of a Moderator and has access to a control panel for user and group management, including creating, deleting, and editing users and groups. They can also edit all publications.

Optional future expansions include support for additional formats, automatic recognition of author and institute names, and the ability to upload audio and video files.

### 1.3.3 User characteristics
The users of the Publications Management System (PMS) are expected to be academic personnel and students with various technical backgrounds. All users should have a basic knowledge of the internet. [N/A]

### 1.3.4 Limitations
- The PMS must be able to run on Linux, specifically the Wilma web server.
- The web interface must comply with the W3C XHTML 1.0 Transitional standard.
- The use of frameworks is not allowed.
- Only free software can be used for the tools and the end product.
- The PMS should be easily installable with Ruby 1.8 or later.
- The design of the PMS should be modular to simplify the design and implementation of expansions and replacements.
- The PMS must be object-oriented and compliant with the Coding Conventions of SE1.
- The implementation must follow the UML standard for design diagrams.
- The PMS should be developed to avoid software faults, using a spiral model with two iterations.
- The PMS should be available at all times, except when the Wilma server is unavailable.
- Every user account is protected with a personal password, which should be encrypted during transmission and storage.
- Direct access to the database is only allowed for Administrators using the CLI.
- The user levels must always be respected regarding editing, deleting, and uploading publications.
- The PMS is developed and tested to run on Wilma, but it could be relocated to a different OS with necessary software and adjustments.

## 1.4 Definitions
- **Customer**: The person or persons who pay for the product and usually (but not necessarily) decide the requirements. In this context, 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 this context, 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**: A tool for formatting lists of references, typically used with the LATEX document preparation system.
- **Bulk Update**: Refers to importing many publications (or abstracts) at once, e.g., through BibTeX files.
- **CLI**: Command Line Interface.
- **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**: A tagged format for expressing bibliographic citations.
- **Ruby**: 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.
- **TBD**: To Be Determined.
- **UML**: Unified Modelling Language.
- **VUB**: Free University of Brussels.
- **W3C**: World Wide Web Consortium.
- **Wilma**: A multifunctional Linux server for the students of the faculty of sciences at the VUB.

# 2 References
## 2.1 Compliance

1. **IEEE Std 830-1998**  
   Title: IEEE Recommended Practice for Software Requirements Specifications  
   Date: 1998  
   Publishing Organization: Institute of Electrical and Electronics Engineers (IEEE)  
   Source: [IEEE](http://www.ieee.org/)

2. **W3C XHTML 1.0 Transitional**  
   Title: XHTML 1.0: The Extensible HyperText Markup Language (Second Edition)  
   Date: 2002  
   Publishing Organization: World Wide Web Consortium (W3C)  
   Source: [W3C](http://www.w3.org/TR/xhtml1/)

## 2.2 Guidance

1. **Software Engineering Course**  
   Title: Software Engineering Projects 2007-2008  
   Publishing Organization: Free University of Brussels  
   Source: [VUB](http://tinf2.vub.ac.be/~dvermeir/courses/software_engineering/projects/2007-2008/index.html)

2. **Git**  
   Title: Git - Fast Version Control System  
   Publishing Organization: Git  
   Source: [Git](http://git.or.cz/)

3. **RDoc**  
   Title: RDoc: Document Generator for Ruby Source  
   Publishing Organization: RDoc  
   Source: [RDoc](http://rdoc.sourceforge.net/)

4. **SE1 Coding Conventions**  
   Title: SE1 Coding Conventions  
   Publishing Organization: Free University of Brussels  
   Source: [SE1](http://wilma.vub.ac.be/~se1_0708/docs/coding_conventions/conventions.pdf)

5. **UML**  
   Title: Unified Modeling Language  
   Publishing Organization: Object Management Group  
   Source: [UML](http://www.uml.org/)

6. **SQAP**  
   Title: Software Quality Assurance Plan  
   Publishing Organization: Free University of Brussels  
   Source: [SQAP](http://wilma.vub.ac.be/~se1_0708/docs/sqap/sqap.pdf)

7. **VUB**  
   Title: Free University of Brussels  
   Source: [VUB](http://www.vub.ac.be)

# 3 Requirements
[NULL]

## 3.1 Functions
The Publications Management System (PMS) is designed to handle various functions related to managing bibliographical information and publications. The following subsections outline the fundamental actions that the software must perform, including input processing, output generation, and handling of abnormal situations.

### 3.1.1 Input Processing and Validity Checks

- **Log in to the system**: Users must provide valid credentials to access the system. The system checks the username and password against stored records.
- **Register for an account**: New users must provide a username, password, and personal details. The system checks for the uniqueness of the username.
- **Search for publications**: Users can input search criteria such as keywords, authors, and publication dates. The system validates these inputs to ensure they conform to expected formats.

### 3.1.2 Sequence of Operations

- **Search and View Publications**: Users initiate a search, and the system retrieves matching records. Users can then view detailed information about each publication.
- **Upload Publications**: Users upload documents in supported formats (e.g., PDF, PS). The system extracts bibliographical information and allows users to make corrections.

### 3.1.3 Responses to Abnormal Situations

- **Overflow**: [N/A]
- **Communication Facilities**: The system uses HTTP for communication. Errors in communication are logged, and users are notified of any issues.
- **Hardware Faults and Failures**: In case of server or disk problems, a backup structure is in place to restore data. The system should notify users of any downtime.
- **Error Handling and Recovery**: Users receive error messages for invalid inputs or failed operations. Errors are logged for administrative review.

### 3.1.4 Effect of Parameters

- **User Privileges**: The system's functionality is influenced by user roles (e.g., Guest, Member, Publisher). Each role has specific permissions that affect available operations.

### 3.1.5 Relationship of Outputs to Inputs

- **Search Results**: The system generates a list of publications based on search criteria. Users can sort and download these results.
- **Publication Details**: Detailed views of publications include information derived from user inputs during searches.

### 3.1.6 Sub-functions and Sub-processes

- **User Management**: Includes functions for creating, editing, and deleting user accounts.
- **Publication Management**: Encompasses uploading, editing, and viewing publications.
- **Search and Retrieval**: Covers searching for publications and viewing search results.

The PMS is structured to ensure that all functions are performed efficiently and reliably, with appropriate error handling and user feedback mechanisms in place.

## 3.2 Performance requirements
[N/A]

## 3.3 Usability requirements
The Publications Management System (PMS) is designed to be user-friendly and accessible to a wide range of users, including academic personnel and students with varying technical backgrounds. The system aims to provide an intuitive interface that allows users to perform tasks with minimal effort and clicks, while maintaining a structured and clear layout. The web interface will comply with the W3C XHTML 1.0 Transitional standard to ensure compatibility and accessibility across different web browsers.

The PMS will provide clear error messages to users in case of any issues, and these errors will be logged to notify administrators of technical difficulties. The system will be accessible from any operating system using a web browser, with specific support for Linux users using text-based web browsers. There are no specific hardware requirements for users, ensuring broad accessibility.

The design of the PMS will focus on modularity to simplify future expansions and replacements, ensuring that new features can be added without disrupting existing functionality. The system will be easy to install and maintain, with clear documentation provided for users and administrators.

Overall, the PMS aims to provide a satisfying user experience by being efficient, effective, and easy to use, while minimizing potential harm or frustration that could arise from its use in various academic contexts. [N/A]

## 3.5 Logical database requirements
The logical database requirements for the Publications Management System (PMS) are as follows:

- **Types of Information**: The database will store static and dynamic information, including bibliographical details, user accounts, statistics, and administrator settings. It will also manage publications and their associated metadata.

- **Frequency of Use**: The database must handle multiple simultaneous requests efficiently, as users will frequently access, search, and update publication records.

- **Accessing Capabilities**: Users will access the database through the PMS interface, with different levels of access based on user roles (e.g., Guest, Member, Publisher, Moderator, Administrator). Direct access to the database is restricted to Administrators using the Command Line Interface (CLI).

- **Data Entities and Relationships**: The database will include entities such as Users, Publications, Authors, and Institutions. Relationships will be established to link authors to publications and users to their roles and permissions.

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

- **Security**: User accounts are protected with encrypted passwords. Only the PMS should access these passwords, and direct database access is limited to Administrators.

- **Data Retention Requirements**: A backup structure is required to ensure data preservation in case of server or disk failures. The database should support regular backups to maintain data integrity and availability.

## 3.6 Design constraints
- The PMS web interface must conform to the W3C XHTML 1.0 Transitional standard.
- The implementation must comply with the Coding Conventions of SE1.
- The implementation must be object-oriented.
- Design diagrams must be created 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 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 use of certain libraries and aids is justified in the SCMP.

## 3.7 Software system attributes
### 3.7.1 Reliability
The PMS is developed to minimize software faults by employing a spiral model with two iterations. For more information about the reliability of the PMS and the testing processes used, refer to the Software Quality Assurance Plan (SQAP) and Software Test Plan (STD) of SE1.

### 3.7.2 Availability
The PMS will be available at all times from any computer that meets the assumptions and dependencies specified, except when the Wilma server is unavailable. In case of a corrupted database, the Administrator should replace it with the last available backup. For other failures, the problem should be resolved, and the PMS should be reinitialized. During downtime, an error message should inform visitors that the PMS is temporarily unavailable.

### 3.7.3 Security
- Every user account is protected with a personal password, which should be encrypted during transmission and storage.
- Direct access to the database is restricted to Administrators using the Command Line Interface (CLI).
- User levels must be respected regarding editing, deleting, and uploading publications and their bibliographical details.

### 3.7.4 Maintainability
- The database should be maintained by the Administrator(s).
- The PMS should be maintained by Administrators globally and by Moderators at the departmental level.
- No additional maintenance measures are required if the PMS remains available under all circumstances.

### 3.7.5 Portability
The PMS is developed and tested to run on the Wilma server, a Linux-based platform. It can be relocated to a server with a different OS if all necessary software is available and some adjustments are made. However, full implementation of this feature was not demanded by the customer.

## 3.8 Supporting information
[N/A]

# 4 Verification
[NULL]

## 4.1 Functions
The verification of the software functions will involve a series of tests and evaluations to ensure that the system meets the specified requirements. The following approaches and methods will be used to verify the functions of the Publications Management System (PMS):

- **Validity Checks on Inputs**: 
  - Ensure that all input fields, such as those for registration and search, accept only valid data types and formats. 
  - Test cases will be designed to input invalid data to verify that the system correctly identifies and handles these cases.

- **Exact Sequence of Operations**: 
  - Verify that the sequence of operations for each function, such as logging in, searching, and downloading publications, follows the specified order.
  - Use step-by-step walkthroughs and automated scripts to ensure the correct sequence is maintained.

- **Responses to Abnormal Situations**:
  - **Overflow**: Test the system's ability to handle data overflow situations, such as excessive input lengths or large file uploads.
  - **Communication Facilities**: Simulate network failures to ensure the system can handle communication disruptions gracefully.
  - **Hardware Faults and Failures**: Introduce hardware faults to verify that the system can recover or provide meaningful error messages.
  - **Error Handling and Recovery**: Test the system's error handling mechanisms by introducing various errors and observing the system's response and recovery processes.

- **Effect of Parameters**: 
  - Evaluate how different parameters, such as user roles and access levels, affect the system's behavior and functionality.
  - Conduct tests to ensure that parameter changes lead to expected outcomes without unintended side effects.

- **Relationship of Outputs to Inputs**:
  - **Input/Output Sequences**: Verify that the system produces the correct outputs in response to specific inputs, maintaining the correct sequence of operations.
  - **Formulas for Input to Output Conversion**: Test any formulas or algorithms used in the system to ensure they produce accurate and expected results.

The verification process will be documented, and any discrepancies or issues identified during testing will be addressed to ensure the system meets all functional requirements.

## 4.2 Performance requirements
[N/A]

## 4.3 Usability requirements
[N/A]

## 4.5 Logical database requirements
[N/A]

## 4.6 Design constraints
The design constraints for the Publications Management System (PMS) are as follows:

- **W3C XHTML Compliance**: The PMS web interface must conform to the W3C XHTML 1.0 Transitional standard. This ensures that the web interface is compatible with web standards and can be accessed by a wide range of web browsers.

- **Coding Conventions**: The implementation must adhere to the Coding Conventions of SE1. This ensures consistency and readability in the codebase, facilitating maintenance and collaboration among developers.

- **Object-Oriented Design**: The system must be implemented using object-oriented programming principles. This approach promotes modularity, reusability, and scalability in the system design.

- **UML Standard**: Design diagrams must be created following the UML (Unified Modeling Language) standard. This provides a standardized way to visualize the system architecture and design, aiding in communication and understanding among stakeholders.

Verification of these design constraints will involve reviewing the system's compliance with the specified standards and conventions. This will include:

- **Code Reviews**: Conducting regular code reviews to ensure adherence to coding conventions and object-oriented design principles.

- **Design Document Reviews**: Evaluating design documents and diagrams to verify compliance with UML standards.

- **Web Interface Testing**: Testing the web interface for compliance with W3C XHTML standards using validation tools.

These verification activities will ensure that the PMS meets the specified design constraints and adheres to the required standards and guidelines.

## 4.7 Software system attributes
### Reliability
The PMS is developed to minimize software faults by employing a spiral model with two iterations. For more information about the reliability of the PMS and the testing processes used, refer to the SQAP and STD of SE1.

### Availability
The PMS will be available at all times from any computer, except when Wilma is not available. In case of a corrupted database, the Administrator should replace it with the last available backup. During any downtime, the PMS should display an error message indicating temporary unavailability.

### Security
- Every user account is protected with a personal password, which should be encrypted during transmission and storage.
- Direct access to the database is restricted to Administrators using the CLI.
- User levels must be respected regarding editing, deleting, and uploading publications.

### Maintainability
- The database should be maintained by the Administrator(s).
- The PMS should be maintained by Administrators on a global level and by Moderators on a departmental level.

### Portability
The PMS is developed and tested to run on Wilma, a Linux-based platform. It can be relocated to a server with a different OS if necessary software is available and adjustments are made, although this feature is not fully implemented.

# 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 server and client.
- Command line users have access to the server shell, granting them Administrator privileges.
- The PMS is expected to run on the Wilma web server, which is a Linux-based environment.
- The availability of the Wilma server is assumed to be managed by the customer.
- The PMS should be easily installable with Ruby 1.8 or later installed.
- The system assumes that the necessary software is available on the server for potential relocation to a different OS, although this feature is not fully implemented.

## 5.2 Acronyms and abbreviations
- **BibTEX**: A tool for formatting lists of references, typically used with the LATEX document preparation system.
- **CLI**: Command Line Interface.
- **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**: A tagged format for expressing bibliographic citations.
- **Ruby**: 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.
- **TBD**: To Be Determined.
- **UML**: Unified Modelling Language.
- **VUB**: Free University of Brussels.
- **W3C**: World Wide Web Consortium.
- **Wilma**: A multifunctional Linux server for the students of the faculty of sciences at the VUB.
