\chapter{System Requirements}

\thispagestyle{empty}
\label{ch:4}

\section{Introduction}
\label{sec:intro}
% Tambah sedikit intro di sini jika perlu

\section{Requirement Elicitation Techniques}
\label{sec:techniques}
Requirement elicitation refers to the search for details about the functions to be performed by the system and the limitations under which the system must operate. It is regarded as the process of obtaining data from stakeholders; in other words, it can be defined as the process that takes place once the data analyst has interacted with stakeholders to understand their requirements. The goal of requirement elicitation is to thoroughly identify the business needs, risks, and assumptions associated with any given project.

\section{System Requirements}
\label{sec:sr}

\subsection{Functional Requirement}
\label{sec:funcreq}
Functional requirements are product features that developers must implement to enable the users to achieve their goals. They define the basic system behavior under specific conditions.

\begin{itemize}
	\item The system must allow users to log into their account by entering their email and password.
	\item The system must allow users to log in with their Google accounts.
	\item The system must allow users to reset their password by clicking on "I forgot my password".
\end{itemize}

\subsection{Non-functional Requirement}
\label{sec:nonfuncreq}
Non-functional requirements (NFRs) describe the system’s operation capabilities and constraints. These outline how well the system will operate, including speed, security, and reliability.

\section{Requirement Analysis}
\label{sec:analysis}

\subsection{Use Case Diagram}
\label{sec:usecase}
Use-case diagrams provide a bird’s-eye view of the basic functionality of the business processes.



\subsection{Use Case Descriptions}
\label{sec:usecasedesc}

\begin{table}[h!]
	\renewcommand{\arraystretch}{1.3}
	\caption{Use Case 1: Make reservation}
	\centering
	\begin{tabularx}{\textwidth}{|l X X|}
		\toprule
		\textbf{Use Case Name:} & Make reservation & \textbf{ID:} UC1 \\
		\textbf{Importance Level:} & High & \\
		\midrule
		\textbf{Primary Actor:} & Customer & \textbf{Use Case Type:} Primary, Essential \\
		\midrule
		\multicolumn{3}{|l|}{\textbf{Stakeholder and Interests:}} \\
		\multicolumn{3}{|X|}{Customer - wants to reserve for available car. Staff - provide details.} \\
		\midrule
		\multicolumn{3}{|X|}{\textbf{Brief Description:} This use case describes how a customer can make a car reservation.} \\
		\midrule
		\multicolumn{3}{|p{\dimexpr\textwidth-2\tabcolsep}|}{\textbf{Normal Flow of Events:}
			\begin{enumerate}[nosep, leftmargin=1.5em]
				\item Customer login by entering the username and password.
				\item Customer views the details of available car.
				\item Customer selects the type of car.
				\item Customer makes reservation.
				\item Customer logout the system.
			\end{enumerate}
		} \\
		\midrule
		\multicolumn{3}{|X|}{\textbf{Alternate/Exceptional Flows:}} \\
		\multicolumn{3}{|X|}{1a. The username and password is invalid, customer must login again.} \\
		\bottomrule
	\end{tabularx}
	\label{Table:UC1}
\end{table}

\subsection{Activity Diagrams}
\label{sec:activity}
Activity diagrams provide a detailed graphical view of the underlying activities.



\subsection{Class Diagram}
\label{sec:class_diag} % Label ditukar supaya unik
A class diagram is a static model that shows the classes and their relationships.



\subsection{Sequence Diagrams}
\label{sec:sequence_diag} % Label ditukar supaya unik
Sequence diagrams illustrate the objects that participate in a use case and the messages passed between them over time.

\subsection{CRUD Matrix}
\label{sec:crud}
CRUD analysis uses a matrix to identify how objects collaborate (Create, Read, Update, Delete).