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


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


desc
@Latest revision of group project plan.
@


1.1
log
@Initial revision
@
text
@\documentstyle[fullpage]{article}

\begin{document}

\title{Project Plan \\ Group 7 --- PERT and Gantt Chart Generator}

\author{Brian Gaubert \and Mark M. Lacey \and Richard Malingkas \and
Mike Marlow}

\date{Revised Version turned in October 2, 1992}

\maketitle

%===========================================================================
% BEGINNING OF INTRODUCTION
%===========================================================================
\section{Introduction}

This document describes our current plan for completing our project
planning program.  The program will have a graphical user interface
built using the OpenWindows Developer's Guide.  The user interface
will have a main screen that lists the tasks involved in the project,
a task information screen with information about each task, a PERT
chart screen for display of generated PERT charts, a Gantt chart
screen for display of generated Gantt charts, a print options screen
for controlling hard-copy output, and a load/save file screen for file
retrieval and storage.

The main screen will consist of a list of tasks, along with a file
menu, a chart menu, a calculation menu, and a print menu.  By
double-clicking on a task in the task list, the user will be able to
bring up the task information screen for that task.  The user can then
change information about the task, and save it into the task database.
This screen will be used throughout the process of building a task
list, which can then later be displayed graphically as a PERT chart or
a Gantt chart.  The file menu contains standard options to load and
save files, and begin a new project.  The chart menu is used to select
which type of chart (PERT and Gantt) the user would like displayed for
the current set of tasks.  The calculations menu contains options to
calculate earliest and latest start and end dates for each task, and
find the critical path through the task network.  The print menu will
contain options involved in printing out the task list.

The task information screen allows the user to enter specific
information about each task that is a part of the project.  That
information includes task number; 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.  Some
items, like the task number, earliest and latest start date and end
dates, and float time, cannot be modified by the user, but are rather
calculated by the program itself.  Once the user has entered
information for a task and selected the ``Apply'' button, the screen
is popped down, and the task list is update appropriately.

The PERT chart screen is for the graphical display of PERT charts
which correspond to the task list created by the user.  The chart is
generated automatically based upon the tasks and their dependency
lists.  Each box on the chart will be the same size, and will contain
the task name, planned start and end date for the task, task number,
and task duration.  Task dependency will be indicated by placing the
tasks that have to be completed first to the left of the chart, and
drawing lines to those tasks that can be started once the task is
complete.  If the task is part of the critical path, the line from
that task to the next task on the critical path will be drawn thicker
than other lines, to give a good graphical representation of its
importance.  By double-clicking on a task box, the user will cause the
task information screen to be displayed with the details of that task.

The Gantt chart screen is for the graphical display of Gantt charts,
which like the PERT charts will be generated based on the information
in the task list created by the user.  The user will have the ability
to select a task from the Gantt chart which will cause the task
information screen to be displayed with information on that task.

The print option screen is provided for the user to control the output
that the program produces.  Options will be provided to produce a file
with the output in it, or alternatively have the information sent
directly to a printer for printing.  All printed output will be
produced in \LaTeX\ form, for integration into other documents, or for
direct printing.

The load/save file screen is used to select a path for file retrieval
and storage.  It will consist of a list of files in the current
directory, along with a line on which the user can type a new
directory name, or the filename itself, directly.


%===========================================================================
% END OF INTRODUCTION
%
% BEGINNING OF PROJECT ESTIMATES
%===========================================================================
\section{Project Estimates}

In estimating the effort that will be needed to complete the project,
we used both LOC and FP estimation.  For the LOC estimate, we came up
with small, medium, and large estimates for each major module of the
code, and then used the formula
\[
\mbox{best} = \frac{\mbox{small}+4*\mbox{medium}+\mbox{large}}{6}
\]
to calculate the ``best'' estimate possible.  See Figure
\ref{loc-figure} on page \pageref{loc-figure} for the details of the
estimates.

