As a developer, I sometimes come across the term 'Critical Path' in the context of development execution. From wikipedia I know it has to do with identifying the necessary tasks that must be completed in a project.
Is my understanding correct?
What is the best definition of Critical Path you have encountered? How would identify the Critical Path when planning a project?
I'm not sure if it's the best definition, but it's certainly one of the most succinct:
The sequence of dependent steps that determine the minimum time needed to carry out an operation
another, slightly longer one, and in the context of project management (similar to the Wikipedia article that you linked to):
The path through a series of activities, taking into account interdependencies, in which the late completion of activities will have an impact on the project end date or delay a key milestone (there may be more than one critical path)
Your understanding is correct, and the first step to identifying the critical path through a given project, would be to firstly actually define all of the individual steps required to complete the project, then to examine each and every "step" to determine just how dependent/important that step is to both other steps in the project as well as the project overall.
Let's say I want to paint a wall. The steps might be (this is an intentionally simplified example):
- Buy some paint
- Buy some paint brushes
- Paint the wall
Well, given that the end result would be a nice, freshly painted wall, the first step here (Buy some paint) is absolutely critical to the whole thing. If I can't achieve that, everything else stops. Also, every step after that is entirely dependent upon step 1 having been completed previously. Therefore, in this (admittedly contrived) example, the first step in the critical path is buying some paint.
Conversely, Step 2 is important for a good paint job but could potentially be omitted if I just throw the paint at the wall!
For an Application:
The critical path is the sequence of activities (out of all the possible sequences within the application) which add up to the longest overall duration, and thus is the first target for optimisation.
For a Project:
The critical path is the sequence of project activities which add up to the longest overall duration. This determines the shortest time possible to complete the project.
Project is divided into tasks such as coding, testing. Most tasks depend on each other. For instance, testing depends on coding to be completed. Some other tasks can be run in parallel.
Let's say you have a mini project to write a customer management system. You could roughly devide it into three tasks:
- Coding UI - 5 days
- Coding backend - 7 days
- Integration of UI and backend - 2 days
If you did all of the task sequentially, the project would have taken 5 + 7 + 2 = 14 days.
Let's assume now that UI and backend coding could be done in parallel, so you can assign two developers to work at the same time. However, the integration depends on both task completed.
How long would the project take?
- UI coding starts on day 1, ends on day 5
- Backend coding starts on day 1, ends on day 7
- Integration can only start on day 8, when both UI and backend are completed, and will end on day 10.
Now, you can see, that if UI coding started on day 3, instead of first day it wouldn't actually affect the overall project deadline, because it would complete then on day 7 in time for integration to start. This is called slack, UI coding has a slack of 2 days.
On the contrary if backend coding was delayed, it would have delayed overall schedule by the same amount of days. The task does not have any slack in the schedule.
Backend coding and integration together form project's critical path: if any of the tasks is delayed, the project delivery will be delayed as well.
Project critical path can be defined is either a sequence of dependent tasks necessary to complete the project resulting in the largest duration, or alternative definition, the sequence of dependent tasks necessary to complete the project that have no slack.
Needless to say if a task lies on the critical path it's paramount that it is delivered on time, otherwise, the schedule is going to drift, increasing costs.
Tasks that are not on the critical path are permitted to have variation in duration or start time as long as it doesn't exceed the slack, otherwise they become part of the critical path themselves.
The critical path is the line of dependent tasks that, if there is a time shift in one of these tasks, will postpone the whole project.
What do I mean by that:
If you have tasks a,b,c,d. A and b have to be done before c can start. D is not pependent on any other task. A takes longer to finish then b, and a and c together take longer to finish then d, [a,c] is the critical path.
Optimizing this path will shorten your project.
It will be good practice to whatch activities on the critical path closely.
I would say that if a task is part of a project, then all must be completed.
My understanding of "critical path" has more to do with dependencies. It's the task with the most dependencies, the greatest risk, the one that will cause the most other tasks to fail if it's not completed. It might be the longest lead time task, so it has to be planned and started early enough to guarantee sufficient time to complete the rest.
An activity of a project is on the critical path if any delay for this activity causes a delay on the project as a whole.
The critical path is the one that has no slack.
When project tasks are split between the members of the team, there will be one (or two) people who don't have any slack time between tasks or at the end of the project. As a delay in any of these tasks will cause a delay in the whole project these people are said to be on the critical path.
For example (a 2 person 4 task project):
Person A
Task 1-----|
|-Task 3----|
Person B
Task 2---|
|-Task 4---|
Person A is on the critical path. A delay in task 1 or 3 will delay the entire project, while a delay in task 2 or 4 won't (unless it's a major delay of course!).
To mitigate this:
- Rearrange the tasks to allow people to finish together. This isn't always possible due to task dependencies and you don't really want to put every body on the critical path.
- Add more contingency to the project so that even the person on the critical path as some leeway.
The sequence of critical dependent tasks to determine the time needed.
Also this term is widely used in mainframe batch cycle. Determine the critical path to optimize the batch cycle. The exercise is to remove the non critical batch jobs from dependencies so that optimized critical path is determined which in turn reduces the batch window time.
Critical Path in project management lets you react to, and plan for tasks that must be completed sequentially (‘zero float tasks’), as well as tasks (called ‘float’) that can be completed almost anytime during the project.
Leonard Davis OnePlan.io
Imagine a project composed of many many tasks with dependencies between them (eg A must be complete before B can begin, C must start after D starts, etc). The critical path is the set of tasks for which any increase in duration affects project duration. So, if task C is on the CP and takes 2 days too long, the project is delayed 2 days. In complex projects it can be very difficult to determine the CP, and there are likely to be many tasks not on it. Watch out, though, for tasks not on the CP but which move themselves onto it as the project unfolds -- the CP is dynamic not static.
来源:https://stackoverflow.com/questions/1176634/what-is-critical-path