ITP Cloud System SRS - Final Version
ITP Cloud System SRS - Final Version
Version 1.0.1
Contents
1. Introduction ............................................................................................................................ 2
1.1. Purpose ............................................................................................................................ 2
1.2. Document Conventions .................................................................................................. 2
1.3. Intended Audience and Reading Suggestions ............................................................. 2
1.4. Product Scope ................................................................................................................. 2
1.5. References ....................................................................................................................... 2
2. Overall Description ................................................................................................................ 2
2.1. Product Perspective ....................................................................................................... 2
2.2. Product Functions ........................................................................................................... 3
2.3. User Classes and Characteristics ................................................................................... 4
2.4. Operating Environment ................................................................................................. 4
2.5. Design and Implementation Constraints ...................................................................... 5
2.6. User Documentation ...................................................................................................... 7
2.7. Assumptions and Dependencies ................................................................................... 7
3. External Interface Requirements.......................................................................................... 7
3.1. User Interfaces ................................................................................................................ 7
3.2. Hardware Interfaces ....................................................................................................... 8
3.3. Software Interfaces ........................................................................................................ 9
3.4. Communication Interfaces ........................................................................................... 10
4. System Features ................................................................................................................... 12
4.1. ITP Core .......................................................................................................................... 12
4.2. ITP Engine ...................................................................................................................... 14
5. Other Nonfunctional Requirements................................................................................... 15
5.1. Performance Requirements......................................................................................... 15
5.2. Safety Requirements .................................................................................................... 15
5.3. Security Requirements ................................................................................................. 16
5.4. Software Quality Attributes ........................................................................................ 16
6. Domain Requirements ......................................................................................................... 17
Appendix A: Glossary ................................................................................................................... 18
Appendix B: Analysis Models ...................................................................................................... 20
Appendix C: To Be Determined List............................................................................................ 20
2
1. Introduction
1.1. Purpose
This document specifies the requirements of the ITP Cloud platform. It describes
only two main subsystems of the entire ITP Cloud platform. These subsystems are:
the ITP Core System and the ITP Engine System. Together these systems form the
ITP Cloud Platform. This document further serves as a guide for the developers
(author) on one hand and a software validation document for the prospective
reviewers (lecturers) on the other.
This document was written using the Times New Roman font family. All subheadings
have a larger font size compared to the paragraphs. Additionally, important pieces
of information have been made bold for emphasis' sake. This document is prepared
by following IEEE conventions for software requirement specifications.
ITP Cloud is a web hosting platform designed for students. It provides a hosting
environment where students with websites and webapps can deploy their projects.
The goal is that by providing such a platform, students will be stimulated to engage
in project-based learning and consequently become more skilled in software
engineering skills.
1.5. References
[1] A. S. T. Maarten van Steen, DISTRIBUTED SYSTEMS, 4th edition ed., Maarten van Steen,
2023, pp. 2 - 54.
[2] C. B. Thomas Connolly, Database Systems A Practical Approach to Design,
Implementation, and Management, England: Pearson Education Limited, 2015.
[3] Y. d. Liang, Introduction to Java™ Programming and Data Structures, Comprehensive
Version, Harlow: Pearson Education Limited, 2019.
2. Overall Description
2.1. Product Perspective
In figure 1, ITP Core interacts with three entities: ITP Engine, a Mail Server and a
Database Server. Public users of the system will mainly interact with ITP Core. ITP
Core will then interact with a Database Server to store application and system data
persistently. Occasionally, the ITP Core will send out emails via the Mail Server using
the SMTP Protocol. These emails will mainly be for authentication purposes and any
system notifications that may require the end user’s attention. Lastly, ITP Core will
interact with ITP Engine.
ITP Engine acts as a resources manager and an adapter between ITP Core and the
Linux Operating System. ITP Engine interacts mainly with ITP Core by receiving
requests pertaining to resource allocation and management. The Engine then
interacts with the Linux Operating System to achieve the tasks.
The system will allow the users (students) to perform the following functions. The
functions have been grouped based on category.
Authentication
• Create an account using their details
• Activate their newly created account using email verification
4
The ITP Cloud Platform will have mainly two user classes. These include students
and lecturers. Students are the primary users of the system. About 80% of the
system functions are designed and made for students. While the remaining 20% for
the lecturers.
As earlier mentioned, the ITP Cloud Platform is made up of two main subsystems.
ITP Core and ITP Engine. ITP Core is a web application written using PHP 8 and the
CodeIgniter 4 framework. ITP Engine on the other hand is also a web application
written using Java 8 and the Spring Boot framework. Because of this, the optimum
5
operating environment for the ITP Cloud platform would consist of the following
Software Components and Operating System.
Software Requirements
The following issues are expected to limit the options available for the developer to
design, develop and implement the ITP Coud platform. These have been
categorized as follows:
6
1. Hardware Limitations
The nature of the system being built is massively hardware intensive. This owes
to the fact that the Cloud platform is some kind of runtime environment that
hosts other applications that each may have their own hardware requirements.
Thus, the specific hardware requirements for the ITP Cloud Platform are largely
dependent on the specific hardware requirements of each application that is
hosted on the platform. It can be said that the hardware requirements of the
ITP Cloud Platform are a cumulative summation of all possible application
specific hardware requirements.
One suggested solution to this, is actually building a distributed computer
system, that is globally distributed and pools computing resources like Memory
and Compute. However, according to Maarten and Andrew [1] distributed and
decentralized systems are inherently complex and difficult to build and
maintain.
2. Interfaces to Other Applications
The ITP Engine will mainly interact with the Linux Operating System. This will
be achieved in two ways. First, making system calls from Java to the Linux OS.
And secondly, by directly interacting with the Linux Terminal programmatically.
The latter approach of interacting with the Linux OS is complex and prone to
errors. This too will pose a significant limitation to making the two systems, that
is, the ITP Engine and the Linux OS, communicate effectively.
3. Databases To Be Used
The ITP Cloud Platform will be accessed by many users simultaneously. This
simultaneous interaction will naturally give rise to database issues partly
highlighted by Thomas Connolly and Carolyn Beggsuch [2]. These include:
In addition to building the ITP Cloud Platform, User Documentation in the form of
YouTube video tutorials and GitHub ReadMe Docs, will be made available.
Some assumptions being made are that the ITP Cloud Platform will not in its initial
stage be a fully-fledged Cloud Platform with all the services that a standard Cloud
Provider may offer. Instead, it starts out as a Shared Web Hosting provider, that
does not yet have Nameservers to be used to link stand-alone domain names to
websites hosted on the Platform. On the other hand, some critical dependencies
that the ITP Cloud Platform has are as follows:
As earlier mentioned, the ITP Cloud Platform has two main subsystems, which are
the ITP Core and the ITP Engine. Since end users will mainly interact with the
Platform via ITP Core, only it, will require a user interface. At the time of writing this
document, no user interface designs were present. The user interface will be based
on an existing HTML5, and Bootstrap 5 dashboard template. Due to the fact that
8
Bootstrap 5 will be used for the user interface design and implementation, all style
guidelines designated for this project will be inherited from the Bootstrap 5
specification. This specification defines a standard set of colours, sizing, spacing and
layout to be applied to the user interface.
Dialogs
Inevitably, as the user interacts with the Platform, errors will be expected. Such
errors will be displayed to the end users via popup boxes powered by sweetalert2
(https://sweetalert2.github.io/). Not only will errors be displayed using the
sweetalert2 library, but also success and info messages. All in all, the error, success
and info messages will have a generally polite tone, and communicate to the end
user what exactly is happening in an unambiguous way. An example of a SweetAlert
is shown below in Figure 2
In addition, Bootstrap 5 Modals will also be used for constructing dialogs and
prompting the user for additional information.
Navigation
The UI dashboard, as earlier mentioned will be based on an existing HTML5 and
Bootstrap 5 template. On this dashboard, a left-aside kind of navigation will be
present on all pages. The navigation bar will have links to the main sections of the
Platform. These sections will correspond to the main functional requirements as
defined in section 4 of this document. Besides that, breadcrumbs will also be
present on all pages. Breadcrumbs are a navigational aid that allows users to keep
track of their current location on a website or interface. A breadcrumb trail displays
the page a user is currently on and its relation to the pages they visited before it, or
the hierarchy of higher-level parent pages above the current page.
Other UI Components
As for the rest of the UI components to be used on the dashboard, the author will
either reuse existing Bootstrap 5 Components or create custom ones to fit a use
case.
The ITP Cloud Servers and other Clients will primarily use the following hardware
interfaces:
9
1. Ethernet Interfaces
Ethernet interfaces are fundamental for connecting servers to local area
networks (LANs) and the wider internet. Gigabit Ethernet, 10 Gigabit
Ethernet, and 25/40/100 Gigabit Ethernet interfaces will be suitable for the
ITP Cloud Platform.
2. USB Ports
USB ports on servers are used for connecting peripherals like keyboards,
mice, external drives, and other devices for management and maintenance
purposes.
3. VGA/DVI/HDMI Ports
These video interfaces are used to connect monitors for server
management, configuration, and troubleshooting. Many servers offer
remote management through these interfaces.
6. Power Connectors
Servers require various power connectors, such as standard power cables,
redundant power supplies, and power distribution units (PDUs), to ensure
continuous operation.
The ITP Cloud Platform will interact with a database management system (DBMS) -
MySQL Server Community Edition or MariaDB, where all user and system data will
be stored. The communication between the Cloud Platform and MySQL Server will
go through the standard port (3306) and using the IP Address of the machine where
they will both operate (localhost). The Cloud Platform will run on top of Ubuntu
Server 22.04 LTS.
Part of the Cloud Platform (ITP Core) will be written using CodeIgniter 4 (a PHP
framework). CodeIgniter 4 is a lightweight PHP framework for building websites
using the Model View Controller design principle. CodeIgniter 4 can retrieved and
scaffolded using Composer version 2. Composer will also be needed to manage all
PHP dependencies that will be used by and within the project.
10
ITP Core will communicate with the ITP Engine using the HTTP protocol and the
RESTful Service Oriented Architecture. RESTful Service-Oriented Architecture
(SOA) is an architectural approach for designing and building distributed software
systems and Cloud Platforms that use the principles of Representational State
Transfer (REST) to enable communication and interaction between different
components or services. It combines the concepts of SOA with the REST
architectural style, which is often associated with web services and HTTP.
RESTful architecture is a valuable design choice when building a cloud platform, as
it provides a straightforward and scalable way to interact with services and
resources in a cloud environment. Here's how the RESTful architecture will be used
in the context of building the ITP Cloud Platform:
• Resource Modelling
In our cloud platform, various resources need to be managed, such as
databases, websites and storage. Each of these resources will be modelled
as RESTful resources with their own unique URIs.
• HTTP Methods
Different HTTP methods can be used to perform operations on these
resources. For example:
o GET: Retrieve information about a resource (e.g., status,
configuration).
o POST: Create a new resource (e.g., provision a new database).
o PUT: Update the state or configuration of a resource (e.g., modify
firewall rules).
o DELETE: Remove a resource (e.g., delete a website).
The ITP Cloud Platform will use a wide range of data communication protocols.
These include: HTTP, SSH, FTP, SMTP, and Web Sockets. For each of these data
communication protocols, the secure versions of each will be preferred over the
standard versions. The primary approach that end-users will use to interact with the
Cloud Platform is the web browser. Thus, the HTTP protocol will be used heavily.
The authentication aspect of the Cloud Platform (ITP Core) will require email
verification; therefore, ITP Core will consequently have to interact with a mail server
to send out emails to end users. The preferred data communication protocol to be
used will be the Simple Mail Transfer Protocol (SMTP).
11
ITP Core and the ITP Engine will interact with each other using the HTTP protocol,
and more specifically using the RESTful Service Oriented Architecture. As a result,
the JavaScript Object Notation (JSON) standard will be used as a primary way of
formatting the data to be exchanged between the subsystems. In addition, ITP Core
will communicate within itself, that is, the frontend JavaScript code with the
backend PHP code. This communication will also use the RESTful Architecture from
time to time.
End users (the developers) will also be able to upload their files directly to the
server using the File Transfer Protocol. They will also be given access to a controlled
Secure Shell (SSH) account. Such an account will allow for secure communication
and remote access to the ITP Cloud servers over an unsecured network, such as the
internet. SSH provides encrypted and secure connections, making it a fundamental
tool in system administration, file transfers, and secure communication between
devices.
Ultimately, due to the sensitive nature of the data being exchanged, it will be
imperative to enforce Secure versions of the data communication protocols being
used. SSL and TLS certificates will have to be initiated, verified and issued, to ensure
that data exchange is secure and encrypted.
4. System Features
The functional requirements to follow will be grouped based on the subsystems making
up the ITP Cloud Platform. Each system feature will be preceded by a use case diagram
describing the actions that the actors will be able to perform with regard to the
subsystem. In addition, primary and secondary actors will be identified, along with the
specific actions they will be allowed to perform.
ITP Core is the main website and web dashboard component of the ITP Cloud
Platform. A number of features have been made available to end users. These are
described next using a use case diagram.
13
Actors
The functional requirements will be described based on the category to which the
requirement belongs.
A. Authentication
Students will be able to:
i. Create an account using their details
ii. Activate their newly created account using email verification
iii. Log into their account
iv. Log out from their account
v. Be verified and approved or rejected
B. Resource Management: Databases
Students will be able to:
i. Create a database
ii. Create a database user
iii. View the details of a selected database
iv. View the details of a selected database user
v. Delete a database
vi. Delete a database user
vii. Access phpMyAdmin
The system will also allow the moderators (lecturers) to perform the following
functions.
A. User and Content Management
i. Log into the system
ii. Log out from their account
iii. Verify pending student account registrations
14
ITP Engine is the actual ITP Cloud Platform manager. It is responsible for all resource
management and allocation activities. It has one primary actor, the ITP Core
subsystem. Effectively, all user requirements prescribed for the ITP Core, are
actually implemented by the ITP Engine. A number of features have been made
available to ITP Core and these correspond closely to those described under ITP
Core. The use case diagram to follow highlights the main functional requirements
ITP Engine offers.
15
Actors
a. Primary Actors: ITP Core
b. Secondary Actors: MariaDB, Linux OS, MongoDB and Nginx
A. Authentication
The ITP Core subsystem will be able to:
i. Authenticate using ITP Secure Session
B. Resource Management: Databases
The ITP Core subsystem will be able to:
i. Create a database
ii. Create a database user
iii. Delete a database
iv. Delete a database user
C. Resource Management: Websites
The ITP Core subsystem will be able to:
i. Create a website instance
ii. Edit an existing website instance’s configuration
iii. Delete a website instance
Safety requirements are crucial for ensuring the security and well-being of users,
data, and the system itself. Since the cloud platform being developed is a sandbox
for students to enhance their skills, some form of data protection will be
implemented. However, the majority of student projects deployed on the platform
will have to be secured by the students themselves. On the other hand, the cloud
platform is expected to ensure that user data relative to it is secured. This will
involve data encryption and implementing authentication and authorization
mechanisms throughout the system. In case data loss does occur, all system users
will be notified and instructed to change their authentication details. Other than
that, a detailed report of the breach will be written and shared. This will add to the
learning process.
16
Other security considerations involve not saving end user credentials to provisioned
resources like databases accounts, ftp accounts, etc., on the any storage form. This
includes files, and databases. The end users need to save the credentials when they
get displayed to them. After this point, the system will not allow them to see their
password. However, a provision will be availed to reset the password in case they
forget theirs.
Authorization on the platform will be facilitated through the use Role Based Access
Control and Linux Operating System Permissions. At specified intervals, permission
audits will be carried out to ensure that all systems users have access to the correct
resources.
Usually, when talking about data security, three security objectives are addressed:
confidentiality, integrity, and availability:
2. Integrity means that the data has not been altered or destroyed, which can
be done accidentally (e.g., transmission errors) or with malicious intent (e.g.,
sabotage). Integrity more specifically is expected to be implemented on a
database level by using transactions.
Availability
ITP Cloud Platform will be available 24/7 with a fully functional end user support
team that will respond to queries when they can. Also, a group of volunteers, the
system maintenance team, will be responsible for making sure the system is
working properly.
Interoperability and Portability
The ITP Cloud Platform is intended to be portable and interoperable with any
standard Linux Operating System Distribution. If modifications are needed, these
are minor, such as, with regards to the Linux Terminal Commands. Other hand that,
as long a standard set of dependencies is installed as prescribed by the installation
guide, everything should work right off the back.
17
Testability
Software testability indicates how well a software-driven system allows Software
Testing professionals to conduct tests in line with predefined criteria. This attribute
also assesses the ease with which Software Quality Assurance engineers can
develop test criteria for a said system and its various components. Engineers can
assess the testability of a system by using various techniques such as encapsulation,
interfaces, patterns, low coupling, and more. All of the aforementioned is expected
to be achieved with reference to the ITP Cloud Platform.
Usability
Every software-driven system is designed for ease of use to accomplish certain tasks
and the ITP Cloud Platform is not an exception. The system is purposely designed
to make website deployment and management very easy for students. Students can
easily get started on the ITP Cloud Platform. Besides all the above, the user
interface will be designed in an intuitive way so that users easily navigate the
website and access various resources and administer various tasks.
In addition, setting up a custom instance of the ITP Cloud Platform on the
Virtualized environment will equally made easy. This will be aided through the
provision of comprehensive and easy to use Installation Instructions or
Documentation. Additionally, user training will be provided in the form of YouTube
video tutorials.
Consistency and Integrity
Long operations such as, Database Operations and Linux Terminal Operations, will
need to be ATOMIC. This means that they must execute to completion or not at all.
And each operation should leave the System in consistent state.
6. Domain Requirements
To be determined
18
Appendix A: Glossary
Term Definition
ITP Industrial Training Platform. This is the name of the system being
developed.
Customers The everyday person who seeks to purchase a product for his house
or a flight ticket to go on a holiday.
Students Refer to the people who will deploy and manage their website
projects on the Cloud Platform
System The site manager and webmaster. Mainly responsible for managing
Administrator students and all Cloud Resources.
Apache HTTP Web Software that receives and processes incoming HTTP requests
Server
IP Internet Protocol
OS Operating System
1. Domain Requirements