November 12, 2011 1 Comment
The strength and integrity of your project schedule is built based upon the definition of deliverables and activities, the estimation of durations and effort, as well as the organization and sequencing of the work efforts. All three elements are important, but the one that I think project managers’ struggle with the most is organizing the deliverables and activities in a manner that reflects the way in which the work will actually be performed / completed. Organizing the work involves developing a work breakdown structure (WBS) that is arranged and decomposed in a structured manner, and sequencing the deliverables and activities based upon logical relationships (dependencies) between the deliverables and activities. This blog focuses on establishing and managing dependencies that are understandable and create a reasonable workflow. This discussion includes using project management tools like MS Project to efficiently define and managing dependencies within your project schedule.
Type of Dependencies
Understanding the types of dependencies inherent in the work that needs to be completed is one of the most important elements of creating a strong project schedule. There are 3 primary types of dependencies:
Mandatory Dependencies – These are dependencies that create firm relationships between two activities. Examples of this logic include:
These two activities must be performed at the same time (starting and/or finishing at the same time).
This activity cannot start until another activity finishes.
Discretionary Dependencies – These are “soft” dependencies that reflect how the team anticipates the work will be completed, or how the team “would like” the work to be completed. These types of dependencies enable the team to optimize the flow of work throughout the project life cycle. Most importantly, “soft” dependencies represent the tool that the project manager utilizes to create “float” in the schedule. This is a much more effective manner to drive the timeline than “hard coding” dates (artificial constraints) into the schedule. Examples of this logic includes:
This activity will happen at the same time as another group of activities.
This activity will start up a couple weeks after another activity is completed.
External Dependencies – These are dependencies that are outside the control of the project team, but nonetheless must be reflected in the project schedule. Examples of external dependencies include:
Approval from an external organization must be received prior to starting an activity.
Completion of a project milestone is linked to the completion of a milestone within another project.
Creating external dependencies within your project schedule can be accomplished in a couple different ways:
Insert a milestone that reflects the completion of the external dependency.
Insert a planning component (placeholder type task) that reflects the timing of the external dependency.
Link specific activities to activities in other project schedules (requires utilization of enterprise scheduling tools).
Dependency relationships are utilized to link two tasks in the most logical manner possible. As in the case of dependency types, this relationship may represent a “hard” relationship (must happen in a certain manner) –or- a “soft” relationship (a relationship set up by the PM to establish a logical flow of the project activities). The valid relationships in MS Project are:
- Finish-to-Start (FS) – This represents the default relationship in MS Project. If you do not specify the relationship, FS is assumed. This relationship is utilized to establish a sequential flow of work – this activity can start when the previous activity is completed.
- Start-to-Start (SS) – This relationship is utilized when two activities will be launched at the same time. They may end at different times (depending on the duration of each activity), but they can start at the same time.
- Finish-to-Finish (FF) – This relationship is utilized when the completion of two activities should be linked together. The two activities may start at different times (again, depending on the duration of each activity), but the completion of the two activities is coordinated.
- Start-to-Finish (SF) – This relationship is seldom utilized (in 20+ years of using MS Project, I have never used a SF relationship).
In addition to establishing the relationship, predecessors and successors can be utilized to create leads (acceleration or overlap) and lags (delays or gaps) between schedule activities. Here are a couple examples of the appropriate use of lags and leads in the project schedule:
- Lead: The technical design can be started after 75% of the requirements definition effort is completed. If the requirements represents a dedicated effort that will be completed over a 20 day period. The predecessor in MS Project for the start of the technical design would be reflected as: (n)FS-5D (where (n) represents the task number associated with the requirements definition effort).
- Lag: The UAT test plans will be completed a week after the completion of the system test plans. The predecessor in MS Project for the UAT test plan would be reflected as: (n)FF+5D (where (n) represents the task number of the completion of the requirements effort).
Using MS Project to Establish Predecessors and Successors
Dependencies are created in MS Project using the Predecessor and Successor fields. The Predecessor is the task completed “prior to” the current task, and the Successor is the task completed “after” the current task. The dependency is entered with the ID of the Predecessor or Successor task, the Type of Dependency Relationship (FS, SS, FF, SF), and the Lag(+)/Lead(-) between the two tasks.
Below is an example of creating Predecessors and Successors within the MS project schedule.
Using the Predecessors & Successors Split view provides a good picture of the dependencies established for each task.
4 Tips for Effective Use of MS Project to Manage Dependencies
- Using Date Constraints – The most important take-away from this discussion is that establishing dependencies is the key to creating a logical flow (organization) of work within the project schedule. A “worst” practice is to hard wire dates (e.g., must start on, or must finish on date constraints) within the project schedule. As things change (and they inevitably will change) with regards to how the work is actually completed, these arbitrary date constraints quickly become inaccurate and difficult to maintain. They will impact not only the accuracy of the specific schedule activity, but also the accuracy of any subsequent dependent schedule activities.
- Using Summary Tasks for Dependencies – Another thing to avoid is linking dependencies to the summary tasks. During the first cut of creating the schedule, it may seem like a good shortcut if multiple activities are tied to the same set of activities, but ultimately this practice results in a schedule that is difficult to understand and maintain. All activities should be linked to specific activities, and not to summary tasks.
- Look for Activities without Predecessors or Successors – Activities should have both a predecessor and a successor, unless they truly represent the beginning or end of a project (or string of standalone activities within the project).
- Fully Leverage Dependency Relationship Capabilities – Dependency relationships (and leads/lags) are an aspect of creating a project schedule that should be well understood by the PM, and fully utilized. A project schedule that contains all FS relationships, and no leads/lags, is generally an indication that not a lot of effort has been put into understanding the activity dependencies, or the flow of the project work.