RICM4 2017 2018 - Dashboard/SRS

The document provides a template of the Software Requirements Specification (SRS). It is inspired of the IEEE/ANSI 830-1998 Standard.

=I. Introduction=

1. Purpose of the requirements document
This Software Requirements Specification (SRS) identifies the requirements for Dashboard. It will specify our Single Page Application's (SPA) functionalities and the problems solved. This document will also detail our project's requirements.

2. Scope of the product
This project consists in updating a SPA. With Angular5 OAR-skylight, the precedent SPA, is not working anymore. Therefore to ease OAR's users and managers who have to use command line, the SPA has to be updated in Angular5.

This SPA will allow users to:
 * Add jobs, resources (if administrator)
 * See a listing of jobs, resources
 * Log in/Log out

3. Definitions, acronyms and abbreviations

 * SPA : Single Page Application is a web application accessed by a single web page. Its aim is to avoid loading the page at every user's actions. It interacts with the user dynamically rather than loading entire new pages from a server.
 * RESTful API : An Application Programming Interface is the defined interface through which interactions happen between applications that use its assets. REpresentational State Transfer API is a type of API that has several requirements :
 * Stateless
 * Client-Server oriented
 * Layered system
 * OAR : OAR is a versatile resource and task manager for HPC clusters, and other computing infrastructures.
 * Angular5 : Angular5 is a TypeScript-based open-source front-end web application platform. This framework allow the user to develop one SPA for multiple desktop and mobile browsers.
 * Angular5 : Angular5 is a TypeScript-based open-source front-end web application platform. This framework allow the user to develop one SPA for multiple desktop and mobile browsers.

4. References

 * Main page
 * Progress page
 * UML page

5. Overview of the remainder of the document
=II. General description=

1. Product perspective
This dashboard will be based on the template SB-Admin Angular5 provided. And it will allow the user to use OAR though different buttons and forms.

2. Product functions
This project will allow users to :
 * Add/Remove resources (Administrators only)
 * Submit/Delete/Configure jobs (Logged Users only)
 * See information about resources and jobs
 * Have restricted access : login/Logout

3. User characteristics
The users of this application are people that are already using OAR technologies, or the ones interested in it.

There is different types of users:
 * Administrators : will use the dashboard to manage resources and jobs
 * Logged Users : will use the dashboard to see the resources and submit, modify their jobs
 * Anonymous Users : will use the dashboard to see the resources

4. General constraints
Make the interface as simple as possible for the user.

5. Assumptions and dependencies
Having an Internet connection.

=III. Specific requirements=

Requirement 1 : Log in
Function: Authentication of the User.

Description: Authenticate the user by matching the name and password to the database. And get all the information related to the account.

Inputs: Name and Password

Source: NONE

Outputs: An error pops up, if there is a mistake, or else allows more action to the Logged user.

Destination: NONE

Action: Enter Name and Password -> Analyze to the database -> Connect to user/ Notify him of his mistake

Non functional requirements: Connection should be secured and protected.

Pre-condition:
 * User must be on the login page
 * User must not be already connected

Post-condition:
 * User is connected or notified of the error

Side-effects: NONE

Requirement 2 : See a listing of the resources
Function: Display resources.

Description: Display the resources available and their details.

Inputs: Pressed Resources button

Source: NONE

Outputs: A page with a listing of all the resources and an 'Add Resource' button.

Destination: NONE

Action: Press "Resources"

Non functional requirements: NONE

Pre-condition: NONE

Post-condition:
 * User is now on the Resources' list page.

Side-effects: A sub-menu appear with 2 choices: Resources' list and Add Resources. It will allow the user to jump from page to the other more easily. A button 'Add Resources' will also appear on the right-hand corner.

Requirement 3 : See a listing of the jobs
Function: Display user's submitted jobs.

Description: Display the jobs of the current user and their details.

Inputs: Pressed Jobs button

Source: NONE

Outputs: A page with a listing of all the jobs and an 'Add Job' button.

Destination: NONE

Action: Press "Jobs"

Non functional requirements: NONE

Pre-condition:
 * User must be logged in

Post-condition:
 * User is now on the Jobs' list page.

Side-effects: A sub-menu appear with 2 choices: Jobs' list and Add Jobs. It will allow the user to jump from page to the other more easily. A button 'Add Jobs' will also appear on the right-hand corner.

