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 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:
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:
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.