# Dependency (project management)

In a project network, a dependency is a link among a project's terminal elements.
The A Guide to the Project Management Body of Knowledge (PMBOK Guide) does not define the term dependency, but refers for this term to a logical relationship, which in turn is defined as dependency between two activities, or between an activity and a milestone.

## Standard types of dependencies

There are four standard types of dependencies:
* Finish to start (FS)
** A FS B means "activity A must finish before activity B can begin" (or "B can't start until A has finished").
** (Foundations dug) FS (Concrete poured)
* Finish to finish (FF)
** A FF B means "activity A must finish before activity B can finish" (or "B can't finish before A is finished") .
** (Last chapter written) FF (Entire book written)
* Start to start (SS).
** A SS B means "activity A must start before activity B can start" (or "B can't start until A has started").
** (Project work started) SS (Project management activities started)
* Start to finish (SF)
** A SF B means "activity A must start before activity B finishes" (or "B can't finish until A has started")
** (New shift started) SF (Previous shift finished)
Finish-to-start is considered a "natural dependency". The Practice Standard for Scheduling recommends, that "Typically, each predecessor activity would finish prior to the start of its successor activity (or activities)(known as finish-to-start (FS) relationship). Sometimes it is necessarily to overlap activities; an option may be selected to use start-to-start (SS), finish-to-finish (FF) or start-to-finish (SF) relationships....Whenever possible, the FS logical relationship should be used. If other types of relationships are used, they shall be used sparingly and with full understanding of how the relationships have been implemented in the scheduling software being used. Ideally, the sequence of all activities will be defined in such a way that the start of every activity has a logical relationship from a predecessor and the finish of every activity has a logical relationship to a successor".
SF is rarely used, and should generally be avoided. Microsoft recommends to use SF dependency for just-in-time scheduling. It can be easily shown however, that this would only work if resource levelling is not used, because resource levelling can delay a successor activity (an activity, which shall be finished just-in-time) in such a way, that it will finish later than the start of its logical predecessor activity, thus not fulfilling the just-in-time requirement.
There are three kinds of dependencies with respect to the reason for the existence of dependency:
* Causal (logical)
** It is impossible to edit a text before it is written
** It is illogical to pour concrete before you dig the foundations of a building
* Resource constraints
** It is logically possible to paint four walls in a room simultaneously but there is only one painter
* Discretionary (preferential)
** I want to paint the living room before painting the dining room, although I could do it the other way round, too
Early critical path-derived schedules often reflected only on causal (logical) or discretionary (preferential) dependencies because the assumption was that resources would be available or could be made available. Since at least the mid-1980s, competent project managers and schedulers have recognized that schedules must be based on resource availability. The critical chain method necessitates taking into account resource constraint-derived dependencies as well.

### Leads and lags

Dependencies can be modified by leads, and lags. Both leads and lags can be applied to all 4 types of dependencies.
PMBOK defines lag as "the amount of time whereby a successor activity will be delayed with respect to a predecessor activity".
For example: When building two walls from a novel design, one might start the second wall 2 days after the first so that the second team can learn from the first. This is an example of a lag in a Start-Start relationship.
In accordance to PMBOK a lead is "the amount of time whereby a successor activity can be advanced with respect to a predecessor activity For example, on a project to construct a new office building, the landscaping could be scheduled to start prior to the scheduled punch list completion. This would be shown as a finish-to-start with two-week lead".

## Example

If you are building a building, you can't paint the walls before installing the water pipes into the walls.

## Advanced cases of activities dependencies
### Maximal-type relationships

Activity A and Activity B are said to have a Maximal-Type Relationship, if Activity B can start after Activity A, but with the delay of no more than X. Real life examples, which are simulated by Maximal-Type Relation:
* Shoring of the trench has to be done not necessarily immediately after excavation, but within certain time, otherwise the trench will collapse.
* Vaccination of baby has to be done not immediately after birth, but within certain time
* Renewal of the passport has to be done some time after the current one has been issued, but before it expires.
* Invoice payment does not have to be done immediately, but within certain time after it has been issued.
Maximal-type relationships are rarely implemented in the project management software, most probably because with this feature it is too easy to create contradictory dependencies.