← wbsgantt 홈
가이드

간트차트 종속성 4종(FS·SS·FF·SF)과 Lead/Lag 완전 정리

발행

네 행으로 나뉜 개념도 — 각 행에서 선행 막대와 후행 막대가 FS·SS·FF·SF 각각의 연결 지점(끝→시작·시작→시작·끝→끝·시작→끝)을 화살표로 잇고, 첫 행에는 lag 구간이 점선으로 표시돼 있다.

종속성(dependency)은 두 작업 사이의 시간 약속이다. 선행 작업의 시작 또는 끝이, 후행 작업의 시작 또는 끝을 구속한다 — 그 조합이 네 가지이고 이름이 FS·SS·FF·SF 다. 여기에 기다림이나 겹침을 표현하는 Lag·Lead 를 얹으면 일정 논리를 거의 다 적을 수 있다.

종속성이 약속하는 것

이 네 개를 정확히 쓰는 것이 왜 중요한가. 종속성은 화살표를 그리는 장식이 아니라 크리티컬 패스 계산의 입력이다. 선을 잘못 걸면 계산은 여전히 성실하게 돌아가고, 틀린 답을 자신 있게 내놓는다.

종속성읽는 법언제 쓰는가
FS (Finish-to-Start)선행이 끝나야 후행이 시작산출물을 넘겨받아야 다음 일이 가능할 때 (기본형, 실무의 대부분)
SS (Start-to-Start)선행이 시작해야 후행이 시작병행하되 착수 순서만 있는 일 (개발 착수 후 테스트 케이스 작성)
FF (Finish-to-Finish)선행이 끝나야 후행이 함께 끝나야 하는 일 (개발 완료 없이는 코드 리뷰도 못 끝난다)
SF (Start-to-Finish)선행이 시작해야 후행이 교대·전환 (신 시스템 가동 시작 = 구 시스템 운영 종료)

FS — 기본값이자 실무의 대부분

가장 자연스러운 형태다. "설계서 승인이 끝나야 개발을 시작한다." 산출물이 손을 넘어가는 지점이 곧 선이 된다.

FS 를 기본값으로 두고 시작하는 것이 좋은 전략이다. 나머지 세 개는 FS 로 표현할 수 없을 때만 쓴다. 실제 프로젝트의 종속성 목록을 열어 보면 8~9할이 FS 인 것이 정상이다. FS 비중이 절반 아래로 떨어져 있다면, 십중팔구 병행 작업을 억지로 SS 로 묶고 있거나 선을 남용하고 있다.

SS — 나란히 가는 일의 착수 순서

"개발이 시작되면 테스트 케이스 작성도 시작할 수 있다." 두 작업은 병행하지만 착수에는 순서가 있다. 이때 FS 로 걸면(개발이 끝나야 테스트 케이스 작성 시작) 일정이 불필요하게 뒤로 밀린다.

주의할 함정이 하나 있다. SS 는 끝을 구속하지 않는다. 개발이 3개월, 테스트 케이스 작성이 2주라면 SS 만으로는 테스트 케이스가 개발보다 두 달 먼저 끝나도 논리 위반이 아니다. "같이 시작하고 같이 끝나야 한다"를 원한다면 SS 와 FF 를 둘 다 걸어야 한다.

FF — 함께 끝나야 하는 일

"코드 리뷰는 개발이 끝나기 전에 끝날 수 없다." 리뷰는 개발 도중에 시작하지만, 마지막 커밋이 리뷰되지 않은 채로 리뷰를 종료할 수는 없다. 후행의 이 선행의 에 매인다.

감리·검수·문서화처럼 본 작업을 따라다니는 일이 대개 FF 다. 이런 일을 FS 로 걸면(본 작업이 다 끝난 뒤 검수 시작) 실제로는 병행하는 작업을 일정에서 직렬로 길게 늘여 놓게 된다.

SF — 드물지만 있어야 하는 자리

"신 시스템이 가동을 시작하면 구 시스템 운영을 종료한다." 후행(구 시스템 운영 종료)의 끝이 선행(신 시스템 가동)의 시작에 매인다.

SF 가 드문 이유는 사람의 사고 방향과 반대이기 때문이다 — 우리는 보통 "구 시스템을 내려야 신 시스템을 올린다"처럼 앞에서 뒤로 생각한다. 그래서 SF 가 필요한 자리는 대개 교대(handover)·전환(cutover) 상황으로 한정된다. 병행 운영 기간이 있는 시스템 전환, 인력 교대, 임대 장비 반납 같은 경우다.

실무 조언: SF 를 쓰기 전에 작업 정의를 다시 보라. "구 시스템 운영"을 작업으로 잡지 않고 "구 시스템 종료(정지 작업)"로 잡으면 평범한 FS 로 표현된다. SF 가 필요해 보이면 절반은 모델링을 바꿔 해결된다.

Lead 와 Lag — 부호가 아니라 의미로 구분한다

Lag(지연) 은 선 위에 얹는 기다림이다. "계약 서명 후 착수까지 대금 지급 7일"처럼 아무도 일하지 않지만 시간이 필요한 구간이다. FS +7d 로 적는다.

