head	1.7;
access;
symbols;
locks; strict;
comment	@% @;


1.7
date	92.10.28.09.43.00;	author lacey;	state Exp;
branches;
next	1.6;

1.6
date	92.10.28.05.47.37;	author lacey;	state Exp;
branches;
next	1.5;

1.5
date	92.10.28.04.31.55;	author lacey;	state Exp;
branches;
next	1.4;

1.4
date	92.10.28.04.31.22;	author lacey;	state Exp;
branches;
next	1.3;

1.3
date	92.10.27.20.59.33;	author lacey;	state Exp;
branches;
next	1.2;

1.2
date	92.10.27.01.06.27;	author lacey;	state Exp;
branches;
next	1.1;

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


desc
@Design description
@


1.7
log
@*** empty log message ***
@
text
@%
% This section begins the body of the document.  In this section
% it would be useful to provide an overall picture of the design
% to be included in remaining sections.
%
\section{Design Description}

%%===========================================================================
%%---------------------------------------------------------------------------
%% SUBSECTION FOR DATA DESCRIPTION
%%---------------------------------------------------------------------------
%%===========================================================================
\subsection{Data Description}

The data managed by \xplan\/ is primarily made up of task information
for a project.  A list of tasks is maintained, and each task in turn
can have a list of sub-tasks that make up the task.  The information
stored for each task includes: task name; task description; task
duration; planned, actual, forecast, earliest, and latest start and
end dates; float time; resource list; sub-task list; dependency list;
and flags which indicate if completion of this task is a milestone,
and if completion of this task yields a deliverable.

%%%---------------------------------------------------------------------------
%%% SUBSUBSECTION FOR REVIEW OF DATA FLOW
%%%
%%% The following subsection describe the data flow and
%%% structure from refined DFD and decomposition of tasks
%%%---------------------------------------------------------------------------
\subsubsection{Review of Data Flow}

Referring to Figures \ref{l0dfd} and \ref{l1dfd}, it can be seen that
the database subsystem is at the heart of the project planning tool.
All information that is stored or retrieved goes through the database
subsystem.  Data flows from the user and from files into the database.
From the database comes structured task information that can be used
in displaying PERT and Gantt charts on the screen, or for storage
to a \LaTeX\ file.

\begin{figure}
\centering
\centerline{\psfig{figure=l0dfd.ps,height=3in}}
\caption[Level 0 Data Flow Diagram]{Level 0 data flow diagram of system}
\label{l0dfd}
\end{figure}

\begin{figure}
\centering
\centerline{\psfig{figure=l1dfd.ps,height=5in}}
\caption[Level 1 Data Flow Diagram]{Level 1 data flow diagram of system}
\label{l1dfd}
\end{figure}

%%%---------------------------------------------------------------------------
%%% SUBSUBSECTION FOR REVIEW OF DATA STRUCTURE
%%%---------------------------------------------------------------------------
\subsubsection{Review of Data Structure}
\label{dsreview}

The main data structure that the tool uses is a task list.  The task
list is a linear structure of linked task nodes.  Each task node has
the corresponding information for a single task.  Included in that
information is a dependency list.  The dependency list is a list of
tasks that the current task depends on.  Looking at it from another
perspective, the task list could be seen as an adjacency list, with
each task node having a list of tasks off of it that it depends on.
Adjacency lists are often used in place of matrices for storing graph
information, since they can store information for a sparse graph in a
much more compact fashion.

The tasks in the task list are in the order that the user places them.
The user will have the ability to add tasks at the beginning and end
of the list, along with inserting a new task at any point within the
list.

%%===========================================================================
%%---------------------------------------------------------------------------
%% SUBSECTION FOR DERIVED PROGRAM STRUCTURE
%%
%% Given the tasks and subtasks identified in Requirements
%% document, identify program structure (modules).
%%---------------------------------------------------------------------------
%%===========================================================================
\subsection{Derived Program Structure}

The program structure will ultimately start out with the files
generated by the Sun OpenWindows Developer's Guide user interface
tool, along with those files generated by {\em flex\footnote{The
program {\tt flex} is a derivative of {\tt lex}, and is used to
generate lexical analyzers.}}\/ and {\em bison\footnote{The program
{\tt bison} is a derivative of {\tt yacc}, and is used to generate
parsers.}}.  Most of the user interface code will be contained within
the files generated by Guide.  Various Xlib functions will be needed
to implement graphical display of PERT and Gantt charts.

