\documentclass[12pt,psfig]{article}
\usepackage{psfig}
\begin{document}
\baselineskip 24pt
\thispagestyle{empty}
\vspace{1in}
\begin{center}
\vspace{3cm}
{\large \bf Complaint Registartion and Tracking }\\
{\large \bf Database Management System}\\
\vspace{1.2cm}
{\large \bf System Requirements Specification}\\
\vspace{0.4cm}
\vspace{0.3cm}
for\\
{\bf DBIS Course Project}\\
\vspace{0.3cm}
by\\
\vspace{0.3cm}
{\bf Gavaskar G (99005040)}\\
{\bf Pravin Paratey (99005009)}\\
{\bf Varun Katta (99005038)}\\
\vspace{0.19in}{under the guidance of}\\
\vspace{0.07in}{\bf Professor S.Sudarshan}\\
\vspace{0.37in}
\vspace{0.65in}
{\large Department of Computer Science and Engineering}\\
{\large Indian Institute of Technology Bombay}\\
{\large September 2001}\\
\end{center}


\newpage
\section{Introduction}

\subsection{Overall Description}

This project aims to develop a generic system to register and track the resolution
status of a variety of complaints and to generate reports summarizing performance
at difference levels.

A central database allows the complainant to lodge new complaints and check
their resoution status, allows the supervisor to assign workers/company to resolve
complaints and allows the worker/company to view their assignments. All this
can be done on a real time basis.

This project hopes to achieve efficiency by keeping a central database and elimination
of middle layers.


\subsection{Definitions}

\begin{enumerate}
\item Task : the process of resolution of a complaint.
\end{enumerate}

\subsection{References}

Database Systems Concepts by Abraham Silberschatz, Henry F. Korth and S. Sudarshan.


