CPM: критический путь

CPM (Critical Path Method, метод критического пути) отвечает на вопрос: если задачи связаны зависимостями, за сколько реально завершится вся работа — и какие задачи нельзя задерживать ни на день.

Идея простыми словами

Задачи редко независимы: одна блокирует другую (нельзя тестировать то, что ещё не написано). Если нарисовать задачи узлами, а зависимости — стрелками, получится сеть. Срок всего проекта определяется самой длинной цепочкой в этой сети — она и называется критическим путём.

        ┌──► B (3д) ──┐
  A (2д)─┤             ├──► D (2д)
        └──► C (5д) ──┘
  критический путь: A → C → D = 9 дней (у ветки B резерв 2 дня)

Здесь A→C→D = 2+5+2 = 9 дней — это и есть срок. Ветка B короче (3 дня против 5 у C), поэтому у неё есть запас: B можно начать позже или затянуть на 2 дня, и общий срок не сдвинется.

Ранние и поздние сроки, резерв

CPM считает для каждой задачи два прохода по сети:

  • Прямой проход (forward pass) — самое раннее, когда задача может начаться и закончиться (ES / EF), исходя из предшественников.
  • Обратный проход (backward pass) — самое позднее, когда она может начаться и закончиться, не сдвигая финал (LS / LF).

Резерв (slack) = LS − ES. У задач на критическом пути резерв равен нулю — любая их задержка двигает весь срок. В Такте это реализовано: forward/backward pass, извлечение критической цепочки и резерв каждой задачи считаются напрямую по сети.

Как строится сеть в Такте

Сеть собирается из зависимостей между задачами оставшихся (ещё не закрытых) задач активного спринта. Длительность каждой задачи — не выдуманное число, а оценка по PERT, выведенная из истории команды. То есть CPM в Такте работает не на «пальцевых» оценках, а на данных.

Где увидеть

Карточка «Сетевой прогноз · CPM + PERT» на вкладке «Спринты»: критический путь подсвечен, у каждой задачи показан резерв, а по кнопке «Показать сеть» разворачивается сам граф зависимостей.

Карточка «Сетевой прогноз» на вкладке «Спринты».
Граф сети по кнопке «Показать сеть»: узлы — задачи, стрелки — зависимости, оранжевым — критический путь.

Оговорка: сеть имеет смысл, только когда между задачами проставлены зависимости. Если их нет, «сеть» вырождается в набор несвязанных точек, и критического пути как такового нет — это нормально, просто CPM в таком спринте нечего показывать.