Manage Dependencies — DSM

-- Vivek Prakash


Managing Dependencies is so important that I would like to continue the discussion on this topic. I discussed in my last post about two parts of managing dependencies. The first identifying the dependencies and second is managing them using MS Project. In this post I will discuss the first part that is identifying dependencies in a bit detail.

Until you have identified the dependencies correctly, managing them would be bit difficult as you may get stuck someplace waiting for an input which you failed to identify. How to identify dependencies or relationship among various activities or components in an structured manner that can ensure that you have not left any relationship from identifying correctly? I mentioned about DSM in my last post. DSM stands for Dependency Structure Matrix or Design Structure Matrix. This matrix is developed by MIT (Massachusetts Institute of Technology)

The DSM method is an information exchange model that allows the representation of complex task relationships in order to determine a sensible sequence for the tasks being modeled.

A DSM is a matrix representation of a network. The matrix layout is as follows: the system elements names are placed down the side of the matrix as row headings and across the top as column headings in the same order. A DSM of 12 activities (from A to L) is displayed in the Fig.1 with activities A to L on both rows and columns. Whenever an activity in a row depends upon an activity in column, we place a 1 in the common square. For example a 1 in 1st row & 3rd column shows that A depends upon C and a 1 in 8th row and 4th column …


…  shows that H depends upon D and so on.

If the order of elements in the matrix depict a time sequence, then marks below the diagonal (Red 1s)represent information transfer to later (i.e. downstream) tasks. This kind of mark is called forward mark or forward information link. Marks above the diagonal (Green 1s) depict information fed back to earlier listed tasks (i.e. feedback mark) and indicate that an upstream task is dependent on a downstream task. As per matrix given in the Fig.1, activities A & B are independent and activities J & L are interdependent.

To simplify the matrix, we do partitioning. In partitioning, the matrix is manipulated in order to eliminate or reduce the feedback marks (Green 1s above the diagonal). Once partitioning is done, feedback loops that feeding the earlier task are minimized. Refer Fig.2. We can see which tasks are sequential, which ones can be done in parallel, and which ones are coupled or iterative. Tasks in series are identified and executed sequentially. Parallel tasks can be executed concurrently. For the coupled ones, either do an iterative planning or allow only one group or single resource to work upon them. Giving them to different people/group without proper planning may lead to high degree of communication or can also be chaotic.

Doing this work manually could be challenging. Good news is that you need not to do this manually. Some commercial and non-commercial tools are available on You can use them to resolve dependencies in your project. On, you can also read more about this tool.