Keywords

1 Introduction

In most simple terms, project scheduling means the planned dates for performing activities and the planned dates for meeting milestones. It is a plan of procedure, usually written for a proposed objective, specially, with reference to the sequence of activities satisfying certain constraints such as the precedence relations and resource constraints and time allotted for each activity or operation necessary to its completion. PERT and CPM have been the most basic tools used for project scheduling for years. Considering the probabilistic time durations, the longest path (called the critical path) in the network of activities is determined which marks the project duration. The critical path however does not recognize the resource constraints. Considering the role of resource constraints in a practical project schedule, Goldratt in 1997 introduced the concept of critical chain project management (CCPM).

1.1 PERT/CPM

PERT was devised in 1958 for the POLARIS missile program by the Program Evaluation Branch of the Special Projects office of the U.S. Navy, helped by the Lockheed Missile Systems division and the Consultant firm of Booz-Allen and Hamilton [1]. One key element to PERT’s application is that three estimates are required because of the element of uncertainty and to provide time frames for the PERT network. These three estimates are classed as optimistic, most likely and pessimistic time durations, and are predicted for each activity of the overall project. Generally, the optimistic time estimate is the minimum time the activity would take, considering that all goes right the first time. The reverse is the pessimistic estimate, or maximum time estimate for completing the activity. This estimate takes into account Murphy’s Law, i.e., whatever can go wrong will and all possible negative factors are considered when computing this estimate. The third is the most likely estimate, or the normal or realistic time an activity requires. It lies anywhere in the interval \((a,b)\), where a represents the optimistic time and b represents the pessimistic time. Two other elements that comprise the PERT networks are the path, or critical path, and slack time. The critical path is a combination of the critical activities, i.e., the activities which if delayed, would delay the project.

The primary goal of a CPM analysis of a project is the determination of the critical path, which determines the completion time of a project [2, 3]. However, the schedule defined by CPM does not consider the resource constraints, hence giving rise to the development of the theory of critical chain.

1.2 CCPM

In 1997, Dr. Eliyahu Goldratt introduced a new significant approach to project management, in over 30 years, with the publication of his best selling business novel, Critical Chain [4]. Critical chain is the theory of constraints (TOC) philosophy for project management which is considered an innovation that would be useful to organizations [5, 6]. Goldratt’s approach introduced a new era in the world of project management by merging, for the first time, both the human side and the algorithmic methodology side of project management in a unified discipline. It considers factors such as

  • Parkinson’s Law: Work expands to fill the available time.

  • Student Syndrome: People start to work in full fledge when deadline is near.

  • Bad Multitasking: Bad multitasking can delay start of the successor tasks.

As the activity duration is defined, the project manager tends to keep some safety time in the duration of each activity which increases the project duration unnecessarily and as suggested by Parkinson’s Law, each activity consumes all the duration allotted to it. Considering this, it is suggested in CCPM to cut the duration in every activity so as to minimize this wastage. However, buffers are added at specific stages of the project so that any delay in any of the activities does not affect the total project duration. Various methods have been proposed to manage buffer sizing. The C&P, i.e., Cut and Paste Method and RSE, i.e., Root Square Error Method are the most traditional ones. Xie et al. suggested improved root square error (IRSE), a method based on critical chain theory for buffer sizing majorly suitable for software projects and the results claim to have a direct effect in shortening the project duration [7]. Tukel et al. suggested two methods for determining feeding buffers, one incorporates resource tightness while the other uses network complexity resulting in smaller buffer sizes [8]. Fuzzy numbers have also been used in methods to determine the project buffers [9]. It has been observed that through Critical Chain Project Management, projects are completed in significantly shorter time than traditional Critical Path project management techniques. Importantly, Critical Chain Project Management is also simpler to use and requires less work for the project team in both the planning and tracking phases of project [10]. Bevilacqua et al. applied the Theory of Constraints and Risk Assessment to develop a prioritization method for Work Packages, using the critical chain concept and concluded that the proposed method allowed the company to maximize the quality and safety of work and minimized the turnaround time and cost [11].

Another important aspect of CCPM is to start each activity at the latest possible starting time. This helps the project manager gain experience on the project till the time the activity starts and also reduces the WIP time. However it is argued that this makes each activity critical. But the presence of buffers compensates any delays in the activity completion. The following steps are used to modify the critical path into the critical chain [8].

  1. Step 1.

    Reduce duration of each activity by 50 %.

  2. Step 2.

    Push all the tasks to as late as possible subject to the precedence relations.( i.e., determine the late finish network).

  3. Step 3.

    Eliminate the resource constraints by resequencing the tasks. Though Goldratt has not offered any specific procedure to resolve resource constraints this has given rise to a research problem marked as RCPSP (Resource constraint Project Scheduling Problem) and a lot of research has been done on these problems.

  4. Step 4.

    Identify the critical chain as the longest chain of dependent events for feasible schedule that was identified in step 3.