\begin{figure}
\begin{tabular}{||lccc|c||} \hline
Category & Small & Medium & Large & Best \\ \hline
User interface & 700 & 1150 & 1800 & 1190 \\
File read/write & 200 & 400 & 700 & 420 \\
Calculations & 200 & 300 & 500 & 320 \\
Hard copy & 500 & 700 & 1000 & 720 \\
Other & 400 & 600 & 800 & 600 \\ \hline
& & & Total & 3250 \\ \hline
\end{tabular}
\caption{\label{loc-figure} Estimate of effort in terms of lines of code}
\end{figure}

In calculating the function point estimates, the chart in the book was
used.  See Figure \ref{fp-figure} on page \pageref{fp-figure}
for the details of the estimates.

\begin{figure}
\begin{tabular}{||lcc|c||} \hline
Measurement Parameter & Count & Weight & Product of Count and Weight\\ \hline
Number of user inputs & 17 & 4 & 68 \\
Number of user outputs & 7 & 5 & 35 \\
Number of user inquiries & 3 & 6 & 18 \\
Number of files & 1 & 7 & 7 \\
Number of external interfaces & 1 & 7 & 7 \\ \hline
& & Total & 135 \\ \hline
\end{tabular}
\caption{\label{fp-figure} Estimate of effort in terms of function points}
\end{figure}

%===========================================================================
% END OF PROJECT ESTIMATES
%
% BEGINNING OF MILESTONES SECTION OF THE DOCUMENT
%===========================================================================
\section{Major Milestones}

\begin{itemize}
	\item Project Plan Review \\
Sept.\ 28, 1992 \\
The project plan is to be completed and turned in to be reviewed by
the instructor and T.A.\@@  Included in the plan is an introduction,
estimate of effort, list of milestones, list of tasks and subtasks
along with descriptions of each, a task sheet, PERT and Gantt charts,
and a list of resources to be used.

	\item Requirements Specification Review \\
Oct.\ 5, 1992 \\
The requirements specification is to be finished for review by the
instructor and T.A.\@@  Included in the specification is a refined
description of the project, a list of project constraints, the data
items and data structures needed, a data-flow model of the software,
as control-flow model of the software, and functional partitioning and
description.
	\item Preliminary Design Review \\
Oct.\ 12, 1992 \\
The preliminary design is to be delivered for review.  The preliminary
design is based upon the requirements specification, and further
details the data and functional partitioning of the software.
Interface considerations for each of the modules is also considered.
	\item Detailed Design Review \\
Oct.\ 26, 1992 \\
The detailed design specification is the major deliverable of this
milestone.  It contains a detailed breakdown of each module into
specific functions, with each function specified at the pseudo-code
level.
	\item Module Top Level Code Review \\
Nov.\ 2, 1992 \\
The top level code will essentially be a shell based upon the detailed
design that will include much of the basic functionality of the
software.  Portions of the code that are not complete will be replaced
with temporary ``stubs'' to be filled in later.  Each of the stubs
will have some indication that they have been called (pop-up window,
or possibly just printing something to the command-window that the
program was started in).

	\item Testing Specification Review \\
Nov.\ 9, 1992 \\
The testing specifications include details of what types of tests are
deemed necessary for the software, along with some indication of the
type of test data that will be used.  Types of test include branch
testing, data-flow testing, loop testing, and testing of the
integration of the modules.

	\item External Documentation Review \\
Nov.\ 23, 1992 \\
The external documentation includes the user manual, along with Unix
man-pages for the program.  The user manual will be complete in detail
and include snapshots of the software in action to illustrate the
software.

	\item Program Demo \\
Dec.\ 7, 1992 \\   %Not clear whether this is due in-class or in-lab.
Due are the outputs and related material produced by the program during
testing phase. Demo program is presented to the customer.

	\item Project Completion \\
Dec.\ 14, 1992 \\
All project components are due, including weekly status reports from
the term.

\end{itemize}

%===========================================================================
% END OF MILESTONES SECTION
%
% BEGINNING OF TASKS SECTION
%===========================================================================
\section{Tasks}

\begin{enumerate}
\item Project Description \\
	Sep.\ 7, 1992 to Sep.\ 13, 1992
	\begin{enumerate}
	\item Write project description
	\item Review project description
	\end {enumerate}
%------------------------------
\item Project Plan \\
	Sep.\ 15, 1992 to Sep.\ 28, 1992
\begin{enumerate}
\item Define the scope and objectives of the software \\
	{\bf Resource:} Mark M. Lacey (1 day)\\
	Refine the previously turned in and reviewed project
description, and describe in more detail the scope of the software.
Define objectives that we would like to meet, which include:
	\begin{description}
	\item[User-friendliness] We would like the program to be as
user-friendly as possible, and use as many helpful features of the
{\sc Open Look} interface.
	\item[Modularity] We would like the internals of the program
to be as modular as possible so as to foster further refinements and
extensions to the software.  This will include breaking the hard-copy
and file read/write options away from the user-interface, so that if
the file format, or hard-copy device options are changed at a later
date, the software can be easily modified to accommodate the changes.
	\item[Timeliness of Product] Using good planning, and planning
tools, we will complete the project on time, and fulfill all
requirements and objectives.
	\item[Quality] Quality includes user-friendliness (on-line
help), reliability, robustness, correctness, and reasonable
performance.
	\end{description}
\item Estimate effort for project in days for total project \\
	{\bf Resource:} Mark M. Lacey (2 days)\\
	Both LOC and FP estimates for the effort needed for each of
the major programming tasks will be generated.
\item Define milestones of project \\
	{\bf Resource:} Richard Malingkas (2 days)\\
	Milestones will be defined based upon each of the major task
deadlines that we will reach throughout the term.  These include:
	\begin{itemize}
	\item Review of Project Plan
	\item Review of Requirements Specification
	\item Review of Preliminary Design
	\item Review of Detailed Design
	\item Review of Top-level Code
	\item Review of Testing Specification
	\item Review of External Documentation
	\item Program Demo
	\item Project Completion
	\end{itemize}
\item Break-down of tasks \\
	{\bf Resource:} Mike Marlow (3 days)\\
	Break down each of the project tasks and its sub-tasks,
estimate a duration for each task/sub-task, and define the resources
employed for that task.
\item Generate task sheet, Gantt chart, and PERT chart using
MS-Project \\
	{\bf Resources:} Brian Gaubert, MS-Project, IBM PC Compatible (3 days)\\
	Using MS-Project, the information for each of the tasks is
entered, and a task sheet, PERT chart, and Gantt chart are produced
based upon that information.
\item Define resources \\
	{\bf Resource:} Richard Malingkas (1 day)\\
	Define all of the resources that will be used throughout
completion of the project.  Resources included:
	\begin{itemize}
	\item Human
	\item Hardware
	\item Software
	\item Written material
	\end{itemize}
\item Write project plan \\
	{\bf Resources:} Group members, Emacs, \LaTeX\ (2 days) \\
	Each member writes the portion that he is responsible
for and presents it to the documentation manager (Mark) for review and
incorporation into the final document.
\item Review project plan \\
	Written project plan is first reviewed by group members.
Written plan is then turned in and reviewed by Dr.\ Cheng and Jerry
Gannod.  Comments by Dr.\ Cheng and Jerry are then reviewed by the
group, and elements are re-written as needed.
\end {enumerate}
%------------------------------
\item Requirements Specifications \\
Sep.\ 30, 1992 to Oct.\ 9, 1992

\begin{enumerate}
\item Refine statement of scope for software \\
	{\bf Resource:} Mark M. Lacey (2 days) \\
	The project description from the project plan is refined to
include only those portions of the software that we will absolutely
commit to in our final implementation.  Further detailed description
of each portion of the software is included.
\item Define software project constraints \\
	{\bf Resource:} Richard Malingkas (1 day) \\
	All constraints imposed on the project will be identified and
detailed.
\item Define data items and data structures needed \\
	{\bf Resources:} Group members (4 days) \\
	All of the data items and data structures needed in the
program are defined, along with how each will be operated upon (i.e.
what types of error-checking are involved for each, along with how
they might be involved in calculations).
\item Build control flow model for software \\
	{\bf Resource:} Brian Gaubert (3 days) \\
	A control flow model for the software will be built based upon
the major modules of the software, and the interaction between each of
the modules (in terms of data used by each, and how it is processed).
\item Build data flow model for software \\
	{\bf Resource:} Mike Marlow (2 days) \\
	A data flow model for the software will be built based upon
the information domain, and the functional domain of the application,
and how the data moves throughout the application.
\item Functional partitioning and description \\
	Partition the software into major pieces, and describe each
piece, and its interface to the others.  The pieces, and people
involved in describing those pieces, include:
	\begin{itemize}
	\item User Interface \\
	{\bf Resource:} Mark M. Lacey (1 day)
	\item File Read/Write \\
	{\bf Resource:} Brian Gaubert (1 day)
	\item Calculations (dates, critical path, etc.) \\
	{\bf Resource:} Richard Malingkas (1 day)
	\item Hard Copy Output \\
	{\bf Resource:} Brian Gaubert (1 day)
	\item Database Manipulation \\
	{\bf Resource:} Mike Marlow (1 day)
	\end{itemize}
\item Write requirement specification \\
	{\bf Resources:} Group members, Emacs, \LaTeX\ (2 days) \\
	Each member writes the portion of the document that he
is responsible for, and presents it to the documentation manager for
review and incorporation into the final document.
\item Review requirement specification 
	Written requirement specifications are first reviewed by group
members. Written specifications are then turned in and reviewed by 
Dr.\ Cheng and Jerry Gannod.  Comments by Dr.\ Cheng and Jerry are then
reviewed by the group, and elements are re-written as needed.
\end{enumerate}
%------------------------------
\item Preliminary Project Design \\
Oct.\ 10, 1992 to Oct.\ 16, 1992
\begin{enumerate}
\item Breakdown major modules, and define their functionality
	\begin{itemize}
	\item User Interface \\
	{\bf Resource:} Mark M. Lacey, XView manual (5 days) \\
	Currently the prototype we have created of our software has
the following portions to the user interface:
	\begin{itemize}
	\item Main Screen \\
	The main screen includes a task list, along with a {\em File}\
menu, a {\em Chart} menu, a {\em Calculations} menu, and a {\em Print}\
menu.  The {\em File}\ menu includes options to {\em Load}, {\em Save},
and create a {\em New Project}.
	\item Task Information Screen \\
	The task information screen has fields for items of
information we will be keeping track of.  These include:
		\begin{itemize}
		\item Task number
		\item Task name
		\item Task description
		\item Task duration
		\item Planned start date
		\item Planned end date
		\item Actual start date
		\item Actual end date
		\item Forecast start date
		\item Forecast end date
		\item Earliest start date
		\item Earliest end date
		\item Latest start date
		\item Latest end date
		\item Float time
		\item Resource list
		\item Milestone check-box (indicates if the completion of this
task is a milestone)
		\item Deliverable check-box (indicates if the completion of
this task yields a deliverable)
		\item Sub-task list
		\item Dependency list
		\end{itemize}
	\item PERT Chart Screen \\
	The PERT chart screen is a canvas on which the generated PERT
chart will be displayed.  Each box in the chart will contain the task name
and number, the planned start and end date, and the duration of the
task.  The boxes will all be of the same size.  Boxes will be arranged
on the screen in order from left to right by date that the task must
be started.  Boxes will be connected by lines to show dependencies.
Those tasks on the critical path will be connected by thicker lines
than those that are not on the critical path.
	\item Gantt Chart Screen \\
	The Gantt chart screen is a canvas on which the generated
Gantt chart will be displayed.  Each line on the chart will contain
the task name, and a graphical bar indicating the start and end date
of the task.  A time-line will be printed along the top of the chart.
	\item Print Option Screen \\
	The print option screen contains options for hard-copy output.
Those options include whether the output produced should be sent to
the printer, or instead stored in a file.  If sent to the printer,
there will be a field to indicate which printer, and what command to
use.  If stored in a file, there will be fields in which the user can
enter the name of the directory and file in which the output should be
stored.  This screen will be used by each of the Task Information,
PERT Chart, and Gantt Chart screens, which will each have a print menu
on them.
	\item Load/Save File Screen \\
	This screen contains a listing of files in the current
