head	1.1;
access;
symbols;
locks
	malingka:1.1; strict;
comment	@% @;


1.1
date	92.10.17.20.34.18;	author lacey;	state Exp;
branches;
next	;


desc
@@


1.1
log
@Initial revision
@
text
@%%===========================================================================
%%---------------------------------------------------------------------------
%% SUBSECTION FOR CALCULATION SUBSYSTEM
%%---------------------------------------------------------------------------
%%===========================================================================
\subsection{Calculation Subsystem}

%%%---------------------------------------------------------------------------
%%% SUBSUBSECTION FOR PROCESSING NARRATIVE
%%%
%%% For the preliminary design, make the processing narrative
%%% only textual. In the Detailed design, you will provide a
%%% structural description.
%%%---------------------------------------------------------------------------
\subsubsection{Processing Narrative}

Calculation subsystem will be divided into 4 modules as follows:

\begin{itemize}
	\item Command interpreter module \\
This module will handle all the callbacks that are sent to Calculation
subsystem from GUI subsystem. Depending on the value passed during the
callback, Command interpreter module will then invoke the necessary
procedure(s) to handle the requested command(s).
	\item Database info module \\
This module will act as another layer of abstraction between the other
modules in Calculation subsystem and the Database subsystem. The other
modules within the Calculation subsystem will then (logically) work
with tasks, instead of lists. For example, instead of having
get-next-item-on-the-list, this module will provide get-next-task.
	\item Calculation info module \\
This module will do all the calculation for finding the critical path,
checking for dependency loops, and date arithmetic. Since Database
info module will hide the notion of a list, Calculation info module will
then deal with things such as get-next-task, get-next-subtask,
get-task-number, etc.  % I think it's OK to use etc here.  
Calculation info module is the heart of Calculation subsystem. This module will
further divided into three submodules/functions that will handle each
of the three tasks above.
	\item Display module \\
The Display module will handle all the necessary conversion of task
network data into boxes and lines that can be displayed on the screen
or incorporated into \LaTeX\ document. This module will be further
divided into two submodules, one for handling screen display, the
other for paper layout.  
\end{itemize}

%%%---------------------------------------------------------------------------
%%% SUBSUBSECTION FOR INTERFACE DESCRIPTION
%%%---------------------------------------------------------------------------
\subsubsection{Interface Description}

Within calculation subsystem, the command interpreter module performs as
main module. It will trigger other module(s) when it receives a command
from GUI subsystem. This module will navigate all the data transfer
between submodules in calculation subsystem.  

%%%
%%%	The following section will be filled in during the detailed design
%%%	phase. For now, it is commented out.
%%%
%%%	\subsection{Design Language Description}

%%%---------------------------------------------------------------------------
%%% SUBSUBSECTION FOR MODULES USED
%%%
%%% Identify the modules to be used by different modules
%%%---------------------------------------------------------------------------
%%%===========================================================================
\subsubsection{Modules Used}

Basically, each module will be called (used) by another module, except
the command interpreter module which behaves as a main module within
the calculation subsystem.  

%%%---------------------------------------------------------------------------
%%% SUBSUBSECTION FOR DATA ORGANIZATION
%%%
%%% Describe the data structures to be used for the software.
%%% Give their organization.
%%%---------------------------------------------------------------------------
\subsubsection{Data Organization}

Data structure to be used will be handled by Database subsystem. As far as
Calculation subsystem concern, the data structure is just a list of tasks. The
implementation details of the list is hidden as to provide the lowest coupling
possible.

%%%---------------------------------------------------------------------------
%%% SUBSUBSECTION FOR COMMENTS
%%%
%%% Create the skeleton for each of the modules by commenting
%%% the purpose of each.
%%%---------------------------------------------------------------------------
\subsubsection{Comments}

\begin{itemize}

\item Command-interpreter module
	\begin{itemize}
	\item Decode the value that was sent by GUI subsystem.
	\item Invoke the necessary procedures that will handle the user 
		commands.
	\end{itemize}
\item Calculation-info module
	\begin{itemize}
	\item Depending on the command received from Command interpreter,
		the corresponding function(s) will be invoked.
	\item Data items are retrieved from the Database info module.
	\item Find Critical Path : Depth First Search algorithm , along with
		topological sort will be used to find the longest path through
		the task network.
	\item Check Dependency : Again, Depth First Search algorithm is used
		to detect any directed cycle in the graph (task network).
	\item Date Arithmetic : A library module will be used for converting
		between Julian and Gregorian dates. The other calculations are
		just simple algebra.
	\end{itemize}
\item Display module
	\begin{itemize}
	\item Calculate the relative position of the boxes and lines
		that are going to be displayed on the screen. Information is 
		then passed back to GUI subsystem.
	\item Calculate the position of boxes and lines on each page of the
		\LaTeX\ document. Info is then passed to \LaTeX\ Generator
		subsystem. 
	\item Check to make sure that each box of the PERT chart can be 
		displayed fully in one page to allow for easy reading of the
		 chart.
	\end{itemize}
\item Database-info module
	\begin{itemize}
	\item Invoke the functions in the Database subsystem to get the info
		from the database.
	\item Perform the necessary data abstraction so as to simplify the
		interface between modules in Calculation subsystem.
	\item Pass any information back to Database subsystem, so that the 
		information can be stored for later retrieval.
	\end{itemize}
\end{itemize}
@
