В чём отличия типов связей
Гантика поддерживает четыре типа связей между задачами: FS, SS, FF и SF. Каждый тип определяет свою логику взаимодействия между предшественником и последователем. В этой статье мы подробно сравним все типы, разберём их отличия и поможем выбрать правильный тип для каждой ситуации.
Главная таблица сравнения
| Характеристика | FS | SS | FF | SF |
|---|---|---|---|---|
| Полное название | Finish-to-Start | Start-to-Start | Finish-to-Finish | Start-to-Finish |
| Перевод | Окончание–Начало | Начало–Начало | Окончание–Окончание | Начало–Окончание |
| Что ограничивает | Начало последователя | Начало последователя | Окончание последователя | Окончание последователя |
| Что является триггером | Окончание предшественника | Начало предшественника | Окончание предшественника | Начало предшественника |
| Параллельное выполнение | Нет (строго последовательно) | Да (параллельный старт) | Да (параллельное завершение) | Да (инверсная логика) |
| Частота использования | ~85% | ~10% | ~4% | ~1% |
| Цвет линии | Серый (#64748b) | Зелёный (#059669) | Оранжевый (#d97706) | Фиолетовый (#7c3aed) |
| Сложность понимания | Простой | Средний | Средний | Сложный |
Ключевые отличия между типами
FS vs SS: последовательность или параллельность
Главное отличие между FS и SS — в возможности параллельного выполнения. FS создаёт строгую последовательность: пока предшественник не завершён, последователь не может начаться. SS позволяет задачам выполняться параллельно — последователь стартует одновременно с предшественником или через заданный лаг.
Пример: Если «Разработка модуля» длится 10 дней, а «Тестирование модуля» — 5 дней, то при связи FS общая длительность составит 15 дней. При связи SS с лагом 3 дня тестирование начнётся на 4-й день разработки, и общая длительность сократится до 12 дней.
FS vs FF: контроль начала или окончания
FS контролирует, когда последователь может начаться. FF контролирует, когда последователь может завершиться. При FS последователь ждёт окончания предшественника, чтобы стартовать. При FF последователь может начаться в любое время, но не может завершиться раньше предшественника.
Пример: Задачи «Написание кода» и «Написание документации» связаны типом FF. Документация может начаться раньше кода, но не может быть финализирована, пока код не дописан — ведь в документации нужно описать финальную версию.
SS vs FF: параллельный старт или параллельный финиш
SS синхронизирует начало задач — они стартуют вместе. FF синхронизирует окончание — они завершаются вместе. На практике SS и FF часто используются в паре для полной синхронизации параллельных работ.
Пример: «Разработка фронтенда» и «Разработка бэкенда» могут иметь связь SS (начинаются вместе) и одновременно связь FF (должны завершиться к одному сроку для интеграции).
SF — особый случай
SF стоит особняком от остальных типов. В нём начало предшественника разрешает завершение последователя. Эта логика инвертирована по сравнению с FS и применяется крайне редко.
Влияние на длительность проекта
| Тип связи | Влияние на сроки | Возможность сжатия |
|---|---|---|
| FS | Увеличивает общую длительность — задачи строго последовательны | Можно добавить отрицательный лаг для перекрытия |
| SS | Сокращает длительность — задачи идут параллельно | Лаг регулирует степень параллельности |
| FF | Синхронизирует окончание, может как сократить, так и удлинить | Отрицательный лаг позволяет завершить раньше |
| SF | Специфическое влияние, зависит от контекста | Редко используется для оптимизации |
Как типы связей влияют на критический путь
Все четыре типа связей учитываются при расчёте критического пути (КПМ). Формулы прямого прохода различаются:
- FS: ES(B) = EF(A) + lag — самая простая формула
- SS: ES(B) = ES(A) + lag — позволяет параллелизм
- FF: EF(B) = EF(A) + lag — ограничивает окончание
- SF: EF(B) = ES(A) + lag — инверсная логика
Задачи с нулевым резервом (float) находятся на критическом пути независимо от типа связи. Однако тип связи определяет, какие задачи попадут на критический путь и как будет выглядеть сетевой граф.
Практические рекомендации
Начните с FS
Если вы только начинаете работать со связями, используйте FS для всех зависимостей. Это самый интуитивный тип, и он подходит для большинства случаев. По мере освоения добавляйте SS и FF для оптимизации расписания.
Используйте SS для сжатия сроков
Когда проект нужно ускорить, пересмотрите связи FS. Если последователь может начаться до полного завершения предшественника — замените FS на SS с лагом. Это позволит выполнять задачи параллельно.
FF для синхронизации дедлайнов
Когда несколько задач должны завершиться к одной дате (например, все компоненты к релизу), используйте FF. Это гарантирует, что зависимые задачи не завершатся раньше ключевой.
Избегайте SF без необходимости
SF — экзотический тип. Используйте его только если точно понимаете, зачем он нужен. В 99% случаев задачу можно решить с помощью FS, SS или FF.
Частые ошибки при выборе типа связи
- Использование только FS: Приводит к искусственному удлинению проекта. Многие задачи можно выполнять параллельно с SS.
- SS без лага: Если задачи начинаются одновременно, но одна зависит от промежуточных результатов другой — добавьте лаг.
- Путаница направления: Убедитесь, что предшественник и последователь выбраны правильно. Перепутанное направление полностью меняет логику связи.
- Использование SF вместо FS: Если вам кажется, что нужен SF — попробуйте поменять предшественника и последователя местами и использовать FS.