There could be ties in longest chain, in that case an arbitrary choice can be made between them [12].

  1. Step 5.

    Add the project buffer to the end of the critical chain.

  2. Step 6.

    Add the feeding buffers wherever a noncritical chain feeds the critical chain and offset the tasks on the feeding chain by the size of the buffer.

2 Buffers

The reduction of activity durations by 50 % as suggested by Goldratt is compensated by the insertion of buffers at various stages of the project. A buffer is a cushion provided at different stages of a project schedule so as to absorb the delays that occur during the execution of the project up to a maximum possible extent. In the development of the project plan the duration of each activity will be coupled with a lot of security time. Even if a task is ahead of schedule, the security time will not accumulate to the next activity. This problem is tackled by the use of buffers. CCPM suggests that duration of each activity is halved and the duration trimmed from each activity is accumulated and added at the end of the project as project buffer and at various other stages in the form of feeding buffer and resource buffer. A project buffer is inserted to protect the project delivery date. Resource buffers are inserted at every point where work passes from one resource to another on the critical chain. Feeding buffers are inserted to protect the critical chain from delays in the noncritical chain. [13] suggested that the project buffer size is the more appropriate robustness measure regardless of the network complexity.

3 The Placing of Buffers

This paper suggests that whenever the project duration is forced ahead because of the insertion of a feeding buffer (Fig. 1b), there is a void or a gap created in the critical chain. In such a case a part of the project buffer is suggested to be removed from the project buffer and inserted at this point (Fig. 1c), since the activities before this point have got extra time and any delays can be absorbed by this extra time and same is the role of a buffer. This part of the critical chain has got its share of the protection at this point only and hence the project buffer placed in the end of the project need not contribute to its protection. Hence this part of the project buffer is taken out and placed in the gap created in the critical chain. The contribution of project buffer to this part of the chain is given by:

$$\begin{aligned} { PB}_{i} = \frac{{\mathop \sum \nolimits _{{j \in C_{i} }} t_{j} }}{T}({ PB}) \end{aligned}$$
(1)

where \({ PB}_{{i}}\) is \(i\)th part of the project buffer; \(C_{i}\) is the set of activities in \(PB_{{i}}\); [\(t_{j}\) is the duration of activities; \(T\) is the project duration, i.e., length of the critical chain and PB is the project buffer duration.

If the buffer required by part of the critical chain preceding the gap is less than the gap, the part of project buffer can fit into it. This would decrease the project duration by \( \mathop \sum \nolimits _{i} PB_{i}\). Else the project would be reduced by difference between the gap and the slack.

Fig. 1
figure 1

Use of buffers

4 Numerical Example

The validation of the procedure suggested in Sect. 2 is done here through a numerical example. Consider the project scheduling problem as given in Table 1.

Table 1 Numerical example

Table 2 shows the results obtained.

Table 2 Results of the numerical example

4.1 Results from the Numerical Example

The critical chain is \(A\rightarrow E\rightarrow I\rightarrow K\rightarrow M\rightarrow N\). The feeding chains are \(A\rightarrow B\rightarrow G\rightarrow K, A\rightarrow C\rightarrow K, A\rightarrow F\rightarrow K\), etc. Feeding chains are joining the critical chain at activity \(K\) and \(N\). The corresponding feeding buffer sizes are shown in Table 2. Buffer size for the feeding chain \(A\rightarrow B\rightarrow G\) is greater than the slack of activity G. Hence the next activity on the critical chain, i.e., activity K is shifted by (34.38749773-8) 27 units (approximately). Hence there exists a gap of 27 units in the critical chain. Hence a part from the project buffer which is the share of the \(\mathbf {A\rightarrow E \rightarrow I}\) part of the critical chain given by (1) is added in this gap. If this share is less than the gap, the final project duration is reduced by these many units of time. Similarly share of buffer for the part \(K \rightarrow M \rightarrow N\) of the critical chain is added after activity \(N\), i.e., as the project buffer.

Directly adding the project buffer would have increased the project duration by nearly 49.4873 units of time while using the suggested procedure where the project duration is increased by nearly 24 units only.

Also since the buffer consumption is less than 100 % for all the buffers the schedule is stable. The buffer consumption rate is calculated using the formula \((a+b-e)/b\) where \(a\) is the most likely time of activity duration, \(b\) is the buffer size and \(e\) is the estimated duration which is calculated using the Beta distribution.

5 Conclusion

The suggested procedure reduces the project duration while maintaining the project stability. The division of the project buffer into parts and each part being used at the gap which otherwise was being wasted has reduced the project duration. Since the buffer is only reshuffled and not reduced, there is no harm to the stability.