\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage[a4paper,width=150mm,top=25mm,bottom=25mm]{geometry}
\title{
{\includegraphics[width=4.5cm, height=3cm]{CSLogo.jpg}
\includegraphics[width=3cm, height=2.5cm]{MSALogo.jpg}}
\\
{Software requirement specification document for project ------------}
}
\author{Ahmed Mohamed,.... \\ Supervised by: Dr. ......}
\begin{document}
\maketitle
\section{Introduction}
\subsection{Purpose of this document}
Describes the purpose of the document, and the intended audience.
\subsection{ Scope of this document}
Describes the scope of this requirements definition effort. Introduces the requirements elicitation team, including users, customers, system engineers, and developers.
This section also details any constraints that were placed upon the requirements elicitation process, such as schedules, costs, or the software engineering environment used to develop requirements.
\subsection{Overview}
Provides a brief overview of the product defined as a result of the requirements elicitation process.
\subsection{ Business Context}
Provides an overview of the business organization sponsoring the development of this product. This overview should include the business's mission statement and its organizational objectives or goals.
\section{General Description}
\subsection{Product Functions}
Describes the general functionality of the product, which will be discussed in more detail below.
\subsection{Similar System Information}
Describes the relationship of this product with any other products. Specifies if this product is intended to be stand-alone, or else used as a component of a larger product. If the latter, this section discusses the relationship of this product to the larger product. This is how you can \cite{Rehm} a document.
\subsection{ User Characteristics}
Describes the features of the user community, including their expected expertise with software systems and the application domain.
\subsection{ User Problem Statement}
This section describes the essential problem(s) currently confronted by the user community.
\subsection{ User Objectives}
This section describes the set of objectives and requirements for the system from the user's perspective. It may include a "wish list" of desirable characteristics, along with more feasible solutions that are in line with the business objectives.
\subsection{ General Constraints}
Lists general constraints placed upon the design team, including speed requirements, industry protocols, hardware platforms, and so forth.
\section{Functional Requirements}
This section lists the functional requirements in ranked order. Functional requirements describes the possible effects of a software system, in other words, what the system must accomplish. Other kinds of requirements (such as interface requirements, performance requirements, or reliability requirements) describe how the system accomplishes its functional requirements see table \ref{tab:my-table}. Each functional requirement should be specified in a format similar to the following:
% Please add the following required packages to your document preamble:
% \usepackage{graphicx}
\begin{table}[]
\caption{Functional Requirement XYZ}
\label{tab:my-table}
\resizebox{\textwidth}{!}{%
\begin{tabular}{|l|l|}
\hline
Function Name & Short, imperative sentence stating highest ranked functional requirement. \\ \hline
Description & A full description of the requirement. \\ \hline
Critically & Describes how essential this requirement is to the overall system. \\ \hline
Technical issues & Describes any design or implementation issues involved in satisfying this requirement. \\ \hline
Cost and schedule & Describes the relative or absolute costs associated with this issue. \\ \hline
Risks & Describes the circumstances under which this requirement might not able to be satisfied, and what actions can be taken to reduce the probability of this occurrence. \\ \hline
Dependencies with other requirements & Describes interactions with other requirements. \\ \hline
Pre-Condition & The state of the system before the running of the function \\ \hline
Post-Condition & The state of the system after the run of the function \\ \hline
\end{tabular}%
}
\end{table}
\section{Interface Requirements}
This section describes how the software interfaces with other software products or users for input or output. Examples of such interfaces include library routines, token streams, shared memory, data streams, and so forth.
\subsection{User Interfaces}
Use some software for primitive plan of your project.
Describes how this product interfaces with the user.
\subsubsection {GUI}
Describes the graphical user interface if present. This section should include a set of screen dumps or mock-ups to illustrate user interface features.
If the system is menu-driven, a description of all menus and their components should be provided.
\subsubsection { CLI}
Describes the command-line interface if present. For each command, a description of all arguments and example values and invocations should be provided.
\subsubsection {API}
Describes the application programming interface, if present. For each public interface function, the name, arguments, return values, examples of invocation, and interactions with other functions should be provided.
\subsubsection {Diagnostics or ROM}
Describes how to obtain debugging information or other diagnostic data.
\subsection{Hardware Interfaces}
Describes interfaces to hardware devices.
\subsection{Communications Interfaces}
Describes network interfaces.
\subsection{Software Interfaces}
Describes any remaining software interfaces not included above.
\section{Performance Requirements}
Specifies speed and memory requirements.
\section{Design Constraints}
Specifies any constraints for the design team using this document.
\subsection{ Standards Compliance}
\subsection{ Hardware Limitations}
\subsection{ others as appropriate}
\section{Other non-functional attributes}
Specifies any other particular non-functional attributes required by the system. Examples are provided below.
\subsection {Security}
\subsection {Binary Compatibility}
\subsection {Reliability}
\subsection {Maintainability}
\subsection {Portability}
\subsection {Extensibility}
\subsection {Re-usability}
\subsection {Application Affinity/Compatibility}
\subsection {Resource Utilization}
\subsection {Serviceability}
\subsection {others as appropriate}
\section{Preliminary Object-Oriented Domain Analysis}
This section presents a list of the fundamental objects that must be modeled within the system to satisfy its requirements. The purpose is to provide an alternative, ''structural'' view on the requirements stated above and how they might be satisfied in the system. A primitive class diagram to be delivered.
\subsection{Inheritance Relationships}
This section should contain a set of graphs that illustrate the primary inheritance hierarchy (is-kind-of) for the system. For example:
\begin{figure}[tbh]
\centering
\includegraphics[width=0.7\linewidth]{./image}
\caption{Inheritance Relations}
\label{fig:image}
\end{figure}
\subsection{Class descriptions}
This section presents a more detailed description of each class identified during the OO Domain Analysis. For more details on the process giving rise to these descriptions, see Lecture 5.3: OO Domain Analysis and/or texts on object-oriented software development.
Each class description should conform to the following structure:
\subsubsection{ Class name}
Abstract or Concrete:
Indicates whether this class is abstract or concrete.
\subsubsection {List of Superclasses:}
Names all immediate superclasses.
\subsubsection {List of Subclasses:}
Names all immediate subclasses.
\subsubsection {Purpose: }
States the basic purpose of the class.
\subsubsection {Collaborations: }
Names each class with which this class must interact in order to accomplish its purpose, and how.
\subsubsection {Attributes: }
Lists each attribute (state variable) associated with each instance of this class, and indicates examples of possible values (or a range).
\subsubsection {Operations}:
Lists each operation that can be invoked upon instances of this class. For each operation, the arguments (and their type), the return value (and its type), and any side effects of the operation should be specified.
\subsubsection {Constraints:}
Lists any restrictions upon the general state or behavior of instances of this class.
\section{Operational Scenarios}
This section should describe a set of scenarios that illustrate, from the user's perspective, what will be experienced when utilizing the system under various situations.
In the article Inquiry-Based Requirements Analysis (IEEE Software, March 1994), scenarios are defined as follows:
In the broad sense, a scenario is simply a proposed specific use of the system. More specifically, a scenario is a description of one or more end-to-end transactions involving the required system and its environment. Scenarios can be documented in different ways, depending up on the level of detail needed. The simplest form is a use case, which consists merely of a short description with a number attached. More detailed forms are called scripts. These are usually represented as tables or diagrams and involved identifying an action and the agent (doer) of the action. For this reason, a script can also be called an action table.
Although scenarios are useful in acquiring and validating requirements, they are not themselves requirements, because the describe the system's behavior only in specific situations; a specification, on the other hand, describes what the system should do in general.
\section{Preliminary Schedule Adjusted}
This section provides an initial version of the project plan, including the major tasks to be accomplished, their interdependence's, and their tentative start/stop dates. The plan also includes information on hardware, software, and resource requirements.
The project plan should be accompanied by one or more PERT or GANTT charts.
\section{Preliminary Budget Adjusted}
This section provides an initial budget for the project, itemized by cost factor.
\section{Appendices}
Specifies other useful information for understanding the requirements. All SRS documents should include at least the following two appendices:
\subsection{Definitions, Acronyms, Abbreviations}
Provides definitions of unfamiliar definitions, terms, and acronyms.
\subsection{Collected material}
\section {References}
\bibliographystyle{IEEEtranS}
\bibliography{dissertationbib}
\end{document}