Связи задач
Связи задач — это механизм организации взаимодействия между отдельными элементами (задачами, работами, этапами) в рамках проектного управления, планирования и систем автоматизации, определяющий логическую или временную зависимость их выполнения. Связи задач устанавливают порядок, в котором одни задачи должны быть завершены до начала других, или же указывают на отсутствие такой зависимости. Данный термин широко применяется в методологиях управления проектами (например, PERT, CPM, Agile), в программных продуктах для совместной работы (Trello, Jira, Asana, Microsoft Project) и в теории графов при моделировании процессов.
Типы связей задач
В зависимости от характера зависимости между задачами различают несколько основных типов связей, которые классифицируются по направлению и условию начала или окончания.
По направлению зависимости
Наиболее распространённая классификация основана на том, как завершение или начало одной задачи влияет на другую:
- Финиш-старт (FS, Finish-to-Start) — наиболее распространённый тип. Задача B не может начаться, пока задача A не будет завершена. Пример: «Строительство фундамента» (A) → «Возведение стен» (B). В большинстве проектных систем этот тип устанавливается по умолчанию.
- Старт-старт (SS, Start-to-Start) — задача B не может начаться, пока не начнётся задача A. При этом обе задачи могут выполняться параллельно. Пример: «Заливка бетона» (A) → «Уход за бетоном» (B) — уход начинается одновременно с заливкой.
- Финиш-финиш (FF, Finish-to-Finish) — задача B не может завершиться, пока не завершится задача A. Пример: «Прокладка кабеля» (A) → «Монтаж розеток» (B) — монтаж розеток завершается только после окончания прокладки.
- Старт-финиш (SF, Start-to-Finish) — редкий тип. Задача B не может завершиться, пока не начнётся задача A. Пример: «Работа старого оборудования» (B) → «Запуск нового оборудования» (A) — старую линию останавливают только после запуска новой.
По временному смещению (лаг/лаг)
Связи могут включать временные задержки (лаг) или опережения (лид):
- Лаг (Lag) — обязательная задержка между задачами. Например, после «Покраски стен» (A) требуется 24 часа на высыхание, прежде чем можно начинать «Монтаж картин» (B) — это связь FS с лагом +24 часа.
- Лид (Lead) — опережение, когда задача B может начаться до завершения задачи A. Например, «Написание кода» (A) и «Тестирование модуля» (B) могут перекрываться: тестирование начинается на 80% готовности кода — это связь FS с лидом -20% времени.
Применение в управлении проектами
Связи задач являются фундаментальным элементом составления календарных планов (графиков) и расчёта критического пути.
Метод критического пути (CPM)
В методе критического пути (Critical Path Method, CPM) связи задач используются для определения самой длинной последовательности зависимых задач, которая определяет минимальную общую продолжительность проекта. Задачи, лежащие на критическом пути, не имеют резерва времени (свободного плавающего времени). Любая задержка в их выполнении напрямую сдвигает срок завершения всего проекта. Для расчёта критического пути применяются алгоритмы, основанные на графах, где вершины — задачи, а рёбра — связи (обычно типа FS).
Метод PERT
Метод оценки и анализа программ (Program Evaluation and Review Technique, PERT) также использует связи задач, но дополнительно учитывает вероятностные оценки времени выполнения (оптимистическое, пессимистическое, наиболее вероятное). Связи в PERT позволяют строить сетевые диаграммы, где каждая задача представлена в виде узла, а стрелки показывают зависимости.
Диаграмма Ганта
На диаграмме Ганта связи задач отображаются в виде стрелок между полосами задач. Программное обеспечение (например, Microsoft Project, GanttPRO) автоматически пересчитывает даты начала и окончания при изменении связей. Это позволяет визуально отслеживать, как задержка в одной задаче влияет на последующие.
Связи задач в Agile и Scrum
В гибких методологиях (Agile, Scrum) связи задач менее формализованы, чем в традиционных (Waterfall), но всё же существуют. В рамках спринта команда работает над набором задач (user stories), которые могут быть независимыми или иметь мягкие зависимости. Например:
- Зависимость по знаниям — для выполнения задачи B требуется результат задачи A (например, API-интерфейс).
- Зависимость по ресурсам — две задачи не могут выполняться одновременно, если используют одного и того же специалиста.
- Зависимость по компонентам — задача B зависит от кода, написанного в задаче A.
В Jira и других системах для Agile связи задач реализуются через типы «связано с», «блокирует», «является подзадачей». При этом приоритет отдаётся минимизации зависимостей, чтобы команда могла работать параллельно.
Связи задач в системах автоматизации
В программных продуктах для управления задачами (Trello, Asana, Todoist, Notion) связи реализуются по-разному:
- Trello — связи отсутствуют как встроенный механизм; для обозначения зависимостей используются метки, чек-листы или расширения (например, Power-Ups).
- Asana — поддерживает связи типа «зависит от» (аналог FS) и «блокирует» (обратная связь). Можно задавать как прямые, так и обратные зависимости.
- Jira — предлагает гибкую систему типов связей: «блокирует», «связана с», «дублирует», «является подзадачей», «клонирует». Для Agile-досок часто используется связь «блокирует» (FS).
- Microsoft Project — поддерживает все четыре типа связей (FS, SS, FF, SF) с возможностью задания лагов и лидов в днях, часах или процентах.
Математическая модель
В теории графов связи задач описываются как ориентированные рёбра в ациклическом графе (DAG — Directed Acyclic Graph). Каждая задача — вершина графа. Рёбра направлены от предшествующей задачи к последующей. Для анализа таких графов применяются:
- Топологическая сортировка — определение порядка выполнения задач, при котором все зависимости удовлетворены.
- Алгоритм Беллмана-Форда или алгоритм Дейкстры — для поиска критического пути (максимального по весу, где вес — длительность задачи).
- Расчёт ранних и поздних сроков — для определения резерва времени (свободного и полного).
Критика и ограничения
Использование связей задач имеет ряд недостатков, особенно в сложных проектах:
- Избыточность — чрезмерное количество связей (например, каждая задача связана со всеми последующими) усложняет план и делает его хрупким: изменение одной задачи может вызвать каскадный сдвиг.
- Ложная точность — связи создают иллюзию точного планирования, тогда как в реальности многие зависимости являются мягкими (например, «желательно, но не обязательно»).
- Сложность пересчёта — при большом количестве задач (сотни и тысячи) ручное управление связями становится невозможным, требуется автоматизация.
- Игнорирование человеческого фактора — формальные связи не учитывают, что люди могут работать параллельно или переключаться между задачами.
Источники
- Project Management Institute. A Guide to the Project Management Body of Knowledge (PMBOK Guide). 6th ed., 2017.
- Kerzner H. Project Management: A Systems Approach to Planning, Scheduling, and Controlling. 12th ed., 2017.
- Goldratt E. M. Critical Chain. 1997.
- Microsoft. Project 2019: Scheduling and Linking Tasks. 2020.
- Atlassian. Jira Software: Managing Dependencies. 2023.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →