
=======================================================================

This file contains a guided tour through an example of conducting
critical path analysis on a task precedence diagram.

=======================================================================

                          Critical Path Analysis
                          ----------------------

Imagine you are trying to carry out a project. In order to complete the
project various tasks will have to be completed. In project management
the first task to to identify all the tasks and subtasks to produce a
work breakdown structure.

The next thing to do is to identify the time ordering of tasks relative
to one another, i.e. which tasks rely on others, which tasks must be
performed before others can start. Finally, the duration for each task
needs to assigned.

Using this information it is possible to draw a task precedence diagram,
which is exactly what the demonstration system allows you to do. With is
diagram it is then possible to calculate the Critical Path. The Critical
Path is defined as that path on the diagram which has an overriding
effect on the total length of time the project will take. If the
duration of tasks on the critical path are increased or decreased then
the overall time taken for the tasks will be increased or decreased.

The numbers in the boxes representing a task are as follows:

	Top left: Earliest start for task
	Top middle: Duration of task
	Top right: Earliest finish for task
	Bottom left: Latest start for task
	Bottom right: Latest finish for task

What the demonstration allows you to do is to draw a task precedence
diagram and then calculate the critical path for all the tasks.

=======================================================================
 
			  Demonstration Guide
	                  -------------------

Starting Demonstration:

     Execute the batch file "run".

     The demonstration index, called "installation.ind" consists of one
     diagram card which shows an example precedence diagram, for the
     task of installing a new computer.

     Each task has a name and a duration. The duration is shown in
     the upper middle box of each task node. The four boxes at the
     corners of the task node are:

     Top left: Earliest start
     Top right: Earliest finish
     Bottom left: Latest start
     Bottom right: Latest finish

     The arcs between nodes indicate that a task must be completed
     before the next task begin.

Evaluating critical path.

     Select a node in the diagram by left clicking on it. Left clicking
     on another node will deselect the originally selected node and select
     the new one.

     With a node selected choose menu item "Evaluate: Critical path". 

     If the node selected is a valid root node then the critical path
     will be evaluated. This involves calculating the critical path and
     displaying this on the diagram by changing the colour of the arcs
     linking nodes on the critical to red, as well as adding a hollow
     circle annotation to the middle of these arcs. At the same time the
     earliest start, earliest finish, latest start and latest finish for
     all nodes are also calculated.

     A valid root node for critical path analysis is one which has no
     parents but has children. If the user selects a node that is not
     valid and chooses menu item "Evaluate: Critical path" then a
     warning message appears telling the user that is not a valid node
     and no analysis is done.

     Example
     -------

     With the installation of a computer precedence diagram showing,
     select the node "Feasibility study" and choose menu item "Evaluate:
     Critical path". The critical path is shown -- it is along the
     bottom path of the diagram.

Changing node attributes:

     The user can change the name and duration of a node. Control click on
     a node and a window appears allowing the user to make changes to
     the node's name and duration. When the user clicks on the Ok
     button, then if there is a valid root node selected, the critical
     path is recalculated to take into account the new value for a node
     (e.g. the new duration).

     Example
     -------

     With the critical path calculated for the original diagram, change
     the duration of the node "Train programmers" to 14, and click on
     the Ok button. The critical path is recalculated and can be seen to
     have changed to the next to bottom path.

Adding nodes to diagram:

     The user can select the node type on the diagram. With the mouse
     over the diagram card, the cursor icon should appear as a set of
     crosshairs. When the user left clicks on the diagram the node is
     placed and two dialog boxes appear asking the user to enter the
     name and duration for the task.

Linking nodes in diagram:

     If the user Control right drags from one node to another an arc
     appears between the two nodes. The resulting arc from Control right
     dragging looks better than simple right dragging, but it is
     effectively the same -- an arc is drawn from one node to another
     node.

     Example
     -------

     Select anode on the palette and drop it on the diagram card to the
     right of the node "Train data prep staff" at the top of the
     diagram.  Give the node any name and give it a duration of 20. Then
     Control right drag from "Train data prep staff" to this new node,
     and also Control right drag from the new node to the end node
     "Change over". Then select the root node and choose menu item
     "Evaluate: Critical path". The critical path will be recalculated
     and it will now be along this upper path.

Saving your network:

     Not sure whether this works. Try choosing menu item "Evaluate: Save
     network".

Exit from HARDY:

     If you want to finish your work go to the control window of HARDY
     and choose menu item "File: Exit HARDY".If you haven't saved your
     work HARDY will ask you if you want to do it now. Please do not
     save changes to the demonstration network "installation.ind".

Caveats:

     1) Not very robustly tested 

     2) Not designed for diagrams linked via expansion cards, but there
     is probably no reason why code could not be changed to take account
     of expansion cards.

