[PMP] 시간관리- 프로젝트 일정 개발(CPM)

Posted in 프로젝트관리 // Posted at 2023. 10. 24. 13:51
728x90

이 글은 제가 과거에 운영했던 사이트인 http://dotnet.mkexdev.net 의 글을 옮겨온 것입니다.
그 전에 운영했었던 사이트(mkex.pe.kr)은 흔적도 없이 사라 졌습니다. 그속의 글들도 모두...
그래서 이 사이트도 사라지기 전에 옮기고 싶은 글을 조금씩 이 블로그로 이동시키려 합니다.
(원본글) http://dotnet.mkexdev.net/Article/Content.aspx?parentCategoryID=2&categoryID=27&ID=474

---

지금까지 프로젝트 일정을 산출하기 위한 사전 프로세스들에 대해 알아 보았다

활동정의, 활동 순서 부여, 활동 자원 산정, 활동 지속 기간 산정이 그 프로세스 들이다
이러한 사전 프로세스를 거치며 어떤 활동이 필요하며 이를 수행하기 위해 어떤 자원이 언제 필요하며
각 활동들간의 연관관계 및 개발 활동들의 소요 기간을 산정하였다

이제 이를 종합적으로 통합하여 프로젝트를 수행하기 위한 전체 일정을 산출하는 방법에 대해 알아보도록 하자

* CPM (Critical Path Method), 핵심 경로법
개별 활동들을 연결하여 '순방향 분석' 과 '역방향 분석'을 수행하여 각 활동의 시작일과 종료일 그리고 여유시간 및 전체 프로젝트 수행 기간을 산출하는 기법이다

* CP(Critical Path)
CPM에서 CP(Critical Path)는 핵심 주요 구간(경로)로써 각 활동들을 연결했을 때 수행 기간이 가장 긴 경로를 
나타내는데 이 구간은 여유시간이 0 이며 전체 프로젝트 소요 기간을 나타내므로 프로젝트 매니저가 가장
신경을 써야 하는 구간이다

다음의 그림을 보자
아래 표는 각 활동과 활동의 연관관계 그리고 개별 활동의 수행 기간까지 산정된 결과를 나타낸다

각 경로별로 수행기간을 계산 해 보면 다음과 같다
Path 1) start -> A -> C -> F -> end : 8일
Path 2) start -> B -> D -> F -> end : 6일
Path 3) start -> B -> D -> G -> end : 10일
Path 4) start -> B -> E -> G -> end : 13일

총 4가지 경로 중 가장 긴 수행 기간을 가지는 구간은 Path 4 가 된다
즉 Path 4 가 CP(Critical Path)가 되며 이는 곧 프로젝트를 수행하기 위한 총 소요시간이 되는 것이다
물론 프로젝트 매니저가 가장 신경을 써야 하는 구간이된다

참고로 위 표에서는 CP 가 1개 였지만, CP 는 경우에 따라 여러개가 될 수 도 있다
즉 최장기간이 동일한 구간이 여러개가 될 수 있다는 것이다
이렇게 CP가 많아지게 되면 프로젝트의 위험(Risk)이 올라간다

그리고 각 활동들의 수행 기간이 일부 변경되는 경우가 발생한다면 CP도 변경될 수 있으므로 주의깊에
살펴 봐야 한다
예를 들어 활동 D의 수행기간이 기존 2일에서 7일로 변경된다면
Path 3 일정이 총 15일이 되어 CP가 Path4 에서 Path3으로 바뀌게 된다

CP는 프로젝트 일정에 주의를 요하는 구간인 만틈 CP의 변경사항을 잘 파악하여 적절히 상황에 맞도록
프로젝트를 수행하여야 할 것이다


이제 순방향 분석과 역방향 분석을 통해 각 활동의 시작일과 종료일 그리고 여유시간을 산출해 보도록 하자

* 순방향 분석(Forward Scheduling)
Start 시점으로 부터 왼쪽 -> 오른쪽으로 계산하는 방식이다
ES(Early Start date): 빠른 착수라 해석하며 바로 앞 활동을 마친 후 착수 할 수 있는 가장 빠른 시점이다
EF(Early Finish date): 빠른 종료라 해석하며 ES 이후 활동이 완료되는 시점이다 

다음과 같이 활동(Activity)에 대한 기간 및 ES,EF를 표기하도록 한다

아래 그림은 각 활동들을 연결하여 ES 와 EF를 계산한 예시이다