The heart of the project planning tool, the database subsystem, is the
next module.  This module is a logical entity of its own with the
expressed purpose of managing the database.  All database access will
have to be done through the use of calls to the database module.
Functions will be created to add, retrieve, delete, modify, and search
for information within the database.  The database module is broken up
into four seperate modules based upon the logical cohesiveness of the
procedures defined in each.  These four seperate modules are the
creation, addition, destroy, and find modules.

The calculations module will consist of a set of functions used in
finding the critical path, calculating the earliest and latest start
and end dates for a task, and checking dependency information for
dependency loops.  The calculations module will also need functions
that calculate the placement of information on the PERT and Gantt
charts generated by the system.

The file read and write modules consists of a set of functions related to
storing information from the internal database to a file, or
retrieving information from a file and storing it into the internal
database.

The \LaTeX\ PERT and Gantt chart generation modules will use the
information provided by the calculations module to generate \LaTeX\
commands corresponding to the type of output the user asked for (task
sheet, PERT chart, or Gantt chart).  The \LaTeX\ modules,
however, are responsible for breaking the output into separate pages.

%%===========================================================================
%%---------------------------------------------------------------------------
%% SUBSECTION FOR INTERFACES WITHIN STRUCTURE
%%
%% How do the modules fit together?
%%---------------------------------------------------------------------------
%%===========================================================================
\subsection{Interfaces Within Structure}

This section will explain the integration of the major modules.  First
the user interface will only have write access to the database using
the store functions of the database. The user interface will be able
to receive information from the database and the calculations modules
only. The information received from the database consists of the task
information.  The information received from the calculations module will
consist of a formatted structure that will contain placement
information for the viewing of the Gantt and PERT charts.  The file
read and write modules will only access and place information to/from
the database and will read/write the information to/from a file.  The
calculations section will receive data from the database, perform its
calculations and output data to either the database (calculation of
begin, end dates), the user interface (formatted data for the PERT and
Gantt charts for the screen), or the \LaTeX\ generator (formatted data
for the generation of a \LaTeX\ file that contains PERT and Gantt
charts).


@


1.6
log
@*** empty log message ***
@
text
@d101 4
a104 1
for information within the database.
d113 1
a113 1
The file read/write module consists of a set of functions related to
d118 5
a122 5
The \LaTeX\ generation module will use the information generated by
the calculations module to generate \LaTeX\ commands corresponding to
the type of output the user asked for (task sheet, PERT chart, or
Gantt chart).  The \LaTeX\ module itself, however, is responsible for
breaking the output into separate pages.
d133 1
a133 1
This section will explain the integration of the major modules First
d138 1
a138 1
information.  The information received from the calculations will
@


1.5
log
@*** empty log message ***
@
text
@d146 2
@


1.4
log
@*** empty log message ***
@
text
@d145 1
a145 1
charts).
@


1.3
log
@*** empty log message ***
@
text
@d37 1
a37 1
in displaying PERT and Gantt charts on the screen, or storing them
d130 11
a140 12
This section will explain the integration and how each major module
will be integrated with one another. First the user interface will
only have write access to the database using the store functions of
the database. The user interface will be able to receive information
from the database and the calculations modules only. The information
received from the database consist of the task information from the
database to the screen, depending on what screen the user is on. The
information received from the calculations will consist of a formatted
structure that will contain placement information for the viewing of
the Gantt and PERT charts. The file read/write will only access
information from the database and will put information to the file.
The calculations section will receive data from the database to do its
d144 2
a145 10
for the generation of a \LaTeX\ file that will produce PERT and Gantt
charts).  Lastly, the database will be accessed when the user types
some information on the screen (Information is stored to the
database), the database is updating the screen, the database is called
by the calculations, the calculations update the database, the read
file is called by the read function which is called by the database
function to read the information from the file, and the database calls
the write function to write the information stored within the database
to the file.

@


1.2
log
@*** empty log message ***
@
text
@d37 1
a37 1
in displaying PERT and Gantt charts on the screen, or dumping them out
d138 16
a153 16
structure that will contain information for the viewing of the Gantt
and PERT charts. The file read/write will only access information from
the database and will put information to the file. The calculations
section will receive data from the database to do its calculations and
output data to either the database (calculation of begin, end dates),
the user interface (formatted data for the PERT and Gantt charts for
the screen), or the \LaTeX\ generator (formatted data for the
generation of a \LaTeX\ file that will produce PERT and Gantt charts).
Lastly, the database will be accessed when the user types some
information on the screen (Information is stored to the database), the
database is updating the screen, the database is called by the
calculations, the calculations update the database, the read file is
called by the read function which is called by the database function
to read the information from the file, and the database calls the
write function to write the information stored within the database to
the file.
@


1.1
log
@Initial revision
@
text
@d7 148
@
