본문 바로가기

카테고리 없음

CPM(Critical Path Method, 임계경로법) 제대로 알기 (계산 예제)

반응형

한국에서 컴퓨터 공학을 전공하고, 정보처리기사부터 기술사까지 관련 자격증을 공부해본 사람이라면 PERT/CPM에 대해선 개념적인 부분은 대부분 알고 있는 것 같다. 프로젝트 관리라고 하면 대표적으로 언급되는 기술이기 때문에 시험에서 안나오는 일이 없다. 하지만 국내 IT 프로젝트 매니징에선 실제로 많이 쓰이지 않기에 개념 이상으로 더 깊게 들어가는 경우는 많지 않은 것 같다.

 

하지만 실제 계산을 해보지 않고 답안지용 개념만 외우다 보면 주요 개념 조차 헷갈려 착각하는 경우가 많기에 간단한 예제와 함께 정리를 한번 해보고자 한다.

 

우선 프로젝트 관리에서의 일정 관리, 그 중에서 임계경로법의 목표가 무엇인가?

 

CPM의 목적은 "최단 경로"를 찾는 것이 아니다.
"최장 경로"를 찾아 프로젝트의 지연을 방지하는 것이다. 

 

"Critical(임계)"라는 단어 때문에 최단기간을 추구하는 것으로 오해가 되긴 하지만 그렇지 않다.

가장 많이 착각하는 것들이 "임계 경로"가 최단 경로를 의미한다고 생각하는 것이다. 하지만 그 반대이다. 임계 경로는 "최장 경로"를 의미한다. 

 

그렇다면 왜 최장 기간을 계산하는가?

우리는 임계 경로상에 있는 작업들을 식별해야 하기 때문이다. 프로젝트에서 존재하는 수많은 다른 작업들은 조금 지연이 되더라도 일정에 큰 영향을 주지 않는다. 다만, 임계 경로 상에 있는 작업들은 조금만 지연되어도 프로젝트 전체 일정에 바로 영향을 끼치게 된다. 반대로, 어떤 작업들은 일정 단축을 해봐야 프로젝트 전체 일정이 단축되지 않는다. 진짜 프로젝트 전체 일정을 단축하고 싶다면 임계 경로상의 작업을 단축해야 한다.

 

어떤 의미인지 이해를 하기 실제 예제로 계산을 해보자. 아래, A, B, C, D, E 작업이 있다.

작업 작업 시간 선행 작업
A 2  
B 7  
C 4 A
D 3 A
E 2 B, C

 

그리고 이를 토대로 아래와 같이 그래프를 그리고, 임계 경로까지 다 계산해 놓았다. (참고로 이렇게 작업이 간선에 적혀 있는 것이 미국 방식이다. 우리에게 조금 더 익숙한, 작업이 동그라미 노드에 들어간 방식은 유럽 방식이다. 둘 다 많이 쓰이므로 익숙해져야 한다.) 그리고 저기 들어간 숫자가 임계 경로를 찾기 위한 계산값들로, 우리가 익히 알고 있는, ES, EF, LS, LF를 이 형태로 적어 놓은 것이다. 

 

ES EF
LS LF

 

각각 가장 빠른 시작 시간(ES), 가장 빠른 종료 시간(EF), 가장 늦은 시작 시간(LS), 가장 늦은 종료 시간(LF)를 나타낸다.

 

여기서 임계 경로가 어디인가? 결론부터 말하자면 가장 빠른 시간과 가장 늦은 시간이 같은 작업들, 즉 여유(Slack)이 없는 작업들의 경로인 B -> E 이다. 즉 A, C, D에는 여유가 있다. 어느정도는 지연이 되어도 문제가 없다. 반대로 말하면 줄어봐야 전체 일정에 큰 도움이 안된다는 뜻이기도 하다. 하지만 B->E는 늦어지고 빨라지고가 전체 일정에 영향을 끼친다. 그래서 임계 경로(Critical Path)이다. 어떻게 계산이 되는지 보자

 

우선 가장 빠른 시간, 즉 ES, EF를 먼저 계산한다.

 

  • 선행 작업이 없는 A는 0~2가 명확하다.
  • B도 선행 작업이 없으니 0~7이다.
  • C는 A가 끝나고 진행되어야 하므로 A의 EF인 2가 ES가 된다. 그리고 작업 기간이 4이므로 2~6이 된다.
  • D도 마찬가지다. A만 선행작업이므로 ES는 2가 되고, 작업 기간이 3이므로 2~5가 된다.
  • 그리고 중요한 E는 B, C가 끝난 다음 진행될 수 있으므로, 먼저 계산해 놓은 E, C를 본다. A를 거쳐온 C는 가장 빠른 종료 시간이 6이다. 반면, B는 자기 혼자서도 가장 빠른 종료 시간이 7이다.
  • 독립적으로 수행되는 두 작업이 모두 끝난 다음 진행되어야 하므로, 둘 중 늦은 종료 시간인 B의 종료 시간을 기준으로, 시작 시간이 설정 되어야 한다. 그래서 E의 빠른 실행 시간은 7이다. 작업 기간이 2이므로 7~9가 된다.

이렇게 하면 모든 작업에 대해 ES / EF는 아래와 같이 계산이 되었다.

 

A 0 / 2

B 0 / 7

C 2 / 6

D 2 / 5

E 7 / 9

 

이 프로젝트의 총 작업 기간은 "9"임을 알 수 있다.

 

자 그렇다면 가장 늦은 시작 시간과, 가장 늦은 종료 시간을 계산해보자. 편의상 LS, LF라고 하겠다. LS와 LF 계산은 역으로 해야 쉽다. 먼저 끝에 있는 D와 E부터 보자.

 

D의 가장 늦은 종료 시간(LF)는 전체 프로젝트의 종료 시간인 "9"이다. 이 말 뜻은 프로젝트 전체 일정의 영향을 주지 않는 선에서, D는 사실 가장 빠른 시간인 5가 아니라, "9"에 와서 끝나도 문제가 되지 않는다는 뜻이다. 즉 "가장 늦을 수 있는 시간"이라고 이해하면 되겠다.

 

그럼 가장 늦은 시작 시간은? 종료 시간이 9이므로, 이를 역으로 계산하면 6이 된다. 작업 시간 3을 뺀 것이다. 즉 6에 시작해도 늦지 않다! 라고 이해할 수 있다. 표는 아래와 같이 된다.

 

ES 2 EF 5
LS 6 LF 9

 

윗 행과 아래 행의 차이가 여유(Slack)이다. 작업 D를 맡은 팀은 여유가 좀 있다는 것이다. 정확히는 4만큼의 여유가 있다.

 

반면 E를 보자. 프로젝트 전체 시간의 작업 시간인 9가 원래 본인의 작업 종료 시간이었다. LF도 동일하게 9가 된다. 그리고 당연히 LS도 동일하게 7이 된다. 즉 본인이 만들어낸 시작 / 종료 시간이 프로젝트 전체에 영향을 끼치고 있으므로 여유가 없다. 그리고 우리는 이 작업이 임계 경로상에 있는 작업이라는 것을 알 수 있다.

 

그 다음으로 C를 구해보자. C에서 LF 후행작업의 가장 늦은 시작 시간(LS)가 기준이 된다.

 

즉 후행 작업에서 가장 늦게 시작해도 되는 시간(LS)이
선행 작업이 가장 늦게 종료를 해도 되는 시간이 것이다.

 

헷갈리면 문장을 몇번 더 읽어 보자. 상식적으로 당연한 말이다. 그래서 E의 7과 D의 6 중에서 7이 선택이 되었다. C의 작업 기간은 4이므로 3~7이 된다.

 

이렇게 거꾸로 계산을 해나가다 보면 처음 본 그림과 같은 표가 완성이 된다. 결국 이렇게 양방향으로 ES, EF / LS, LF 를 계산을 해야, 여유가 없는 경로, 즉 임계 경로를 구할 수 있게 된다. 이게 5개 노드로 작업을 했으니 이렇게 간단히 끝나지, 실제 수십개의 작업이 있는 실무 예제로 작업을 하면 한시간씩 걸리기도 한다. 그리고 진짜 작업 수천개의 대규모 프로젝트는 손으로 계산 못한다. 전용 프로그램을 돌려야 한다.

 

 

반응형