# 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 such as author and title from the full text of a publication, with options for manual correction if necessary. The system will recognize and allow users to indicate synonymous references for authors and institutions, such as 'D. Vermeir' and 'Dirk Vermeir' or 'VUB' and 'Vrije Universiteit Brussel'. 

The PMS will support access via command line and web browser, adhering to W3C XHTML standards. It will offer various access levels, including Guest, VUB-Network User, Member, Publisher, Moderator, and Administrator, each with specific privileges. The system will also support bulk updates and access control, allowing users to search for publications by title, author, and institute, and to access the contents of a publication if available. The primary goal of the PMS is to streamline the management and retrieval of academic publications, enhancing accessibility and organization for users within the academic community.

## 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 MySQL database and a web server, which can be accessed via a web browser or command line. The PMS is intended to operate within the VUB network but can also be accessed externally by registered users.

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

#### User interfaces
- **Web Browser Access**: Users can access the PMS through any operating system using a web browser. The interface is designed to be compliant with W3C XHTML 1.0 Transitional standards.
- **Command Line Access**: Administrators can access the system via command line within the VUB network.

#### Hardware interfaces
- **No specific hardware requirements**: The PMS is accessible from any device with a web browser and internet connection.

#### 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
- **No specific memory limits**: There is no defined limit on memory usage, but publication files have a maximum size, which is currently TBD.

#### Operations
- **User Registration and Login**: Users must register and log in to access certain functionalities.
- **Search and Retrieval**: Users can search for publications and download them if logged in or connected to the VUB network.

#### Site adaptation requirements
- **Installation 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]**: There are no specified interactions with external services such as SaaS or cloud services.

### 1.3.2 Product functions
The Publications Management System (PMS) provides a range of functions organized in a hierarchical user structure, where each user type inherits the functions of the preceding one. The major functions include:

- **Guest Functions**: 
  - Register an account
  - Log into the PMS
  - Validate a new account
  - Retrieve password

- **VUB-Network User Functions**:
  - Search for publications using keywords, authors, and publication dates
  - Perform advanced searches with additional criteria
  - Order, export, and download search results
  - Search for publications based on similarity

- **Member Functions**:
  - Change account details
  - Log off the PMS

- **Publisher Functions**:
  - Upload publications in supported formats (e.g., pdf, ps)
  - Edit own publications
  - Perform bulk uploads

- **Moderator Functions**:
  - Manage user levels within their department
  - Manage group permissions
  - Edit author information
  - Edit departmental publications

- **Administrator Functions**:
  - Access the control panel
  - Create and delete users and groups
  - Manage user levels across the system
  - Edit all publications

These functions are designed to facilitate the management and retrieval of bibliographical information, ensuring that users can efficiently access and manage publications within the system.

### 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
[N/A]

