Метод критического пути (Critical Path Method, CPM) — способ планирования проекта, который по сети работ и их длительностям находит самую длинную цепочку зависимых работ: именно она определяет минимальный срок проекта. Работы на этой цепочке не имеют запаса времени, любая задержка сдвигает завершение, а остальные работы имеют резерв (float), который можно использовать для выравнивания загрузки. Метод придумали в 1956–1959 годах Джеймс Келли (Remington Rand Univac) и Морган Уокер (DuPont) для планирования остановок и ремонтов химических заводов, а описали в статье «Critical-Path Planning and Scheduling» на Восточной объединённой компьютерной конференции в декабре 1959 года. В этой статье — как метод устроен по первоисточнику, как он связан с PERT и компромиссом «время — стоимость», как построить сеть и как не превратить расчёт в красивую, но бесполезную диаграмму, а также как использовать фрейм OrgDevTools.
Что такое метод критического пути и когда он нужен
Руководитель, пытающийся ускорить сорванный проект, часто добавляет ресурсы на задачу, у которой есть двухнедельный запас: срок проекта от этого не меняется. Метод критического пути отвечает на вопрос, что именно определяет срок. Он превращает список задач в сеть зависимостей, считает самые ранние и самые поздние моменты начала и окончания каждой работы и выделяет работы с нулевым резервом — критические.
Метод полезен, когда работ много, между ними есть зависимости и важен срок: строительство, ремонт и остановка производства, запуск продукта, ИТ-проект, организационное изменение. Он мало помогает там, где работа не поддаётся декомпозиции на задачи с оценкой длительности или где главным ограничением являются ресурсы, а не последовательность. Смежные методы: PERT, диаграммы Ганта, управление освоенным объёмом (EVM), расчёт Lead Time и извлечённые уроки.
Происхождение и исследовательская база
По воспоминаниям и историческим обзорам, в 1956 году Джеймс Келли-младший (Remington Rand) и Морган Уокер (DuPont) начали разрабатывать алгоритмы планирования проектов в DuPont, опираясь на опыт компании, накопленный в проекте «Манхэттен». Программа была впервые опробована на остановках заводов в 1957 году; первую статью о планировании по критическому пути они представили в декабре 1959 года на Eastern Joint Computer Conference в Бостоне (Proceedings, с. 160–173). Название метода выбрано из-за центральной роли критических работ, а сам термин «критический путь» Келли связывал с командой, разрабатывавшей PERT для ВМС США примерно в те же годы.
Оригинальная статья — не только про длинный путь. Это метод сокращения проекта с учётом стоимости: авторы показали, как связать длительность каждой работы с её стоимостью и построить кривую стоимости проекта. Эти идеи развились в целую линию методов планирования, а сеть работ стала основой большинства программ для управления проектами. Ниже — рерайт первоисточника.
Управление вправе выбирать длительность каждой работы в пределах ограничений по ресурсам и технологии; каждый набор длительностей даёт другой график и другой срок проекта.
Академическая теория: как устроен метод критического пути
Сеть работ: события, работы и зависимости
В оригинале проект представлен диаграммой из стрелок и событий: стрелки — работы (jobs), события — моменты начала и окончания. События нумеруют так, чтобы номер события в конце стрелки был больше номера в начале; у проекта есть начальное событие (номер 0) и конечное (номер n). Построение диаграммы, отражающей технологические зависимости между работами, авторы называют почти тривиальным — но именно оно требует участия команды, потому что ошибка в зависимостях искажает все расчёты. Сегодня чаще используют «узловое» представление (работа — узел), а в фрейме OrgDevTools задачи и предшественники задаются таблицей.
Прямой и обратный проход: самые ранние и самые поздние сроки
Для каждого события вычисляют самое раннее время наступления (проход от начала: максимум по всем предшествующим цепочкам) и самое позднее время (проход от конца проекта при заданном сроке завершения: минимум по последующим работам). Из этих величин для каждой работы получают самое раннее и самое позднее начало и окончание и два вида резерва: полный (total float — насколько можно сдвинуть работу, не сдвигая завершение проекта) и свободный (free float — насколько можно сдвинуть, не задевая последующие работы). Критические работы — те, у которых полный резерв равен нулю; их цепочка и есть критический путь. Если при заданном сроке проекта срок завершения совпадает с самым ранним возможным, то критический путь совпадает с самой длинной цепочкой.
Критические работы — лишь малая часть проекта
Авторы отмечают наблюдение из практики остановок заводов: критическими оказывается только около 10 % работ. Остальные имеют резерв, и это позволяет принимать неожиданные объёмы работ «в резерв», не срывая срок. Практический вывод: внимание руководителя должно быть сосредоточено на небольшой доле работ, а для остальных полезно управлять резервом — выравнивать загрузку, переносить сроки, экономить ресурсы.
Компромисс «время — стоимость»
Главная идея оригинальной статьи — связь длительности работы и её прямой стоимости. У каждой работы есть нормальная длительность (обычная стоимость) и минимально возможная, «ударная» (crash) длительность, за пределами которой быстрее сделать нельзя, и стоимость при ускорении обычно растёт; зависимость близка к выпуклой кривой. Сокращая проект, ускоряют только критические работы, причём выбирают те критические работы, ускорение которых повышает стоимость проекта с наименьшей скоростью; по мере сокращения срока критическими становятся всё новые работы, и набор ускоряемых работ меняется. Так получают спектр графиков, каждый из которых имеет минимальную прямую стоимость при своей длительности; вместе они образуют кривую стоимости проекта. Кривую сопоставляют с косвенными затратами (накладные расходы, штрафы за задержку) и с потерями от упущенной рыночной возможности, чтобы выбрать срок, минимизирующий затраты или максимизирующий отдачу.
Авторы описывают, как определялись исходные данные: нормальные длительности оценивали по опыту команды и обычному составу бригад, нормальную стоимость брали из строительных смет, ударные длительности — с учётом максимально разумного увеличения числа людей при ограничении рабочей недели, а стоимость ускорения включала надбавку за тесноту на площадке. Затем через данные проводили прямую, получая функцию стоимости работы. Расчётом кривой стоимости занималась линейная параметрическая оптимизация.
CPM и PERT
Одновременно ВМС США разрабатывали PERT (Program Evaluation and Review Technique). Различие: в PERT длительность работы — случайная величина, для неё собирают оптимистичную, наиболее вероятную и пессимистичную оценки и вычисляют математическое ожидание и дисперсию; CPM изначально детерминирован и рассматривает управляемый компромисс времени и стоимости. Келли и Уокер критически оценивали PERT: использование ожидаемых длительностей вместо полного распределения смещает рассчитанные события в сторону начала проекта, а вероятностные оценки, возникающие в PERT, трудно оценить из-за грубых приближений и расчёта поздних сроков «назад» от фиксированного срока. Позднее методы сблизились, и сегодня их часто объединяют под названием «сетевое планирование».
Допущение о ресурсах и последующие развития
Базовое допущение CPM — ресурсов достаточно для реализации любого рассчитанного графика. Авторы признают, что во многих случаях допущение нереалистично, и рассматривают расширения: проект использует все доступные ресурсы или ресурсы делят несколько проектов. Позднее эту проблему углубили: критическая цепь Голдратта (1997) явно учитывает ресурсные ограничения и буферы, а методики освоенного объёма связывают график со стоимостью.
Ключевые идеи и принципы метода критического пути
Принцип: срок определяет самая длинная цепочка
Сумма длительностей всех задач не равна сроку проекта: работы, которые можно вести параллельно, не удлиняют его. Срок равен длине самой длинной цепочки зависимых работ — критического пути.
Принцип: у критических работ нет запаса
Задержка любой критической работы сдвигает завершение. Поэтому ускорять проект имеет смысл только за счёт критических работ; ресурсы, добавленные на работу с резервом, срок не меняют.
Принцип: резерв — ресурс управления
Некритические работы можно сдвигать в пределах резерва: выравнивать загрузку, ждать поставку, принимать неожиданные объёмы. Но резерв не бесконечен, и по мере задержек критический путь может смениться.
Принцип: путь меняется
Как отмечают авторы, при сокращении срока всё больше работ становятся критическими. Поэтому расчёт нужно повторять при изменении длительностей и зависимостей, а не считать один раз.
Принцип: время и стоимость связаны
Сократить срок можно за деньги: ускорить критические работы — там, где рост стоимости минимален. Выбор срока — компромисс между прямыми затратами, накладными расходами и ценой опоздания.
Принцип: качество расчёта определяется исходными данными
Алгоритм прямого и обратного прохода точен, но результат зависит от оценок длительностей и полноты зависимостей. Пропущенная зависимость или заниженная оценка обесценивают картину.
Как построить критический путь: пошаговая инструкция
Практическая последовательность такая. Разбейте проект на работы (задачи) так, чтобы каждая имела результат и оценку длительности; для крупных проектов используйте иерархическую структуру работ. Определите зависимости: какие работы должны завершиться до начала каждой; проверьте, что нет циклов. Оцените длительности силами исполнителей, а не только руководителя; для неопределённых работ используйте диапазон или трёхточечную оценку. Выполните прямой проход: самое раннее начало работы равно максимуму окончаний её предшественников, самое раннее окончание — начало плюс длительность. Определите срок проекта как максимум окончаний. Выполните обратный проход: самое позднее окончание работы равно минимуму поздних начал её последователей, для последних работ — сроку проекта. Рассчитайте резерв как разность позднего и раннего начала и выделите работы с нулевым резервом. Назначьте владельцев критических работ и заведите регулярный контроль; для остальных определите порог резерва, при котором работа переходит в зону внимания. Пересчитывайте сеть при каждом существенном изменении.
Учебный расчёт
Пример из шаблона фрейма (условные данные). Работы: A «Сбор требований» — 3, B «Проектирование» — 5 (после A), C «Разработка модуля B» — 8 (после B), D «Тестирование модуля A» — 4 (после B), E «Интеграция» — 3 (после C и D). Прямой проход: A — 0–3; B — 3–8; C — 8–16; D — 8–12; E начинается после самой поздней из предшественниц, то есть после C, и идёт 16–19. Срок проекта — 19. Обратный проход: E — 16–19; C — 8–16; D — позднее окончание 16, позднее начало 12; B — 3–8; A — 0–3. Резерв D равен 12 − 8 = 4, у остальных работ он равен нулю. Критический путь — A → B → C → E. Вывод: ускорить проект можно только за счёт работ A, B, C или E; добавление людей на тестирование D срок не изменит, но резерв 4 позволяет сдвинуть D или выполнить её меньшими силами.
Пример из практики: остановка завода DuPont в Луисвилле
В статье Келли и Уокера описан реальный пилот в DuPont — планирование остановки и ремонта химического завода в Луисвилле. Авторы сообщают, что перед каждой остановкой из библиотеки типовых графиков выбирали подходящий, поскольку неожиданные работы можно было поглотить за счёт резервов некритических работ (только около 10 % работ в остановке критические). По их оценке, применение в Луисвилле окупило всю разработку метода в пять раз за счёт высвобожденной дополнительной производственной мощности — тысяч фунтов продукции; метод начали внедрять в службах технического обслуживания DuPont. Оговорка: это самоотчёт авторов метода в публикации 1959 года, а не независимая оценка; цифры окупаемости не проверялись сторонними исследователями.
Ограничения, слепые зоны и критика метода критического пути
Первое ограничение — допущение о ресурсах: базовый CPM считает, что ресурсов достаточно для любого графика, тогда как на практике сроки определяют людей, оборудование и бюджеты. Второе — детерминированные оценки: единственная длительность на работу скрывает неопределённость; как отмечали сами авторы в разборе PERT, ожидаемые длительности смещают расчёт, а вероятностные утверждения трудно оценить. Третье — зависимость от полноты сети: пропущенная зависимость или лишняя жёсткая связь искажают критический путь.
Четвёртое — динамика: путь меняется при задержках, а план, который не пересчитывают, устаревает. Пятое — иллюзия точности: сроки в днях создают ощущение надёжности, хотя основаны на оценках. Шестое — человеческий фактор: оценки часто включают запас на каждой работе, из-за чего запас «съедается» (эффект, который подробно анализирует критическая цепь Голдратта). Седьмое — метод плохо подходит для творческой, исследовательской работы с неопределённым составом задач. Наконец, критический путь показывает, что определяет срок, но не отвечает за качество, содержание работы и риски.
Типовые ошибки при работе с критическим путём
Ошибка 1: ускоряют работы вне критического пути.
Ресурсы добавляют на работу с запасом; срок не меняется, а расходы растут.
Как избежать
сначала определить критический путь и ускорять только его работы, начиная с наиболее выгодных по стоимости.
Ошибка 2: пропущены зависимости.
В сети нет части связей (поставки, согласования, доступ к оборудованию); критический путь кажется короче реального.
Как избежать
построить сеть вместе с исполнителями и проверить, что каждая работа имеет предшественника и последователя.
Ошибка 3: оценки длительностей даёт только руководитель.
Оценки оптимистичны или имеют скрытые запасы; исполнители не чувствуют ответственности.
Как избежать
собирать оценки у исполнителей и использовать диапазоны для неопределённых работ.
Ошибка 4: сеть строят один раз.
После задержек и изменений плана критический путь сменился, но команда следит за прежним.
Как избежать
пересчитывать сеть при существенных изменениях и после каждого этапа.
Ошибка 5: игнорируют ресурсные ограничения.
Сеть предполагает, что одни и те же люди делают две работы параллельно; график невыполним.
Как избежать
проверить загрузку ресурсов и при необходимости добавить искусственные зависимости или использовать методы с учётом ресурсов.
Ошибка 6: в каждую задачу закладывают запас.
Запас скрыт в оценках, расходуется до срока, а общий срок раздувается.
Как избежать
оценивать без скрытых запасов и формировать общий буфер проекта осознанно.
Ошибка 7: слишком крупные или слишком мелкие задачи.
Крупные задачи скрывают внутреннюю зависимость; сотни мелких превращают сеть в неуправляемую.
Как избежать
выбрать уровень детализации, на котором задачи можно оценить и контролировать, и агрегировать остальное.
Метрики: как оценивать план и его исполнение
Универсальных нормативов нет; фиксируйте динамику по своим данным:
Срок проекта: расчётная длительность и её изменение при пересчёте.
Доля критических работ: число работ с нулевым резервом к общему числу (авторы наблюдали около 10 % на остановках заводов).
Минимальный резерв: наименьший резерв среди некритических работ — близость к смене критического пути.
Точность оценок: отклонение фактических длительностей от плановых по критическим работам.
Выполнение критических работ: доля критических работ, завершённых в срок.
Смена пути: число раз, когда критический путь менялся, и причины.
Если ускорение не касается критического пути, срок проекта не изменится — деньги потрачены зря.
План внедрения метода критического пути по неделям
Неделя 1: работы и зависимости
Разбейте проект на задачи с результатом и оценкой, определите зависимости вместе с исполнителями и проверьте отсутствие циклов.
Неделя 2: расчёт
Выполните прямой и обратный проходы, найдите срок проекта, резерв и критический путь.
Неделя 3: управление
Назначьте владельцев критических работ, задайте порог резерва для зоны внимания и определите, за счёт чего можно ускорить проект.
Неделя 4: контроль и пересчёт
Сверьте план с фактом, пересчитайте сеть и проверьте, не сменился ли критический путь.
Далее: пересчитывайте сеть при существенных изменениях, ведите статистику точности оценок и используйте её в следующих проектах.
Как реализовать план критического пути с помощью фрейма «Critical Path Method» в OrgDevTools
Фрейм состоит из трёх вкладок: «Задачи», «Визуализация» и «Итоги». На вкладке «Задачи» вы вводите работы: идентификатор (одна заглавная буква), название, длительность и предшественников — идентификаторы через запятую. Фрейм сам выполняет прямой и обратный проходы и показывает ранние и поздние сроки и резерв каждой работы; задачи с резервом ноль отмечаются как критические. На вкладке «Визуализация» рисуется сетевая диаграмма: узлы расположены по раннему началу, стрелки показывают зависимости, критический путь выделен красным. Вкладка «Итоги» показывает вердикт с длительностью проекта и критическим путём и кнопку задачи «Взять под контроль задачи критического пути».
Неделя 1 — задачи: введите работы, длительности и предшественников (по умолчанию в шаблоне пять учебных задач A–E).
Неделя 2 — расчёт: посмотрите резервы и критический путь на вкладке «Задачи» и на диаграмме.
Неделя 3 — управление: создайте задачу на контроль критического пути с длительностью и цепочкой в описании.
Вердикт простой: если нет задач или длительность проекта равна нулю — предложение добавить задачи; иначе показываются длительность проекта, цепочка критического пути и число критических задач.
Чего фрейм не делает. Он реализует только базовую детерминированную схему: нет ресурсных ограничений, календарей, вероятностных оценок, связей типа «начало–начало» и задержек, нет кривой «время — стоимость» и ударных длительностей. Идентификатор — одна буква, поэтому крупные сети (более 26 задач) в нём не построить. Задачи с циклической зависимостью в расчёт не попадают и молча исчезают из результатов, а ссылки на несуществующие идентификаторы игнорируются — сеть нужно проверять самостоятельно. Фрейм предназначен для обучения расчёту, а не заменяет систему управления проектами.
Заполнили фрейм? Сохраните, чтобы не потерять
Книги и материалы по теме метода критического пути
Джеймс Келли-младший, Морган Уокер — «Critical-Path Planning and Scheduling» (Proceedings of the Eastern Joint Computer Conference, Бостон, декабрь 1959, с. 160–173). Первоисточник: сеть работ, резервы, время и стоимость, применение в DuPont.
Джеймс Келли-младший — «Critical-Path Planning and Scheduling: Mathematical Basis» (Operations Research, 1961). Математическое обоснование метода.
Элияху Голдратт — «Critical Chain» (1997). Развитие идей с учётом ресурсных ограничений и буферов.