directory, along with a field in which the user can enter the new
directory they would like to enter.  By selecting a file off of the
list, or entering a filename into the provided field, the user will be
able to load and save projects.  This screen will be popped up when
each of the respective load and save options is selected off of the
menu on the main screen.
	\end{itemize}
	\item File Read/Write \\
	{\bf Resource:} Brian Gaubert (3 days)\\
	The file read and write portion of the project includes
defining the file format that will be used to store project 
information.
	\item Calculation \\
	{\bf Resource:} Richard Malingkas (4 days)\\
	The calculation portion of the project includes finding and
defining algorithms to be used to calculate new dates given a date and
a number of days, along with calculating the number of days between
two dates, and finding the critical path in the task network.
	\item Hard Copy (3 days) \\
	{\bf Resource:} Brian Gaubert, XView manual, \LaTeX\ manual (3
days)\\	
	The hard copy portion of the project involves investigating
different methods for hard copy output, and deciding upon one for the
project.  Current options include:
	\begin{itemize}
	\item Snap-shot program provided with system \\
	This option would mean no coding on our part, and would be the
easiest to incorporate into the project.
	\item Postscript output from canvas window \\
	The ability of generating Postscript output directly from the
canvas window is currently being investigated.
	\item \LaTeX\ output of task sheet, PERT chart, and Gantt
chart \\
	This option is made viable by using the \verb+table+ and
\verb+picture+ environments that \LaTeX\ provides.  This is the option
that looks most promising.  It would also be extremely useful, since
generated \LaTeX\ code could be incorporated directly into other
\LaTeX\ documents.
	\end{itemize}
	\item General Database Functions \\
	{\bf Resource:} Mike Marlow (3 days) \\
	The general database functions include code to add and delete
from the database, search for items in the database, and sort the
database by dependencies.
	\end{itemize}
\item Write preliminary design \\
	{\bf Resources:} Group members, Emacs, \LaTeX\ (3 days) \\
	Each member writes the portion of the document that he
is responsible for, and presents it to the documentation manager for
review and incorporation into the final document.
\item Review preliminary design \\
	Written design document is first reviewed by group members.
Written design is then turned in and reviewed by Dr.\ Cheng and Jerry
Gannod.  Comments by Dr.\ Cheng and Jerry are then reviewed by the
group, and elements are re-written as needed.
\end{enumerate}
%------------------------------
\item Detailed Design \\
Oct.\ 16, 1992 to Oct.\ 26, 1992
\begin{enumerate}
\item Do detailed design of each major module (5 days per module)\\
	Each member will be responsible for doing detailed design of
the module that he was made responsible for during preliminary
design.  Detailed design includes:
	\begin{itemize}
	\item Defining both local and global data used by the module
	\item Breaking the module down into specific sub-routines, and
defining sub-routine calling parameters
	\item Describing the interface between each major module
	\end{itemize}
\item Integration of major modules (1 day)\\
	{\bf Resources:} Group members \\
	The group will sit down with their respective detailed designs
of the major modules, and make certain that the interface between each
major module is well defined.
\item Write detailed design (2 days)\\
	Each member writes the portion of the document that he is
responsible for, and presents it to the documentation manager for
review and incorporation into the final document.
\item Review detailed design \\
	Written detailed design document is first reviewed by group
member.  Document is then turned in and reviewed by Dr.\ Cheng and
Jerry Gannod.  Comments by Dr.\ Cheng and Jerry are then reviewed by
the group, and elements are re-written as needed.
\end{enumerate}
%------------------------------
\item Top Level Code \\
Oct.\ 27, 1992 to Nov.\ 2, 1992
\begin{enumerate}
\item Write top level code for each module \\
	The top-level code for each module will be written by the
person that was made responsible for it during the design process.
This does not mean that this person will write the entire module, but
just the top level code to begin with.  To re-iterate, the modules,
and those responsible for each, are:
	\begin{enumerate}
	\item User interface \\
	{\bf Resource:} Mark M. Lacey (2 days\footnote{Having already
created a prototype using {\em guide}, this step will just include
polishing up the prototype based on feedback from the T.A. and instructor.})
	\item File read/write \\
	{\bf Resource:} Brian Gaubert (3 days)
	\item Calculations \\
	{\bf Resource:} Richard Malingkas (3 days)
	\item Hard copy output of PERT and Gantt charts \\
	{\bf Resource:} Brian Gaubert (3 days) 
	\item Data structure manipulation of database \\
	{\bf Resource:} Mike Marlow (4 days)
	\end{enumerate}