1일 부터 시작하여 각 활동이 소요되는 기간을 더해 나가는 방식이다
활동 B의 경우를 보면, A 활동을 마친 후 빠르게 착수 할 수 있는 시점(ES)은 4일이 되겠다
그리고 4일, 시작 이후 B 활동을 마칠 수 있는 시점(EF)은 7일이 되겠다

이렇듯 '순방향 분석'을 통해 각 활동의 ES, EF를 계산할 수 있는 것이다
참고로 위 표에서 CP는 A->D->E->F->G 이며 프로젝트 총 소요시간은 18일이 된다


* 역방향 분석(Backward Scheduling)
순방향 분석과 반대로, End 시점으로 부터 오른쪽 -> 왼쪽으로 계산하는 방식이다
LF(Late Finish): 늦은 종료라 해석하며 바로 뒤 활동을 제때 시작하기 위해 본 활동이 종료되어야 하는 가장
                      늦은 시점을 말한다
LS(Late Start): 늦은 착수라 해석하며 LF 시점에 활동이 완료되기 위해 시작되어야 하는 시점을 말한다

다음과 같이 활동(Activity)에 대한 기간 및 LF,LS를 표기하도록 한다



아래 그림은 각 활동들을 연결하여 LF와 LS를 계산한 예시이다

End 일인 18일 부터 시작하여 활동이 소요되는 기간을 빼 나가는 방식이다
활동 F의 경우를 보면 G활동을 제때 시작하도록 하기 위해 종료되어야 하는 시점(LF)가 13일이 되겠다
그리고 13일에 활동이 종료되기 위해 이 활동이 시작되어야 하는 시점(LS)은 12일이 되겠다

이렇듯 '역방향 분석'을 통해 각 활동의 LF, LS를 계산할 수 있는 것이다


* 여유 시간
여유 시간은 말 그대로 프로젝트 수행 기간 동안 여유를 부릴 수 있는 시간을 말한다
CP 구간은 여유 시간이 0, 즉 여유가 하나도 없는 구간이라 했다
그러나 CP 구간을 제외한 경로에서는 여유 시간이 나올 수 있다

여유 시간은 다음과 같이 두 가지가 존재한다

1) Total Float (TF)
Slack Time 이라고도 하며, 프로젝트 납기일을 지연시키지 않으면서 각 활동이 가질수 있는 여유시간을 말한다
공식: TF = Min {LS-ES , LF - EF}. 즉 LS-EF 와 LF-EF 값 중 작은 값이 TF가 된다
CP(Critical Path) 구간은 은 TF가 0인 구간이다

TF > 0 경우에는 일정에 여유가 있는 것이며 TF = 0 은 일정 여유가 없는 CP 구간임을 의미한다

2) Free Float (FF)
후행(직후) 활동의 착수일(ES)를 지연시키지 않으면서 선행(직전) 활동이 가잘수 있는 여유시간을 말한다
공식: FF = EF - 직후 ES


TF와 FF는 다음과 같이 표기한다


TF와 FF 의 계산 공식을 도식화 해 보면 다음과 같다



아래 그림은 위에서 계산해 왔던 일정을 토대로 TF와 FF를 계산한 결과이다

지금까지 CPM(핵심경로법)을 통해 프로젝트 전체 일정은 물론이고 각 활동의 시작일/종료일을 산출할 수 있었으며
CP구간을 파악하고 프로젝트 수행 중 여유시간(TF,FF)를 도출하는 방법에 대해 알아 보았다

이렇게 산출된 일정이라 할 지라도, 일정을 단축해야 하는 이슈가 발생할 수 있다
PMI 에서는 프로젝트의 스펙(범위)를 변경하지 않고 프로젝트 일정을 단축하기 위한 방법으로 다음과 같은 기법이
제시된다

* 일정 단축 기법
1) Crashing
크래싱이라 발음하며 자원과 비용을 더 투입하여 일정을 단축시키는 기법이다
Crashing 는 프로젝트 전체 구간 중 CP(Critical Path) 구간에 자원을 먼저 할당하여 프로젝트 전체 일정을 줄이는
기법이다. 단 이 기법은 프로젝트 원가가 상승한다는 단점이 존재한다

2) Fast tracking
순차적으로 진행되는 활동들의 연관관계를 병렬로 작업함으로써 일정을 단축시키는 기법이다
통산 소프트웨어 프로젝트에 많이 사용되는 기법(밤샘?)이며 이는 프로젝트위 리스크가 증가할 수 있으며
재 작업 해야 하는 가능성이 있다는 단점이 있다