PANTT - The PERT and Gantt Program Peter M. Hurley June 1, 1978 Help file for version 4.3(252) May 9, 1981 PANTT is a program written for project managers to aid them in both scheduling and daily tracking of their projects. PANTT is an interactive data base management program that allows the project manager to enter and update project information and status as each project progresses. Whenever needed, PANTT can output an updated PERT chart of the project, an overall Gantt chart of the project, and a Gantt chart for each of the developers on the project. Unlike most other computerized PERT systems, PANTT is designed to produce the optimum schedule for more than one interdependent projects being staffed by a common set of developers. As work assignments are made, the project manager can direct PANTT to associate each developer with his or her assigned projects. The remainder of the projects are scheduled to be completed in the shortest time by optimally allocating available developers and by reassigning developers as projects are completed. PANTT also makes it possible for the project manager to set up dependencies of some projects on other projects. The scheduling routine determines the critical path and allocates developers to the projects on the critical path in a manner that minimizes the length of the critical path. While doing this, the scheduling routine acknowledges the dependencies specified by the project manager and does not schedule any project until all projects that are blocking this project have been completed. PANTT understands about the common problems of weekends, vacations, new employees, outside dependencies, background activities, and differing levels of developer productivity that plague all PERT systems. There are facilities integrated into the PANTT system to handle each of these problem areas. Page 2 Each project being entered into the PANTT data base must be broken up into a set of tasks. For example, the XYZ project might have the following tasks: functional specification, design specification, coding, debugging, and integration. In this example none of the tasks can be started until the previous task has been completed. The project manager would set this project up with each task being dependent on the task immediately preceding it. If more detail is desired, these tasks could be divided into smaller units. For example, the coding task might be broken up into monitor code, utility code, and application code. Both the utility code and the application code are dependent on the monitor code being finished and could be specified as being dependent on the monitor code task. But since the utility code and the application code tasks are not dependent on each other, these tasks can be done in parallel. The PANTT scheduler routine would allocate developers to these tasks in the optimum fashion to minimize the overall length of the project. Page 3 PANTT Commands 1. Top level commands ADD DEVELOPER user_name (RATE) x (HANDICAP) y Add a developer to the overall developer list. This new developer can spend up to x (0 to 1.0) amount of his or her time working on projects. The handicap rating, y, is the indication of the performance of this developer relative to the other members on the project (1.0 is the norm). ADD PROJECT (PROJECT NAME) project_name Add a project to the data base. ADD TASK (TASK NAME) task_name (TO PROJECT) project_name Add a task to the specified project. DELETE DEVELOPER user_name Delete the specified user name from the overall developer list. DELETE PROJECT (PROJECT NAME) project_name Delete the specified project and all of its tasks from the data base. DELETE TASK (FROM PROJECT) project-name (TASK NAME) task_name Delete the specified task from the specified project. EXIT Exit from PANTT. LIST (PROJECT) project_name (TASK) task_name Type out all information about a given task. If task_name is omitted then all tasks in the project will be listed. Page 4 OUTPUT CHANGES-IN-ESTIMATED-DATES (TO FILE) file_specification Outputs a list of all estimated dates which changed since the last REMEMBER command. OUTPUT CONTROL-FILE (TO FILE) file_specification Writes a control file for a batch job to rebuild the PANTT data-base. This lets one rename projects and make other systematic changes with a text editor. This process also flushes all dates stored by the last REMEMBER command. OUTPUT DEVELOPER-LIST (TO FILE) file_specification Output the overall list of developers, their rates, and their handicaps. OUTPUT PATH-CHARACTER-LIST (TO FILE) file_specification Outputs an alphabetical listing of each task with a given path-character. OUTPUT PERT-CHART (TO FILE) file_specification Output a PERT chart of all tasks in the data base to the specified file specification. OUTPUT SCHEDULE (TO FILE) file_specification Outputs a listing of all tasks sorted by earliest start date, with the following information. Estimated start and completion dates Name of project and task Project description Task description OUTPUT SELECTED-PERT-BOXES (TO FILE) file_spec Same idea as OUTPUT PERT-CHART except one can select which projects get included. See SELECT mode. OUTPUT TASK-LIST (SORTED BY) EARLIEST-START-DATE (TO FILE) file_spec Output a list of the tasks in the data base sorted by the earliest start date. This list contains the task length, the start date, the finish date, the developers available to work on the task, the tasks blocking this task, and the tasks being blocked by this task. Page 5 OUTPUT TASK-LIST (SORTED BY) PROJECT (TO FILE) file_spec Output a description of each task of each project in the data base. This report lists all available data about each task. The list is arranged alphabetically by project and by tasks within each project. Page 6 OUTPUT GANTT-CHART (OF) DEVELOPERS (TO FILE) file_spec Output a Gantt chart for each developer scheduled to work on some part of this set of projects and tasks. The Gantt chart includes the dates that the developer is working on a task and the amount of that developers time is being spent on that task. The Gantt chart pictorially shows the start and end dates for each task that this developer is working on. The chart also indicates which tasks have been completed and which tasks are in progress. OUTPUT GANTT-CHART (OF) MILESTONES (TO FILE) file_spec Output a chart show the dates of all milestones. OUTPUT GANTT-CHART (OF) ONLY-DEVELOPER developer (TO FILE) file-spec Output a gantt-chart for only one developer. This mode figures out a good starting date for the chart. OUTPUT GANTT-CHART (OF) TASKS (TO FILE) file_spec Output a chart showing the start and finish of all tasks. This chart also shows those tasks that have been completed, those tasks that are in progress, and the number of people allocated to each task at any point in time. Page 7 PLOT GANTT-CHART (OF) DEVELOPERS (TO FILE) file_spec PLOT GANTT-CHART (OF) MILESTONES (TO FILE) file_spec PLOT GANTT-CHART (OF) ONLY-DEVELOPER developer (TO FILE) file_spec PLOT GANTT-CHART (OF) TASKS (TO FILE) file_spec PLOT PERT-CHART (TO FILE) file_spec PLOT SELECTED-PERT-BOXES (TO FILE) file_spec These commands are identical to the corresponding OUTPUT commands except data is written in TXT2P format so that it may be plotted on the VERSATEC plotter. Here is a brief example of generating a PERT plot: PANTT>PLOT PERT-CHART (TO FILE) PERT.T2P PANTT>EXIT @TXT2P *PERT.DPL=PERT.T2P NO ERRORS DETECTED *^C @R P MODE(S)? 1 INPUT FILENAME(.DPL): PERT.DPL @DO SYS:NETPLO PERT.PLO now go over the LA36 next to the PDP-11 and type: RUN MAPVP INPUT FILENAME: PERT.PLO/E The above procedure worked on system 1031 on 26 June 80. Things may have changed since that date. NOTE: The VERSATEC system is now located in CIRCUIT DESIGN DRAFTING on MR1-2. Page 8 REMEMBER (ESTIMATED DATES FOR FUTURE COMPARISON) Remembers the estimated dates for each task. These may be compared with the latest estimates with the OUTPUT CHANGES command. SCHEDULE Perform a scheduling pass over all tasks in the data base. This command requests the "Scheduler Look Ahead Value". This is the searching depth to which the scheduler will go when trying to resolve scheduling conflicts. A conflict arises when there are more than one tasks that are not being blocked by any other tasks and the set of developers available to work on these tasks overlap. These conflicts are resolved by an exhaustive check of all combinations and permutations of developers and tasks. The scheduler choses the order that minimizes the end date of the critical path. Since the length of time to perform a scheduling pass increases exponentially as the number of conflicts goes up, PANTT allows the project manager to specify the depth of the search. If the scheduler look ahead value is set to 0, PANTT will do a complete scheduling pass in the shortest possible time. [[Values other than zero have not been well tested]] SET HOLIDAY (DATE) date Prevents work from being scheduled on specified date. SET PERT-PLACEMENT-ALGORITHM (TO THE) DEFAULT (PLACEMENT ALGORITHM) Places the PERT boxes using minimum cpu time. SET PERT-PLACEMENT-ALGORITHM (TO THE) HIGH-DENSITY (PLACEMENT ALGORITHM) Reduces the amount of white-space on the pert chart. If your pert chart is larger than the plotter or line-printer page, this command may help it fit. This mode may also produce better looking pert charts. [Depends on your definition of "good looking"] SET SCHEDULE-DATE (TO) date Pretend today is "date". Useful if a project will not start for a while. Page 9 UPDATE (PROJECT) project_name Enter update mode for the specified project. This command allows the project manager to go change project related data. See the section on project commands for more detailed information. UPDATE (PROJECT) project_name (TASK) task_name Enter update mode for the specified task. This command allows the project manager to update task data for the specified task. See the section on task commands for further details. Page 10 2. Project Commands DELETE DEVELOPER user_name Delete a developer from the list of developers assigned to this specific project. DEVELOPER user_name (RATE) x (HANDICAP) y Add the specified user to the list of developers available to work on this project. The maximum amount of time that this developer can spend on this project is x (0 to 1.0). The relationship of this developer to the other developers on the project is y (1.0 is the norm). FINISHED (UPDATING PROJECT DATA) This command returns to the top command level. LIST This command lists all the available data about this project. PREFERENCE-VALUE (FOR FREE CHOICE) x This command sets the free choice preference value for this project. Whenever the scheduling routine makes a free choice of the next task to be scheduled, this preference value will bias its choice. The higher the value, the sooner the scheduler will chose tasks of this project to be done. PROJECT-DESCRIPTION This command lets the project administrator rewrite the description of this project. This description can be more than one line in length, and it is terminated with an ALTMODE or a CTRL/Z. Page 11 3. Task Commands ALL-DEVELOPERS-REQUIRED This sets a bit which forces all listed developers to work on this task for an equal amount of time. This is useful for design reviews, group meetings and other tasks where all developers are required. This command will be replaced (or augmented) in a future version by NUMBER-OF-DEVELOPERS-REQUIRED (IS EXACTLY) n which will schedule n of the available developers to work together on this task. ATTRIBUTE (NAME IS) name (VALUE) value This allows the user to add additional description to a given task. Attributes are remembered in the database and printed when the task is listed. For example, the command: ATTRIBUTE (NAME IS) BUDGET (VALUE) 35K will generate a line containing: BUDGET: 35K whenever the task is listed. COMPLETION-DATE date This command specifies the actual completion date of the task. If a task has a completion date specified, then the scheduler assumes that this project must be scheduled according to this date. The completion date can be specified as a date in the future. An example of this is when a project manager adds a task to indicate that a developer is going to be on vacation on a particular date. DELETE COMPLETION-DATE This command deletes the actual finishing date for this task. DELETE DEPENDENCY (ON PROJECT) project_name (TASK NAME) task_name This command removes the dependency of the task being updated on the task specified in this command. DELETE DEVELOPER user_name This command deletes the specified user from the list of developers that are available to work on this task. Page 12 DELETE ESTIMATED-PROJECT-LENGTH This command deletes the specified task length. DELETE EXPECTED COMPLETION-DATE This command deletes the expected completion date of the task. DELETE EXPECTED STARTING-DATE This command deletes the expected start date of the task. DELETE MINIMUM-STARTING-DATE This command deletes the minimum starting date specification for this task. DELETE PATH-CHARACTER Remove the critical path character from this task DELETE PREFERENCE-VALUE This command deletes the preference value for this task. DELETE STARTING-DATE This command deletes the starting date of the task. DEPENDENCY (ON PROJECT) project_name (TASK NAME) task_name This command indicates that this task cannot be started until the specified task has been completed. DEVELOPER user_name (RATE) x (HANDICAP) y Add the specified user to the list of developers that can be assigned to work on this task. The rate and handicap values for this developer are x and y. Page 13 ESTIMATED-PROJECT-LENGTH (IN DAYS) n This command specifies the estimated length of the project. The task length is specified in work days (5 work days per week). This is an integer value; fractional days are not accepted. EXPECTED COMPLETION-DATE (IS) date This command is used to set the expected completion date of a project. This differs from the actual completion date only in the fact that this date is not guaranteed. However, the scheduling routine treats this date as if it is a firm date for scheduling purposes. EXPECTED STARTING-DATE (IS) date Set the expected starting date. The scheduling routine will cause this task to be scheduled on the specified date. FINISHED (UPDATING TASK DATA) This command returns to the top command level. LIST This command lists all available data about the task. LONG-ATTRIBUTE name This is the same as ATTRIBUTE except it takes a long string terminated with an escape. Example: LONG-ATTRIBUTE (NAME IS) COMPLETION-CRITERIA VALUE OF ATTRIBUTE ( WHEN DONE) ALL DEMO INFORMATION IS IN FILE. $ will produce: COMPLETION-CRITERIA: ALL DEMO INFORMATION IS IN FILE. whenever, the task is listed. MILESTONE This command marks this task as being a milestone. Page 14 MINIMUM-STARTING-DATE date This command specifies the earliest date that the this task can be scheduled. The scheduling routines will schedule this task at the optimal time after this date. PATH-CHARACTER (IS) x This command assigns a "critical-path character" to a task. All tasks on the critical path blocking this task are flagged with this path character. This allows several critical paths to be monitored. PREFERENCE-VALUE (FOR FREE CHOICE) x This command sets the free choice preference value for this task. Whenever the scheduler has a free choice between two tasks belonging to the same project, it will chose the task with the higher preference value. If both tasks have the same preference value, then it will chose the task that will finish in the longest time. STARTING-DATE date This command sets the actual starting date of the task. The scheduling routines chose tasks that have starting dates specified before any other tasks are chosen. In this way, these tasks will be completed without interruption. TASK-DESCRIPTION This command allows the project manager to enter a new description of the task. TIME-TO-DATE (IN DAYS) n (AT DATE) date This command specifies that n work days had been spent on this project at the specified date. This command is used to give updated information about the progress of a task after the start date but before the completion date. Page 15 4. SELECT MODE There is a new option in the OUTPUT and PERT commands called SELECTED-PERT-BOXES. The format of the command is exactly the same as the normal PERT option except it leaves you in SELECT: mode when you are done. SELECT: mode currently has 2 possible commands, FINISHED and INCLUDE. INCLUDE PROJECT project-name (NAME) task If TASK is omitted the entire project is pert'ed. If TASK is given, only that box is pert'ed. There may be any number of INCLUDE commands. FINISHED gets you out of select mode and writes out the pert. example: PANTT> PLOT SELECTED-PERT-BOXES (TO FILE) KL10.T2P SELECT: INCLUDE PROJECT CPU SELECT: INCLUDE PROJECT EBOX SELECT: INCLUDE PROJECT MBOX SELECT: INCLUDE PROJECT DEBUG CPU-POWERON SELECT: FINISHED This will produce a PERT chart of the CPU design up to CPU poweron. The selection happens prior to placing the boxes on the plot and the plot looks as good as any full PANTT chart. Selection only changes what gets plotted. All tasks are scheduled, slacks set, and critical paths determined based on the full network. If the PERT is plotted (as opposed to printed on the line printer) dependencies on boxes not plotted are indicated by arrows. An arrow pointing up indicates that this task depends on one or more tasks which are not in this PERT. An arrow pointing down indicates that one or more tasks which are not in this plot depend on this task.