Lead(선도) 는 겹침이다. "설계가 80% 쯤 되면 개발을 미리 시작한다"를 FS −5d 로 적는다.

둘은 같은 축의 양·음수로 구현되지만 의미가 다르므로 구분해서 생각하는 편이 안전하다. 세 가지 규율을 권한다.

잘못 걸면: 크리티컬 패스가 거짓말을 한다

종속성 오류의 대가는 즉시 눈에 보이지 않는다. 계산은 정상적으로 끝나고, 화면에는 그럴듯한 크리티컬 패스가 그려진다. 문제는 그 답이 틀렸다는 것이다.

세 가지 대표적인 증상:

세 번째가 가장 흔하고 가장 위험하다. WBS 와 간트를 별도 파일로 관리할 때 거의 필연적으로 벌어지는 일이기도 하다(엑셀로 만든 계획은 만든 날부터 죽는다).

선택 가이드

앞의 작업과 뒤의 작업 관계를 한 문장으로 말해 보고, 아래에서 고른다.

상황을 말로 하면
"A 의 산출물을 받아야 B 를 한다"FS
"A 가 시작되면 B 도 시작할 수 있다"SS
"B 는 A 보다 먼저 끝날 수 없다"FF
"A 와 B 는 같이 시작하고 같이 끝난다"SS + FF (둘 다)
"A 가 켜지면 B 를 끈다"SF
"A 끝나고 며칠 기다린 뒤 B"FS + Lag
"A 가 거의 끝나갈 때 B 를 미리 시작"FS + Lead (재작업 리스크 감수)
"B 는 무조건 3월 1일 시작"종속성이 아니다 — 제약(constraint)이며, 정말 필요한지 다시 검토

마지막 줄이 실무에서 가장 자주 오용된다. 외부 계약이나 법정 기한처럼 진짜 고정된 날짜만 제약으로 두고, 나머지는 선으로 표현하는 것이 원칙이다. 제약이 많은 일정은 계산이 되지 않는 일정이다.

다음에 읽을 것

종속성을 걸기 전에 작업 목록 자체가 정확해야 한다. 무엇을 쪼갤 것인가는 WBS 작성법에서 다섯 단계로 정리했다.

wbsgantt 는 FS·SS·FF·SF 네 종류와 Lead/Lag 를 그대로 지원하고, 선을 추가하는 순간 사이클(순환 참조)을 트랜잭션 안에서 차단하며, 크리티컬 패스를 자동으로 다시 계산한다. 여유가 0 이 된 작업은 상세 패널에서 즉시 경고로 표시된다 — 위의 첫 번째 증상("선이 빠져서 여유가 과대 표시되는")을 사람이 눈으로 찾지 않아도 되게 만드는 것이 목표다.

자주 묻는 질문

SF는 실무에서 언제 쓰나요?
교대와 전환 상황에 한정됩니다 — 신 시스템 가동 시작이 구 시스템 운영 종료를 구속하는 컷오버, 인력 교대, 임대 장비 반납 같은 경우입니다. 다만 SF 가 필요해 보이는 자리의 절반은 작업 정의를 바꾸면 사라집니다. "구 시스템 운영"을 상태가 아니라 "구 시스템 정지 작업"으로 잡으면 평범한 FS 가 됩니다.
Lead와 Lag의 차이가 뭔가요?
Lag 은 선 위에 얹는 기다림(FS +7d — 대금 지급 대기처럼 아무도 일하지 않는 시간), Lead 는 겹침(FS −5d — 선행이 끝나기 전에 후행을 미리 시작)입니다. 구현상 같은 축의 양·음수지만 의미가 다릅니다. 특히 Lead 를 많이 쓴 일정은 빠른 일정이 아니라 재작업 리스크를 감수한 일정입니다.
종속성 대신 날짜를 고정하면 안 되나요?
결과가 같아 보여도 선행이 밀릴 때 동작이 정반대입니다. 종속성으로 묶인 후행은 함께 밀려 지연이 드러나고, 고정 날짜는 그 자리에 남아 "지연 없음"이라는 거짓 신호를 줍니다. 외부 계약·법정 기한처럼 진짜로 고정된 날짜만 제약으로 두고 나머지는 선으로 표현하십시오.
종속성이 순환(사이클)을 만들면 어떻게 되나요?
A→B→C→A 처럼 순환이 생기면 일정 계산 자체가 불가능해집니다(어느 작업의 시작도 확정할 수 없습니다). 그래서 사이클은 계산 시점이 아니라 선을 추가하는 시점에 차단해야 합니다. 순환이 만들어졌다면 대개 작업 분해가 잘못된 신호이므로, 선을 지우기 전에 두 작업의 경계를 다시 보십시오.
FS + Lag 3일과 후행 시작일을 3일 미루는 건 다른가요?
다릅니다. FS +3d 는 선행의 끝을 기준으로 상대적으로 계산되므로 선행이 5일 밀리면 후행도 5일 밀립니다. 시작일을 3일 뒤로 직접 입력하면 그 날짜는 선행과 무관하게 고정되어, 선행이 밀려도 후행은 제자리에 남고 크리티컬 패스가 왜곡됩니다.