\subsection{Overview of Developer's Responsibilities}

We,the developers have the following responsibilities:

\begin{enumerate}
\item The complete software shall be developed by us and any further updates to the
software can be done by any person/institution after seeking permission from
us.
\item The software shall be designed to install on any system that follows the requirements
specified in section 5.
\item The software shall be extensible but we do not take the responsibility of extending
it.
\item A help facility shall be provided.
\end{enumerate}

\pagebreak

\section{General Description}


\subsection{Product Perspective}

The following interfaces will be provided:

\begin{enumerate}
\item \textbf{Register Interface} to provide logins for: 

\begin{enumerate}
\item New users
\item New workers
\end{enumerate}
\item \textbf{Login Interface} to login authorized 

\begin{enumerate}
\item users
\item workers
\item supervisors
\item analysts
\item administrator
\end{enumerate}
\item \textbf{Users Personal Page} provides a choice between registering new complaints, viewing
status of registered complaints, give his satisfaction rating and feedback.
\item \textbf{Complaint Registration Interface} for authorized users to register complaints.
\item \textbf{Supervisor Interface} allows the supervisor to view pending tasks, assign tasks
and mark completion of tasks.
\item \textbf{Worker Assignment Interface} allows the Supervisor to assign worker(s) to 
a task. 
\item \textbf{Workers Personal Page} allows a worker to view the details of the tasks assigned
to him.
\item \textbf{Analysts Personal page} enables the analyst to submit predefined or new SQL queries
to generate various types of reports and summaries.
\item \textbf{Administrators Personal Page} allows the administrator to add or delete supervisors
and analysts, remove workers and users, and to modify the types of complaints.
\end{enumerate}

\subsection{Product Functions Overview}

The following functions shall be performed:

\begin{enumerate}
\item Registration of new users and workers.
\item Login and authentication of users ,workers,analysts,supervisors,administrators.
\item Registration of complaints.
\item Showing status of complaints.
\item Getting feedback from users.
\item Assigning workers to a task.
\item Marking completion of a task.
\item Showing details of tasks of a worker.
\item Generating reports.
\item Adding and deleting supervisors/analysts.
\item Removing users/workers.
\item Modifying the types of complaints.
\end{enumerate}

\subsection{User Characteristics}

The database consists of the following types of users:

\begin{enumerate}
\item \textbf{A Normal User} can

\begin{enumerate}
\item register complaints.
\item check the resolution status of his complaints.
\item give satisfaction rating and feedback.
\end{enumerate}
\item \textbf{A Worker} can view the tasks assigned to him.
\item \textbf{A Supervisor} can

\begin{enumerate}
\item view pending tasks.
\item assign tasks to workers.
\item mark tasks as completed.
\end{enumerate}
\item \textbf{An Analyst} can generate various types of reports and summaries by selecting from a set of options(for regular reports) or by submitting SQL queries(for specialized reports).
\item \textbf{An Administrator} can

\begin{enumerate}
\item add or delete supervisors and analysts.
\item remove users and workers from the database.
\item modify the types of complaints.
\end{enumerate}
\end{enumerate}
The training required for

\begin{enumerate}
\item \textbf{Normal User/Worker/Supervisor} - No special training is required. Only exposure
to a web browser is required.
\item \textbf{Analysts/Administrator} - Should have knowledge of SQL.
\end{enumerate}

\subsection{General Constraints}

This project is to be completed including coding,testing and loading of the
database, by Nov 16, 2001.A prototype demo is due on Nov 2, 2001.

\pagebreak
\section{Information Description}


\subsection{Entities and Relationships}
\subsubsection{Entities}
\begin{enumerate}
\item{User}
\item{Complaint}
\item{Worker}
\item{Type}
\end{enumerate}

\subsubsection{Relationships}
\begin{enumerate}
\item{register}
\item{resolve}
\item{complaint\_type}
\item{worker\_type}
\end{enumerate}

\begin{figure}[p] 
\centerline{\psfig{figure=user1.eps,width=16cm,angle=0}}
\caption{E-R diagram of User entity}
\end{figure}
\begin{figure}[p] 
\centerline{\psfig{figure=complaint1.eps,width=16cm,angle=0}}
\caption{E-R diagram of Complaint entity}
\end{figure}
\begin{figure}[p] 
\centerline{\psfig{figure=worker.eps,width=16cm,angle=0}}
\caption{E-R diagram of Worker entity}
\end{figure}
\begin{figure}[p] 
\centerline{\psfig{figure=type.eps,width=12cm,angle=0}}
\caption{E-R diagram of Type entity}
\end{figure}
\begin{figure}[p] 
\centerline{\psfig{figure=er1.eps,width=7cm,angle=0}}
\caption{E-R diagram}
\end{figure}



\subsection{Data Dictionary}
\vspace{0.3cm}

\subsubsection{User}
\vspace{0.3cm}
{\centering \begin{tabular}{|c|c|c|p{5cm}|}
\hline 
\bf{Attribute Name} & \bf{Attribute Type} & \bf{Constraint} & \bf{Description} \\ \hline \hline
user\_id&
char(20)&
primary key&
this is a unique identity assigned to each user\\
\hline 
name&
varchar(20)&
not null&
represents the name of the user\\
\hline 
job&
varchar(20)&
-&
represents the work of the user\\
\hline 
contact\_info&
varchar(50)&
long&
to stote the contact information of the user\\
\hline 
room\_no&
varchar(100)&
-&
to store the room no of the user\\
\hline 
building&
varchar(20)&
-&
to store the building of the user.\\
\hline 
\end{tabular}\par}
\vspace{1cm}

This entity stores all the information about an user and all the relevant information associated with him.

\subsubsection{Complaint}
\vspace{0.3cm}
{\centering \begin{tabular}{|c|c|c|p{5cm}|}
\hline 
\bf{Attribute Name} & \bf{Attribute Type} & \bf{Constraint} & \bf{Description} \\ \hline \hline
complaint\_id&
integer&
primary key&
contains the complaint indentity number which is unique\\
\hline 
title&
varchar(100)&
- &
contains the title of the complaint \\
\hline 
description&
long&
not null &
contains the description of the complaint \\
\hline 
status&
varchar(100)&
not null &
represents the status of the complaint\\
\hline 
start\_date&
date&
not null&
for the start date of the complaint\\
\hline 
date\_lodged&
date&
not null&
for the start date of the complaint\\
\hline 
end\_date&
date&
not null&
represents the finish date of the complaint\\
\hline 
feedback &
varchar(200)&
-&
contains the feed back of the user regarding the work done\\
\hline 
location &
varchar(200)&
not null&
contains the location of complaint\\
\hline 
rating &
integer&
-&
rating of the user regarding satisfaction on the work done\\
\hline 
\end{tabular}\par}
\vspace{1cm}

This entity stores all the relevant information of a particular complaint.


\subsubsection{Worker}
\vspace{0.3cm}
{\centering \begin{tabular}{|c|c|c|p{5cm}|}
\hline 
\bf{Attribute Name} & \bf{Attribute Type} & \bf{Constraint} & \bf{Description} \\ \hline \hline
worker\_id&
char(20)&
primary key&
this is a unique identity assigned to each worker\\
\hline 
name&
varchar(50)&
not null&
represents the name of the worker\\
\hline 
designation&
varchar(20)&
-&
represents the designation of the worker\\
\hline 
company & varchar(40) & - & represnts the company that the worker works for\\ \hline 
contact\_info&
varchar(50)&
not null&
to stote the contact information of the worker\\
\hline 
room\_no&
varchar(50)&
-&
to store the room no of the worker\\
\hline 
building&
varchar(50)&
-&
to store the building of the worker.\\
\hline 
\end{tabular}\par}
\vspace{1cm}


\subsubsection{Supervisor}
\vspace{0.3cm}

{\centering \begin{tabular}{|c|c|c|p{5cm}|}
\hline 
\bf{Attribute Name} & \bf{Attribute Type} & \bf{Constraint} & \bf{Description} \\ \hline \hline
supervisor\_id&
char(20)&
primary key&
this is a unique identity assigned to each supervisor\\
\hline 
name&
varchar(50)&
not null&
represents the name of the supervisor\\
\hline 
contact\_info&
varchar(50)&
not null&
to stote the contact information of the supervisor\\
\hline 
room\_no&
varchar(50)&
-&
to store the room no of the supervisor\\
\hline 
building&
varchar(50)&
-&
to store the building of the supervisor\\
\hline 
\end{tabular}\par}
\vspace{1cm}

\subsubsection{Type}
\vspace{0.3cm}
{\centering
\begin{tabular}{|c|c|p{2.3cm}|p{5cm}|} \hline
\bf{Attribute Name} & \bf{Attribute Type} & \bf{Constraint} & \bf{Description} \\ \hline \hline
worker\_id &
char(20) &
foreign key refernces Worker&
represents a unique user\\
\hline 
type\_id&
char(20) &
foreign key references Type&
represents a unique worker\\
\hline 
\end{tabular}
\par}
\vspace{1cm}


\subsubsection{Register}
\vspace{0.3cm}
{\centering \begin{tabular}{|c|c|p{2.3cm}|p{5cm}|}
\hline 
\bf{Attribute Name} & \bf{Attribute Type} & \bf{Constraint} & \bf{Description} \\ \hline \hline
user\_id&
char(20)&
foreign key references User &
represents a unique user\\
\hline 
complaint\_id&
integer&
foreign key references Complaint&
represents a unique complaint identity number \\
\hline 
\end{tabular}\par}
\vspace{1cm}

This relationship represents the relationship between the entities User and Complaint.


\subsubsection{Resolve}
\vspace{0.3cm}
{\centering
\begin{tabular}{|c|c|p{2.3cm}|p{5cm}|} \hline
\bf{Attribute Name} & \bf{Attribute Type} & \bf{Constraint} & \bf{Description} \\ \hline \hline
worker\_id&
char(20) &
foreign key references Worker&
represents a unique worker \\
\hline 
complaint\_id&
integer &
foreign key references Complaint&
represents a unique complaint identity number \\
\hline 
\end{tabular}
\par}
\vspace{1cm}
This relationship represents the relationship between the entities Worker and Complaint.

\subsubsection{Works\_for}
\vspace{0.3cm}
{\centering
\begin{tabular}{|c|c|p{2.3cm}|p{5cm}|} \hline
\bf{Attribute Name} & \bf{Attribute Type} & \bf{Constraint} & \bf{Description} \\ \hline \hline
worker\_id&
char(20) &
foreign key references Worker&
represents a unique worker \\
\hline 
supervisor\_id&
char(20) &
foreign key references Supervisor&
represents a unique Supervisor\\
\hline 
\end{tabular}
\par}
\vspace{1cm}
This relationship represents the relationship between the entities Worker and Supervisor.

\subsubsection{Complaint\_type}
\vspace{0.3cm}
{\centering
\begin{tabular}{|c|c|p{2.3cm}|p{5cm}|} \hline
\bf{Attribute Name} & \bf{Attribute Type} & \bf{Constraint} & \bf{Description} \\ \hline \hline
type\_id&
char(20) &
foreign key references Type&
represents a unique complaint type\\
\hline 
complaint\_id&
integer &
foreign key references Complaint&
represents a unique complaint identity number \\
\hline 
\end{tabular}
\par}
\vspace{1cm}

This relationship represents the realtionship between the entities Type and Complaint.

\subsubsection{Worker\_type}
\vspace{0.3cm}
{\centering
\begin{tabular}{|c|c|p{2.3cm}|p{5cm}|} \hline
\bf{Attribute Name} & \bf{Attribute Type} & \bf{Constraint} & \bf{Description} \\ \hline \hline
type\_id&
char(20) &
foreign key references Type&
represents a unique worker type \\
\hline 
worker\_id&
integer &
foreign key references Worker&
represents a unique worker\\
\hline 
\end{tabular}
\par}
\vspace{1cm}
This relationship represents the realtionship between the entities Type and Worker.

\subsubsection{Login}
\vspace{0.3cm}
{\centering
\begin{tabular}{|c|c|p{2.3cm}|p{5cm}|} \hline
\bf{Attribute Name} & \bf{Attribute Type} & \bf{Constraint} & \bf{Description} \\ \hline \hline
name&
char(20) &
primary key&
represents a unique user \\
\hline 
passwd&
varchar(30) &
not null&
represents the passwd of the user \\
\hline 
login\_type&
char(15)&
not null&
references a unique type in Type\\
\hline 
\end{tabular}
\par}
\vspace{1cm}
This stores the login details of all users.



\newpage
\subsection{Data Flow}
A user makes a login (or registers himself and then logs in if he is not a registered user) and fills in the complaint form.Once he submits the form the data goes directly into the central data base.The validity of those complaints will later be checked by the supervisor.

Apart from this,a worker can alter specific attributes of the entity Complaint.Even in this case the data directly goes into the central data base without any intermediate intervention.
 

\pagebreak
\section{Functional Requirements}

The interface is web driven. A main screen with options to register or login
is presented to all users. Each type of user has a customized personal page.
A brief overview of is given below:


\subsection{Normal User }

\begin{enumerate}
\item Initially this user is presented with a screen requiring him to either login
or to register as a new user. The latter is achieved by using html forms and
servlets.
\item After logging in, the user is displayed a form with all the pending complaints
and their status. Each resolved complaint which has not yet been rated has an
option to rate it and/or provide feedback.
\item If the user wishes to register a complaint, he is presented with a form which
he is supposed to fill.
\end{enumerate}

\subsection{Worker}

This type of user is presented a page requiring him to login by presenting a
unique Worker ID. On doing this, he can view a list of tasks assigned to him.


\subsection{Supervisor}

On logging in, he is presented with a page containing a list of new complaints.
He can then assign workers to complaints by examining their authenticity.


\subsection{Analysts}

On logging in,this type of user is presented with option to select between a
set of queries and a text area to write new queries which allow him to generate
various reports.


\subsection{Administrator}

After logging in, he is presented with a page allowing him to add/delete supervisors
and analysts, remove users and workers and modify complaint types. Apart from
this, he is presented with a text area which allows him to execute any SQL queries.

\pagebreak
\section{External Interface Requirements}


\subsection{User Interfaces}

All interfaces are web based.


\subsection{Hardware Interfaces}

No special Hardware Required.


\subsection{Software Interfaces}


\subsubsection{Software Platforms}

\begin{enumerate}
\item SQL{*}Plus Oracle8 Enterprise Edition 8.0.4.0.0 
\end{enumerate}

\subsubsection{Software Packages}

\begin{enumerate}
\item Java Development Kit (JDK 1.2 or above).
\item Java Servlet Development Kit (JSDK 2.0).
\item Oracle Thin JDBC Driver.
\end{enumerate}

\pagebreak

\section{Performance Requirements}

\subsection{Capacity Requirements}
\subsubsection{Estimated number of Users}
\vspace{0.3cm}
{\centering
\begin{tabular}{|c|c|} \hline
\bf{User Type} & \bf{Number of Users} \\ \hline \hline
Administrator&
5\\
\hline 
Users&
500-1000\\
\hline 
Workers&
200-300\\
\hline
Analysts&
20-30\\
\hline
Supervisors&
20-50\\
\hline   
\end{tabular}
\par}
\vspace{1cm}

\subsection{Throughput}
\vspace{0.3cm}
{\centering
\begin{tabular}{|c|c|} \hline
\bf{User Type} & \bf{Access Frequency} \\ \hline \hline
Administrator&
1/week\\
\hline 
Users&
50-60/hour\\
\hline 
Workers&
20-30/hour\\
\hline
Analysts&
5-10/week\\
\hline
Supervisors&
10-30/day\\
\hline   
\end{tabular}
\par}
\vspace{1cm}


\section{Design Constraints}


\subsection{Standards Compliance}

Not applicable.


\subsection{Hardware Limitations}

Not applicable.


\section{Validation Criteria}

We shall simulate a real process of complaint registration and tracking.We shall
create users,workers,supervisors,analysts, adminstrator and test the various
functions of each type of user by creating sample complaints.

\end{document}















