\documentclass[a4paper,11pt]{article}
\date{}
\author{Anupama Potluri}
\setlength{\textheight}{8.5in}
\setlength{\textwidth}{5.5in}
\setlength{\topmargin}{0.005in}


%opening
\title{\textbf{\underline{Detailed Design Document Template for the Modules}}}

\begin{document}

\maketitle

This template extends the IEEE template for Software Design Description. Specifically, this is used to fill out the sub-sections of Section 3, namely, ``Detailed Description of Components''. Each of the following sections become the sub-sections for each module of the system being designed. Thus, they may be numbered as $3.n.x$, $3.n.y$ and so on where $x, y$ etc. are the sub-section numbers for each module.

\section{Module Name}

This section describes the basic functionality of the module. What does the module represent and what manipulations are possible on it are described here clearly.

The rest of the subsections here deal with the data structures and functionality, both the interface data structures and functions as well as the internal data structures and functions. The interface data structures and functions are those exported by this module to other modules to manipulate or retrieve this module's information. The internal data structures and functions are visible only to this module and are not known to other modules. These can be changed without affecting the functionality of the system. The system will be affected, however, if the prototypes of the interface functions or the interface data structures are modified.

\subsection{Interface Data Structures}

For every interface data structure exported, there is one paragraph associated with it.

\paragraph{Data Structure $m$}: Describe the data type of the various components of this data structure and their purpose. 

\subsection{Internal Data Structures}

For every internal data structure used by this module, there is one paragraph associated with it.

\paragraph{Data Structure $i$}: Describe the data type of the various components of this data structure and their purpose. 

\subsection{Interface Functions}
\label{if-func}

\underline{\textbf{NOTE:}} Some of the parameters in both interface and internal functions may be I/O parameters. If so, you can either have a section called I/O parameters or include them in both the Input and Output parameter sections.

\paragraph{For every function exported by this module, do the following:}

\paragraph{Prototype of the function}:

\paragraph{Description}: Describe what this function does.

\paragraph{Input Parameters}: Specify the input parameters and their data types, expected range of input etc.

\paragraph{Output Parameters}: Specify the data types of output parameters and what are the expected ranges of output values.

\paragraph{Return Values}: What are the return values for this function and the conditions under which these values are returned. 

\paragraph{Pseudo Code}: This section is to write the pseudo code of the function.

\subsection{Internal Functions}

This is similar to the Section \ref{if-func}, except that this is done for the important internal functions that are visible only within this module.

\paragraph{Prototype of the function}:

\paragraph{Description}: Describe what this function does.

\paragraph{Input Parameters}: Specify the input parameters and their data types, expected range of input etc.

\paragraph{Output Parameters}: Specify the data types of output parameters and what are the expected ranges of output values.

\paragraph{Return Values}: What are the return values for this function and the conditions under which these values are returned. 

\paragraph{Pseudo Code}: This section is to write the pseudo code of the function.

\end{document}
