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 в таком спринте нечего показывать.