Total Slack as presented in Microsoft Project is not a valid metric for logical analysis of Summary Tasks. Users are advised to ignore it.
Underlying the “automatic” project scheduling in Microsoft Project are some simple mathematical processes that are commonly referred to as the Critical Path Method (CPM). CPM schedule calculation starts with a “Forward-Pass” through the schedule network to identify the earliest POSSIBLE start and finish dates that can be scheduled for each task – subject to its calendars, predecessors, and early constraints. Next – starting from the project completion – comes the “Backward-Pass” to identify the latest ALLOWABLE start and finish dates for each task, subject to its calendars, successors, and late constraints. For each task the difference between the late and early dates is called “Slack”.
“Start Slack” = Late Start – Early Start
“Finish Slack” = Late Finish – Early Finish
“Total Slack” = the lesser of Start Slack or Finish Slack (with some exceptions).
In traditional CPM, the “Critical Path” – i.e. that collection of tasks that controls the completion date of the project – is identified using Total Slack according to one of the following definitions depending on the complexity of the project and other factors:
- Total Slack = 0; or
- Total Slack = the lowest observed value.
Microsoft Project identifies critical tasks based on Total Slack <=0 (or some other threshold). [As noted in another post, this often leads to an incorrect identification of Critical Path for a project.]
Summary tasks are not anticipated in traditional CPM algorithms, so calculation and interpretation of Slack/Float for summaries can vary significantly between scheduling tools. In some (or most) CPM tools, summaries exist primarily to roll-up cost and schedule data (including slack/float) from the underlying sub-tasks. In Project, however, each summary task exists first as a task in its own right, with corresponding logical and hierarchical relationships to other tasks. This leads to common misunderstandings of exactly what is meant by “Total Slack” of a summary task in Microsoft Project.
- Each summary task inherits its early and late dates from its sub-tasks according to the following:
- Early Start = the earliest Early Start of all the sub-tasks;
- Late Start = the earliest Late Start of all the sub-tasks*;
- Early Finish = the latest Early Finish of all the sub-tasks;
- Late Finish = the latest Late Finish of all the sub-tasks*.
[* Behavior shown is for normal scheduling, i.e. schedule from project start with ASAP constraints.]
- The Start Slack, Finish Slack, and Total Slack of the summary task are computed according to the inherited early and late dates.
- Since Total Slack of the summary task is derived from up to four different, logically unconnected sub-tasks, it has no significance with respect to the Critical Path or any other logic path in the project schedule. This is illustrated in the figure above: Summary task B inherits its Early Start and Late Finish from task B1 and inherits its Late Start and Early Finish from task B4. The resulting 4 days of Total Slack shown for the summary task reflects the difference between the Late Finish of task B1 and the Early Finish of task B4 – completely meaningless in the absence of any logical connections between the two tasks. The 4 days of Total Slack for the summary task is also unrelated to the Total Slack values of any of its underlying sub-tasks.
- If the summary task possesses logical successors – or if its parent or any outline-ancestor summary tasks possess logical successors – then the late dates can be further accelerated through hierarchical inheritance. The result is total slack that is sometimes zero or negative.
- If the summary task possesses a manually-scheduled sub-task whose start date precedes that of any other sub-task under the summary, then the manual sub-task’s scheduled start date will be written to both the early and late start of the summary task, resulting in zero start (and total) slack.
Some tools have allowed summaries to display the “most-critical” (or lowest) float of the associated activities – which at least means something. Similar behavior may be obtained in Microsoft Project by inserting a custom duration field – say “Rolled Up Total Slack” – using a simple formula (“=[Total Slack]”) with “Rollup” set to Minimum.
Many modern MSP schedules incorporate variable calendars, deadlines, late constraints, or resource leveling; and the basic CPM assumptions no longer apply. Under such conditions Total Slack for any task – summary or sub-task – becomes unreliable for identifying the Critical Path or any other logical path through the schedule. That’s when a utility like BPC Logic Filter is needed.