Requirement 4 : Add a resource
Function: Add a resource.

Description: Add a resource to the cluster.

Inputs: Pressed Add Resource button and filled out form with the required information.

Source: NONE

Outputs: Addition of a resource corresponding to the data to the cluster.

Destination: NONE

Action: Press "Add Resources" -> Fill the form with a hostname or IP address, an ID, ... -> Click on Submit

Non functional requirements:
 * The IP address or the hostname must be correct

Pre-condition:
 * User must be an Administrator.

Post-condition:
 * The resource is now added to the database.

Side-effects: NONE

Requirement 5 : Add a job
Function: Add a job.

Description: Submit a job to the cluster.

Inputs: Pressed Add Job button and filled out form with the required data.

Source: NONE

Outputs: Submission of a job corresponding to the data entered to the cluster.

Destination: NONE

Action: Press "Add Job" -> Fill the form with the number of nodes, CPUs or/and cores needed, a max duration -> Add the file -> Click on Submit

Non functional requirements:
 * The file must be executable
 * The nodes' number must not exceed the resources available
 * The CPUs' number must not exceed the resources available
 * The cores' number must not exceed the resources available

Pre-condition:
 * User must be identified.

Post-condition:
 * The job is now submitted and added to the jobs' list of the user. It will be executed according to the schedule.

Side-effects: NONE

Requirement 6 : Modify a resource
Function: Modify a resource.

Description: Modify a resource already part of the cluster.

Inputs: Pressed Modify button and filled out form with the required data.

Source: NONE

Outputs: Modification of the resource according to the data entered.

Destination: NONE

Action: Press "Modify" next to the resource to modify -> Modify the form with a hostname or IP address, an ID, ... -> Click on Submit

Non functional requirements:
 * The resource must exist
 * The form must by correctly filled

Pre-condition:
 * User must be an Administrator.

Post-condition:
 * The resource is now modified in the database.

Side-effects: NONE

Requirement 7 : Modify a job
Function: Modify a job.

Description: Modify a job already submitted to the cluster.

Inputs: Pressed Modify button and filled out form with the required data.

Source: NONE

Outputs: Modification of the job according to the data entered.

Destination: NONE

Action: Press "Modify" next to the job to modify -> Modify the form with the number of nodes, CPUs or/and cores needed, a max duration or Modify the file -> Click on Submit

Non functional requirements:
 * The job must exist
 * The form must by correctly filled

Pre-condition:
 * User must be identified.

Post-condition:
 * The job is now modified in the database. It will be executed according to the schedule.

Side-effects: NONE

Requirement 8 : Delete a resource
Function: Delete a resource.

Description: Delete a resource already part of the cluster.

Inputs: Pressed Delete button.

Source: NONE

Outputs: Suppression of the resource in the cluster.

Destination: NONE

Action: Press "Delete" next to the resource to delete -> Click on Confirm

Non functional requirements:
 * The resource must exist
 * The resource must be in a "Dead" state

Pre-condition:
 * User must be an Administrator.

Post-condition:
 * The resource is now removed from the database.

Side-effects: NONE

Requirement 9 : Delete a job
Function: Delete a job.

Description: Delete a job already submitted to the cluster.

Inputs: Pressed Delete button.

Source: NONE

Outputs: Suppression of the job in the database.

Destination: NONE

Action: Press "Delete" next to the job to delete -> Click on Confirm

Non functional requirements:
 * The job must exist

Pre-condition:
 * User must be identified.

Post-condition:
 * The job is now removed from the database.

Side-effects: NONE

Requirement 10 : Log out
Function: Dis-authentication of the User.

Description: Remove all the information related to the user.

Inputs: Pressed Log out button.

Source: NONE

Outputs: Log out user.

Destination: NONE

Action: Pressed Log out button.

Non functional requirements:

Pre-condition:
 * User must be logged in

Post-condition:
 * User is disconnected. And the data are update.

Side-effects: NONE

=IV. Product evolution=

=V. Appendices=
 * http://www.cs.st-andrews.ac.uk/~ifs/Books/SE9/Presentations/PPTX/Ch4.pptx
 * http://en.wikipedia.org/wiki/Software_requirements_specification
 * http://oar.imag.fr/