SRS
SRS
This is a system for oriental weavers (not official) that covers and facilitate
financials, transactions, Bills, Accounts, Carpets, Orders and CRM processes
that happen in this organization. To achieve more income and reduce time
by recording all the details of the customer that occurs daily within the
organization and by making a well-managed statistics about the customer
(the most wanted carpet type, color, etc..) also by recording every single
transaction occur in the organization, which will guarantee less time and
more efficiency in the work. This document addresses the head of the
administrative system and the one responsible for making decisions in the
company.
1
1.3 Overview
As it is shown in the next Figure (1)
2
reason , so these things will be saved in order to find for the specific customer
the perfect employee and that will also save time.
2 General Description
2.1 Product Functions
The system mainly can be classified into
2- Accounts: the system provide to both the employees and the client
accounts in order to make them do their functions easier.
1- Manage carpets: every single detail about the types, numbers, the size and
the color of the carpet will be recorded in the system, also check if it is
available or not
2- Orders: This will facilitate the purchase process where customers will
have the ability to buy any carpet from the website and chose the method of
payment or even to purchase from the branch offline.
3
1- Bitrix24
- This system has the capability to create papers, chats, calls and create tasks
that facilitate the organization functions, also, a customer relationship
management marketing that can manage all the relations with customers, the
only problem they had that they don’t record all the transactions occur in the
system.
4
2- LevelEleven
- This system is focusing on the design and the reports for each KPI metrics
for their team members; also, they have opportunities, accounts, dashboard,
contacts functions. All of these with a sample design and amazing colors. The
only gap they have in the system is they don’t have a CRM system.
- Also, our system will record the daily transaction that occur within the
company wish is not provided in Bitrix24 system.
Normal Employee: This type of users has the ability to handle simple
operations in the company so mainly he will do only the following functions:
add or remove transaction, check the type of carpet the user prefers.
Therefore, it does not need experience in dealing with the system and does
not need a specific gender
Manager: The Manager can handle large operations in the company such as:
add, edit and remove carpets, add and edit transactions, add and edit
employee info, also, add, edit and view customers characteristics and history
5
with the company and his purchases. Therefore, it need experience in dealing
with the system.
Co-Manager: Which can handle the same operations of the Manager but he is
responsible to verify the bills.
Customer: This is a normal type of user who deals with the routine
procedures of any company such as: register, login, do an order, select carpet
and pay. Only need to know how to deal with methods of verifying identity
and submitting info, and also electronic purchases methods.
Normal Employee: The biggest problem was working with a large amount
of paper in order to record a transaction with a customer in addition to the
difficulty of knowing what the customer wants because of the lack of
knowledge of the previous purchases of the client.
CO-Manager : The Co-Manager also has the same problem of the normal
employee wish was working with a large amount of paper in order to record
a transaction with a customer or within the organization but this time the
problem is bigger because the co manger is also the supervisor of the normal
employee so the amount of data is bigger.
Customer: The customer problem differs than the previous problem, the
problem was that the customer finds it difficult to find his product, unless he
goes to the branch himself.
6
2.5 User Objectives
The user objectives can be classified into two groups:
Client objective: The customer will be able to order the product that suits him
easily without going to the branch , and in case of going to the branch, the
system will provide the purchase history of the customer and the product he
prefers, which will save the time of the customer and the employee who deal
with him.
Company objective: The system will do reduce much time and costs related to
this organization. For example: This system will help reduce human error and
reduce the amount of paperwork, and also will help in setting and
determining each customer and the type of carpet he prefers, and thus, the
ease of sending marketing messages via mobile to specific customers,
depending on the type of carpet they prefer, and also, to a specific location
depending on the customer’s address they submitted.
The client: The customer may face some problems while logging in or paying
for the purchases as a result of pressure on the system or problems in the
network.
The company staff: The staff may face some difficulties during the
registration, recording of daily transactions, in the case of adding a new
customer or adding a new type of carpet causing a pressure on the system or
weakness in the network.
7
3 Functional Requirements
Function
Function 3.1 (3.1)
name AddnewTransaction(Bill B)
Description 1- Check with an if statement if the employee has an
account on the system and then return true
2- Save the transaction on the system by inserting it
in the database
3- After doing the previous step check if the records
are saved in the database or not by displaying a
message Box in the insertion to make sure.
critically This function will help in order to create a well-
managed report that that company might use.
Input Bill info (Order obj, Bill Date, Net Amount, discounts(
Output -Stored transactions in the database
-Bills
Technical issues - Error during submitting the transaction fields, like leave
an empty field.
- Error during recording transactions, due to Pressure on
the system at the same time.
- Database connection normal problems.
Risks - System Failures: The result of pressure on the system
due to the large number of daily transactions for the
company, the company must then have a fast backup
system for the system to work until the original system
returns to work.
Cost and schedule In order that the oriental weavers will use the system,
they will need a large server to hold these many
transactions, also, submitting a transaction does not
take more than 5 minutes.
Dependencies with This function can’t happen without that the employee
other requirements has an account (Function 3.2)
Pre-Condition -The database is connected truly
Post-Condition -The company transaction is recorded in both the
system and the database.
8
Function name (3.2) CreateAccount()
Description Take the info of the user that is registering and insert
it in the database with respect to the mandatory and
optional fields
Input - Client information’s (first name, last name,
username, password, address, phone, gender, email,
last visit, total paid, salesman name, favorite carpets)
- Employee information’s (name, address, phone, job
Type, password)
output - Account on the system in order to do any function
critically This function is the most important one, without it the
user can’t access to the system.
Cost and schedule - The create account function doesn’t require any cost,
it would take only minutes.
Dependencies with other It does not depend on other function
requirements
Pre-Condition -The database is empty
-The user can’t use the system
Post-Condition The worker user will be able to manage and use the
functions of the system.
9
Function name (3.3) SearchCarpet(Carpets C)
Description - loop over a number of carpets and then search by
an if condition in the variables inside this C object,
for example: if(C.getcarpetcolor()==”blue”)
{return C;}
- If the quantity of any carpet == 0, then change the
Boolean variable isExist from true to false and then
display messageBox to the user and worker that
this carpet is not exist;
Input - Carpet characteristic
output - Carpet info, quantity, characteristic(s)
critically This function will make the employee always
updated with the carpet information and can find
a specific one easily if a customer asked for.
Technical issues - Database connection problem
Risks Improper Use of Data and inserting
Cost and schedule This function doesn’t need a cost and doesn’t need
much time to proceed, depending on the quantity
of carpets.
Dependencies with other This function can’t happen without that the
requirements employee has an account (Function 3.2)
Pre-Condition -The warehouse was empty or fully loaded that
caused a fatal error
10
Function name (3.4) DoOrder(Order O)
Description - Start new carpet object and save its declarations
- Selection of payment methods will be saved as
string
- Add this transaction by its details to the database
- Display the bill
Input - Credit card Number
output - Bill
- The selected carpet.
critically This will facilitate the purchase process where
customers will have the ability to buy any carpet
from the website directly.
Technical issues - Error during the login process
- Error during the purchase process
Risks In case of online purchase, the system may face
hacking attempt.
Cost and schedule No cost for this function, only the cost will be paid
from the customer when he buys.
Dependencies with other The client can’t order online without having an
requirements account on the system (Function 3.2) and the system
must check the quantity of the carpet first and this
carpet is exist or not (Function 3.3)
Pre-Condition The shopping cart was empty
11
Function name (3.5) AddnewCustomer(Customer C)
Description - Pop up a form that contains text fields to be filled
with the customers’ info that the workers know
about it.
- Give a chance of editing or searching for these
existing customers’ info by inserting the phone
number and start searching in the database for this
client if he is already exist and then display editable
or viewing area.
Input - Client Info
- Worker Login
output - Customer information
12
Function name (3.6) AddnewEmployee(Employee E)
Description Take the Employee object as a parameter and use its
variables to declare the employee’s info by importing
these info through a text fields and then save it to the
database related to the employees.
Input - Employee info (for saving)
output - Employees info (for checking)
critically This function will help keep employees’ data
managed and saved to be easily checked if needed.
13
4 Interface Requirements
4.1 User Interfaces
4.1.1 GUI
14
15
16
4.1.2 CLI
4.1.3 API
4.1.4 Diagnostics or ROM
We will return the exception code with try and catch method, so, we will
return the exception code, and then we will know what to diagnose and debug
it.
5 Performance Requirements
Long memory = GC.GetTotalMemory (true);
The line code written above shows how much we use memory from our
program, which is equals to 187312 at our program load.
We will use any CPU (64bit and 32bit) as we will use C# by Visual Studio
Compiler which allows us to determine whether 64bit or 32bit our program
will depend on or both.
Also, we should do some tips to improve our performance, such as using for
loop instead of foreach because it was tested and shown that for loop is much
faster than foreach.
17
6 Design Constraints
Second: If any one hack the system and his goal to delete or damage database
system, there are a backup that store the database. We will back up the data by
using Redundant Array of Inexpensive Disks (RAID) as data storage technology;
there are many types of RAID but we will focus on RAID 5 that if a drive fails, we
still have access to all data, even while the failed drive is being replaced and the
storage controller rebuilds the data on the new drive. Additionally, we may use
RAID 6 in the future if our data is expanded to the same extent. Because RAID 6
18
covers asynchronous disk failure, but it costs and performs less like RAID 5, so,
In RAID 6 we discussed that if two drives fail, you still have access to all data,
even while the failed drives are being replaced. So, RAID 6 is more secure than
RAID 5 but with high price and less performance.
7.3 Reliability
Not Applicable.
7.4 Maintainability
Not Applicable.
7.5 Portability
The whole system should be able to work in any PC with any operating system
as it is related to the internet, and it will be coded by HTML, CSS, JS, PHP
connected to the localhost, while the CRM is coded by C# WinForms, so it only
works on Windows 7, 8, 8.1 or 10, so this need to work with C# and use visual
studio as a compiler is recommended.
19
7.6 Extensibility
In this part we will manage the database to avoid damage of the system if the
storage is going to full, in this section, we are going to back up our data that is
implemented in phpMyAdmin. The database is exposed to be damaged or
deleted by any future reason, so we need to export the the database usually by
the export method in phpMyAdmin which allows to save these database offline
in a hard disk. There are two methods for exporting, which are quick and Custom,
Quick are the default and Custom recovers all the possible options that will be
available as shown in the figure. Also, when we save the database in our disk, it
will be also backup using RAID technique as said in the "security".
7.7 Re-usability
The system is divided into components, which will be re-used to obtain
information to benefit data from it and re-prioritize it to the client, and also to
obtain this data for advertising.
Such as: The most carpet that was sold, that means that this carpet was liked by
the customers then the system will automatically will prefer this carpet to the
clients to increase the sales, the most customers that bought carpets, we can
make for them an offers to increase their quantity and that will increase the
sales, the calculation of the day salaries are help us to calculate the month
inventory and to broke down the target number and to calculate also the profits
of the year.
20
7.8 Application Affinity/Compatibility
Not Applicable.
7.9 Resource Utilization
Not Applicable.
7.10 Serviceability
Not Applicable.
7.11 others as appropriate
21
8 Preliminary Object-Oriented Domain Analysis
22
8.2 Class descriptions
List of Super Classes List of Subclasses
User Customer
Management Manager
CoManager
Employee
23
8.2.(1,2,3,4,5,6) CRC Cards
Description: The Parent class of the system which all sub classes will
be inherited from this class.
Responsibilities Collaborators
Attributes:
Email (string), ID (intgear), PhoneNo (string), Firstname (string),
Username (string), Password (string), Lastname (string)
Relationships:
A parent to 2 Classes, Management and Customer
24
Name: ID: 2 Type: Concrete
Management
Description: Class that contains the main functionalities of the
financial processes and customer relation management processes and
is the parent for Manager, Co-Manager and Employee classes.
Responsibilities Collaborators
Attributes:
FinancialProcess (object), Carpets (object), jobType (string), Customer (Object),
EntryTime (2D array of integer), LeaveTime (2D array of integer)
Relationships:
Generalization(a-kind-of):User
Aggregation(Part-of):FinacialProcess,Carpets,Customer
other Association: Bill
25
Name: Manager ID: 3 Type: Concrete
Responsibilities Collaborators
Attributes:
Employee (Object)
Relationships:
Generalization(a-kind-of):Management
Aggregation(Part-of):Employee
other Association: Customer
26
Name: ID: 4 Type: Concrete
CoManager
Description: An individual that authenticate the bills
Responsibilities Collaborators
Attributes:
No Attributes
Relationships:
Generalization(a-kind-of):Management
other Association: Bill
27
Name: Employee ID: 5 Type: Concrete
Description: An individual can add bills and use the customer relation
management functionalities
Responsibilities Collaborators
Attributes:
EmployeeRank (string), Rewards (array of string), Holidays (integer)
Relationships:
Generalization(a-kind-of):Managment
other Association: Employee (itself)
28
Name: ID: 6 Type: Concrete
FinancialProcess
Description: This classes manages the transactions done by the
Customers and controlled by the Workers
Responsibilities Collaborators
Attributes:
CustomerName (string), PayementType (string), Employee_name (string)
Relationships:
other Association: Bill
29
Name: Carpets ID: 7 Type: Concrete
Description: This class contains the carpets characteristics and all its
info
Responsibilities Collaborators
Attributes:
type (string), color (string), size (string), price (integer),
supplierName (string), Location (string), DateOfdeliver (string),
StillExist (boolen), ID (integer)
Relationships:
other Association: Carepts
30
Name: Customer ID: 8 Type: Concrete
Responsibilities Collaborators
1- Do an order - Order
2- Edit his account - Customer (itself)
3- Has the ability to verify the - Carpets
order or not
Attributes:
LastVisit (string), TotalPaid (integer), NoOfVisits (integer),
Gender (string), Address (string), prefer_communicate_way(array of string),
Carpets(Object), Salesman_name(string)
Relationships:
Generalization(a-kind-of):User
other Association: Order, Customer(itself), Carpets
31
Name: Order ID: 9 Type: Concrete
Responsibilities Collaborators
Attributes:
OrderID (integer), Carpets (object), Quantity (integer), Bill (Object)
Relationships:
Aggregation(Part-of): Carpets, Bill
32
Name: Bill ID: 10 Type: Concrete
Responsibilities Collaborators
Attributes:
BillDate (string), Discount (integer), NetAmount (integer), Billinvoice (integer)
Relationships:
None
33
8.2.7 Operations
8.2.8 Constraints:
9 Operational Scenarios
This section should describe a set of scenarios that illustrate, from the user’s
Initial assumption: A customer tries to make an online order he logs in into his
account through the system and choose the carpets that he like and make the
order.
Normal: The Customer searches for a specific color that he wants for the carpets
and then view the types of carpet based on the color he searched for, after that
he select the carpet size that he wants and adds it to the cart. Finally, when he
finishes shopping, he goes to the order menu and select online payment and then
he types his information and click do order after that a message pop up that
transaction is done successfully.
What can go wrong: The transaction was made successfully but the order was
not recorded to the system. Customer will not receive his order. Manger or Co-
Manager or Employee should check the transactions date and time and then ask
the customer what did he order to make a new bill.
34
Other activities: Order maybe made but not saved in the database due to lack of
connection.
The initial version of the project plan was taking about 2 – 4 months, and yes, we
started 2 months ago and today 13 May 2020 we finished. We start with the Use-
Case-Diagram then Class-Diagram then system overview then NonFunctional
Requirements then Functional Requirements then Sequence, State machine,
Activity Diagrams followed with the implemented code. Also, Class Diagram was
edited with every new move in any other task to be fully completed. Our program
doesn’t need much hardware requirements as it is code either in WEB or C# which
is mostly easily coded and executed in most of the PCs’ hardware. We used Visual
Studio Community as our software, but if we talked about the whole system, we
use Visual Studio Code for Web Coding.
35
11 Preliminary Budget Adjusted
The initial budget for this project was 11$ one time and 20$ per month and it
remains the same, also, the implementation part was totally free which C# coded
and it also still free as it was.
12 Appendices
36
12.2 Collected material
37
38
39
40
13 References
References
https://help.dreamhost.com/hc/en-us/articles/214395738-phpMyAdmin-
How-to-backup-or-export-a-database-or-table
https://support.microsoft.com/en-us/help/323434/how-to-establish-a-
striped-volume-with-parity-raid-5-in-windows-server
https://stackoverflow.com/questions/14032515/how-to-get-the-amount-
of-memory-used-by-an-application
https://www.c-sharpcorner.com/UploadFile/dacca2/5-tips-to-improve-
performance-of-C-Sharp-code/
https://stackoverflow.com/questions/33456472/requirements-for-
running-compiled-c-sharp-programs-exe
https://www.tecmint.com/secure-phpmyadmin-centos-ubuntu/
41