\item Review and test each functional unit \\
	Each member of the group will be responsible for testing the
functions he creates, and in addition the integration of the
modules will be tested by each member of the group, and the group as a
whole. (3 days)
\item Print and collect top-level code
\item Review top-level code
Top-level code will first be approved by the group members, and then
turned in for Dr.\ Cheng and Jerry to review.
\end{enumerate}
%------------------------------
\item Testing Specifications \\
Nov.\ 3, 1992 to Nov.\ 9, 1992
	\begin{enumerate}
	\item Plan testing procedures, and test data (4 days)\\
	Each member of the group will be responsible for making test
procedures and test data for the module(s) that they have been made
responsible for.
	\item Write formal specifications of all test cases (3 days)\\
	Each member will write specifications of the tests that are to
be performed on the module(s) they are responsible for.
	\item Write test specification document (2 days)\\
	Each member will write the portion of the document
corresponding to their module(s), and all portions will be submitted
to documentation manager to be incorporated into final document.
	\item Review test specifications \\
Test specifications will be reviewed by test members, and then turned
in to be reviewed by Dr.\ Cheng and Jerry.
	\end{enumerate}
%------------------------------
\item User Manual and External Documentation \\
Oct.\ 16, 1992 to Nov.\ 20, 1992 \\ \\
Break-down of who will write each part of the manual will have to be
done at a later date.
	\begin{enumerate}
	\item Define general layout of user manual
	\item Define chapters and appendices
	\item Write each chapter, and appendix
	\item Prepare user manual's index, glossary, bibliography
 	\item Prepare on-line documentation (man pages)
	\item Review user manual and other external
		documentation
	\end{enumerate}
\end{enumerate}
%===========================================================================
% END OF TASKS SECTION
%
% BEGINNING OF PROJECT SCHEDULE SECTION
%===========================================================================
\section{Schedule}

See attached task sheet, PERT chart, and Gantt chart.
%===========================================================================
% END OF PROJECT SCHEDULE SECTION
%
% BEGINNING OF RESOURCE SECTION
%===========================================================================
\section{Resources}

\begin{itemize}
	\item Human Resources
	\begin{enumerate}
		\item Brian Gaubert
		\item Mark M. Lacey
		\item Richard Malingkas
		\item Mike Marlow
	\end{enumerate}
	\item Hardware Resources
	\begin{enumerate}
		\item Sun SPARCstation 1
		\item Sun SPARCstation 1+
		\item Sun SPARCstation 2
		\item Sun SPARC IPC
		\item IBM PC's and Compatibles
		\item Apple LaserWriter (various models)
	\end{enumerate}
	\item Software Resources
	\begin{enumerate}
		\item Sun OS 4.1 --- Standard Operating System
distributed by Sun for use with Sun SPARC workstations
		\item OpenWindows 3.0 --- Window manager for use with
Sun OS 4.1
		\item DOS 5.0 --- Operating System for IBM PC's and
Compatibles
		\item MS-Windows 3.0 --- Window manager for use with
DOS 5.0
		\item MS-Project --- Project planning software with PERT and
			Gantt chart capabilities
		\item OpenWindows Developer's Guide --- GUI development tool
		\item Emacs --- Editor
		\item \LaTeX\ --- Typesetting program
		\item gcc --- C compiler
		\item xfig --- Interactive drawing tool
		\item RCS --- Revision Control System (contains
several separate programs)
		\item nroff --- Typesetter used for man-page documentation
	\end{enumerate}
	\item Other Resources
	\begin{enumerate}
		\item XView Reference Manual
		\item Handbook for Practical Software Development
		\item {\em Introduction To Critical Path Analysis}\ by K.G.
Lockyer
		\item {\em \LaTeX: A User's Guide \& Reference Manual}\ by
Leslie Lamport
	\end{enumerate}
\end{itemize}

\end{document}
@