## 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 together 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 Standard**  
   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. **Software Quality Assurance Plan (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. **Free University of Brussels**  
   Title: Free University of Brussels  
   Source: [VUB](http://www.vub.ac.be)

[N/A for any additional references not explicitly mentioned in the original SRS]

# 3 Requirements
[NULL]

## 3.1 Functions
The Publications Management System (PMS) is designed to handle various user interactions and data processing tasks. The fundamental actions include:

- **User Authentication and Management:**
  - Users can register, log in, and log off the system.
  - Password retrieval and change functionalities are available.
  - Administrators can create, delete, and manage user accounts and groups.

- **Publication Management:**
  - Users can search for publications using keywords, author names, and publication dates.
  - Publications can be uploaded, edited, and deleted by users with appropriate permissions.
  - The system supports bulk uploading of publications.

- **Search and Retrieval:**
  - Users can perform basic and advanced searches for publications.
  - Search results can be ordered, exported, and downloaded in various formats (e.g., HTML, PDF, PS).
  - Users can view detailed information about publications and their references.

- **Error Handling and Recovery:**
  - Users receive error messages for failed operations, and errors are logged for administrative review.
  - The system is designed to handle multiple requests simultaneously and maintain database consistency.

- **Security and Access Control:**
  - User accounts are protected with encrypted passwords.
  - Access to data is restricted based on user roles and permissions.

- **System Interfaces:**
  - The PMS can be accessed via a web interface or command line interface, with specific functionalities available based on user roles.

- **Communication and Data Handling:**
  - Communication between the PMS and users is conducted over HTTP using TCP/IP.
  - The system is designed to handle various data formats and ensure data integrity.

The PMS is structured to ensure that all functionalities are accessible with minimal user interaction while maintaining a secure and efficient environment for managing publications.

## 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 clear and structured layout. 

The web interface will comply with the W3C XHTML 1.0 Transitional standard, ensuring compatibility with various web browsers and operating systems. Users should be able to access the PMS from any computer with internet access, and the system should be explicitly accessible for users with Linux as an operating system using a text-based web browser.

Error messages will be clear and informative, providing users with the cause of any errors encountered during their interactions with the system. These errors will also be logged to notify administrators of any technical difficulties.

The PMS will support a hierarchical user structure, allowing different levels of access and functionality based on user roles, such as Guest, VUB-Network User, Member, Publisher, Moderator, and Administrator. This structure ensures that users can easily navigate the system and access the features relevant to their role.

Overall, the PMS aims to provide a satisfying user experience by ensuring that all functions and options are available with minimal clicks, while maintaining a certain amount of structure and clarity in the user interface.

## 3.5 Logical database requirements
All data will be saved in the database, including static and dynamic information, statistics, publications, and administrator settings. It is crucial to maintain database consistency at all times, ensuring no pointers to deleted records and no redundant information. The database must be capable of handling several requests simultaneously, which will be executed using SQL statements. A backup structure is also required to save all data in case of server or disk problems.

[N/A]

## 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 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 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 in Section 2.6, except when the Wilma server is unavailable. The availability of Wilma is the responsibility of the customer. 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, the PMS should display an error message indicating temporary unavailability.

### 3.7.3 Security
- Each user account is protected with a personal password, and only the specific user should be able to log in and change personal information.
- Passwords must be encrypted during transmission and stored in an encrypted format in the database, with access restricted to the PMS.
- Direct database access is only allowed for 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, concerning user levels and special privileges, should be maintained globally by Administrators and at the departmental level by Moderators.
- 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, as specified by the customer. Although Wilma is a Linux-based platform, the PMS could be relocated to a server with a different OS, provided all necessary software is available and some adjustments are made. This feature was not fully implemented as it 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:

- **Validity Checks on Inputs**: 
  - Test cases will be designed to verify that all inputs are validated according to the specified criteria. This includes checking for correct data types, ranges, and formats.

- **Exact Sequence of Operations**: 
  - The sequence of operations will be verified through step-by-step execution tracing to ensure that the software processes inputs and generates outputs in the correct order.

- **Responses to Abnormal Situations**:
  - **Overflow**: Stress testing will be conducted to ensure the system can handle data overflow conditions gracefully without crashing.
  - **Communication Facilities**: Simulated network failures will be introduced to verify that the system maintains communication integrity and recovers appropriately.
  - **Hardware Faults and Failures**: Fault injection techniques will be used to simulate hardware failures and verify the system's ability to handle such events.
  - **Error Handling and Recovery**: Error scenarios will be tested to ensure that the system can recover from errors and continue operation without data loss or corruption.

- **Effect of Parameters**: 
  - Parameter variation tests will be conducted to assess the impact of different parameter values on system behavior and performance.

- **Relationship of Outputs to Inputs**:
  - **Input/Output Sequences**: Test cases will verify that the system produces the correct output sequences in response to given input sequences.
  - **Formulas for Input to Output Conversion**: The accuracy of any formulas used for converting inputs to outputs will be verified through comparison with expected results.

These verification activities will be documented in detail, and any discrepancies will be addressed through iterative testing and refinement of the software. The goal is to ensure that all functional requirements are met and that the system operates reliably under all specified conditions.

## 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
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 the Wilma server is unavailable. In case of a corrupted database, the Administrator should replace it with the last available backup. During downtime, the PMS should display an error message indicating temporary unavailability.

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

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

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

# 5 Appendices
[NULL]

## 5.1 Assumptions and dependencies
- Users must have a web browser that supports W3C XHTML and a TCP/IP connection to the web server.
- HTTP traffic must be possible on the network connection between the 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.

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