소프트웨어 공학 100 주제 시리즈의 80번째 글이다. (카테고리: 프로젝트 관리와 추정)

한 줄 요약

진척은 “얼마나 일했나” 가 아니라 “계획한 가치 중 얼마를 실제로 만들었나” 로 재야 한다. 획득가치 관리(EVM)는 계획가치(PV)·획득가치(EV)·실제원가(AC) 세 곡선으로 일정과 비용의 이탈을 동시에 보여 주고, 번다운·번업 차트는 같은 생각을 애자일 백로그에 적용한 가벼운 버전이다.

왜 필요한가

진척 보고에서 가장 흔한 거짓말은 악의가 아니라 측정 방식에서 나온다.

  • “예산의 60% 를 썼으니 60% 진행됐다.” 돈이나 시간을 쓴 것은 진척이 아니다. 같은 60% 를 쓰고 30% 만 만들었을 수 있다.
  • “90% 완료.” 작업자가 체감으로 보고하는 퍼센트는 마지막 10% 에서 몇 주씩 머문다.
  • “일정은 맞는데 예산이 초과됐다.” 일정과 비용을 따로 보면 둘의 관계(늦은 일을 사람으로 메우는 중인지)가 보이지 않는다.

EVM 은 세 가지를 같은 단위(돈 또는 시간)로 맞춰 놓고 비교한다. 그래서 위 세 질문에 한 장의 그래프로 답한다.

핵심 개념

세 개의 곡선

약어 정식 명칭 뜻
PV (BCWS) 계획가치, Budgeted Cost of Work Scheduled 지금까지 하기로 계획한 일의 예산
EV (BCWP) 획득가치, Budgeted Cost of Work Performed 지금까지 실제로 끝낸 일의 예산
AC (ACWP) 실제원가, Actual Cost of Work Performed 끝낸 일에 실제로 쓴 비용
BAC Budget At Completion 전체 예산
금액
 BAC ┤                                      ......PV
     │                               ......
     │                         ...... ___AC
     │                   ...... ____/
     │             ......___/      ←  AC > EV : 비용 초과
     │       ...___/  ___EV
     │    ._/    ___/              ←  EV < PV : 일정 지연
     │ ._/___ __/
     └──────────────┬──────────────────────── 시간
                  현재

지표와 공식

아래 공식은 NASA 성과 관리 참조 카드(2021년 5월 개정)에서 옮겼다.

지표 공식 해석
원가 차이 CV EV − AC 음수면 예산 초과
일정 차이 SV EV − PV 음수면 일정 지연 (단위는 돈)
원가 효율 CPI EV / AC 1 미만이면 비효율. “1원을 써서 CPI 원어치 일을 했다”
일정 효율 SPI EV / PV 1 미만이면 지연
완료 시 추정 EAC (CPI 방식) AC + (BAC − EV) / CPI 지금까지의 원가 효율이 계속된다고 가정
EAC (복합 방식) AC + (BAC − EV) / (CPI × SPI) 일정 압박이 원가에도 영향을 준다고 가정
완료 시 차이 VAC BAC − EAC 음수면 최종 예산 초과 예상
잔여 성과 지수 TCPI (BAC − EV) / (BAC − AC) 남은 예산으로 끝내려면 남은 일에서 필요한 효율

같은 카드에 따르면 NASA 의 EVM 시스템은 EIA-748 표준의 32개 지침을 따라야 한다. 이 표준이 미국 정부 조달에서 쓰는 EVM 시스템의 기준이다.

EVM 의 맹점과 획득 일정(Earned Schedule)

SV 와 SPI 에는 잘 알려진 결함이 있다. Earned Schedule 공식 사이트를 운영하는 Walt Lipke 는 이렇게 지적한다. EVM 은 일정 성과를 시간이 아니라 돈으로 잰다. 그래서 늦게 끝난 프로젝트도 완료 시점에는 EV = PV = BAC 가 되어 SV = 0, SPI = 1 이 된다. 늦게 끝났는데 지표는 “완벽한 일정 성과” 를 보여 주는 것이다.

획득 일정(ES)은 “지금까지 얻은 EV 가 계획상 언제 얻었어야 할 양인가” 를 시간으로 구한다. Lipke 의 개념 문서에 따르면 다음과 같다.

\[ES = C + \frac{EV - PV_C}{PV_{C+1} - PV_C}\]

여기서 C 는 EV ≥ PV 를 만족하는 PMB(성과 측정 기준선)의 완전한 시간 구간 수다. 실제 경과 시간을 AT 라 하면 시간 기반 지표는 SV(t) = ES − AT, SPI(t) = ES / AT 가 된다. EV 는 BAC 를 넘지 않으므로 아무리 늦어져도 PV 곡선에서 대응점을 찾을 수 있고, 지표가 1로 수렴하는 문제가 없다.

번다운과 번업

스크럼 가이드 2020은 진척 예측 방법으로 번다운, 번업, 누적 흐름도를 예로 든다. 그러면서 이것들이 유용하지만 경험주의를 대신하지 못한다고 강조한다. 복잡한 환경에서는 무슨 일이 일어날지 알 수 없고, 앞을 내다보는 결정에는 이미 일어난 일만 쓸 수 있다는 것이다.

차트 세로축 장점 약점
번다운 남은 작업량 단순, 스프린트 안에서 직관적 범위가 늘면 진척이 “멈춘 것처럼” 보여 원인이 섞인다
번업 완료 누적 + 전체 범위 선 진척과 범위 변화가 분리되어 보인다 선이 두 개라 설명이 조금 더 필요
번다운: 범위 증가가 숨는다          번업: 범위 증가가 보인다
남은 점수                          누적 점수
 100 ┤\                            120 ┤          ______ 전체 범위
     │ \__                             │   ______/
     │    \___  ← 범위가 20 늘어        100 ┤__/        ___ 완료
     │        \___  평평해짐            │       ___/
     └─────────────── 스프린트            └──/──────────── 스프린트

EVM 과 애자일의 연결

EVM 을 스크럼 프로젝트에 적용하려는 시도로 Sulaiman·Barton·Blackburn 의 AgileEVM — Earned Value Management in Scrum Projects(AGILE 2006)가 있다. 연결의 착상 자체는 단순하다. 릴리스에 계획한 전체 범위를 BAC 쪽에, 완료된 범위의 비율을 EV 쪽에 대응시키면, 번업 차트에 실제 비용(AC) 축을 덧붙인 모양이 된다. (이 대응은 이 글의 설명이며, 논문의 세부 정의는 원문을 확인하라.)

예제

6개월, 예산 6억 원 프로젝트의 4개월 차 말 데이터다.

BAC = 600                                    # 백만 원
PV_cum = [0, 60, 150, 270, 390, 500, 600]    # 월말 누적 계획가치 (0~6월)
EV_cum = [0, 50, 120, 200, 290]              # 4월말까지 누적 획득가치
AC_cum = [0, 55, 140, 240, 350]              # 4월말까지 누적 실제원가
t = 4                                        # 현재 = 4월말 (AT = 4)
PV, EV, AC = PV_cum[t], EV_cum[t], AC_cum[t]

CV, SV = EV - AC, EV - PV
CPI, SPI = EV / AC, EV / PV
EAC = AC + (BAC - EV) / CPI
TCPI = (BAC - EV) / (BAC - AC)
print(f"PV={PV} EV={EV} AC={AC}")
print(f"CV={CV}  SV={SV}  CPI={CPI:.3f}  SPI={SPI:.3f}")
print(f"EAC={EAC:.0f}  VAC={BAC - EAC:.0f}  TCPI(BAC)={TCPI:.3f}")

C = max(i for i, pv in enumerate(PV_cum) if pv <= EV)       # EV ≥ PV 인 마지막 구간
ES = C + (EV - PV_cum[C]) / (PV_cum[C + 1] - PV_cum[C])
print(f"ES={ES:.2f}개월  SV(t)={ES - t:+.2f}개월  SPI(t)={ES / t:.3f}")
print(f"단순 예상 완료 시점(계획 6개월 / SPI(t)) = {6 / (ES / t):.1f}개월")

실행 결과:

PV=390 EV=290 AC=350
CV=-60  SV=-100  CPI=0.829  SPI=0.744
EAC=724  VAC=-124  TCPI(BAC)=1.240
ES=3.17개월  SV(t)=-0.83개월  SPI(t)=0.792
단순 예상 완료 시점(계획 6개월 / SPI(t)) = 7.6개월

해석:

  1. 비용. CPI 0.83 은 1원을 써서 0.83원어치 일을 했다는 뜻이다. 이 효율이 계속되면 최종 비용은 약 7.24억, 1.24억 초과다.
  2. TCPI 1.24. 원래 예산 안에서 끝내려면 남은 일을 지금보다 50% 가까이 더 효율적으로(0.83 → 1.24) 해야 한다. 현실적이지 않다. 예산을 늘리거나 범위를 줄여야 한다는 신호다(SE100 #079).
  3. 일정. SV 는 “−1억” 이라 감이 오지 않는다. ES 로 바꾸면 “4개월이 지났는데 3.17개월 분량만 했다”, 즉 약 0.8개월 지연이다. 이 속도면 6개월 계획이 7.6개월 정도로 늘어난다.

실무 적용

EV 를 정직하게 매기는 규칙

EVM 의 정확도는 EV 를 어떻게 인정하느냐에 달려 있다. NASA 의 EVM 참조 가이드(NASA/SP-2019-3708)는 이를 성과 측정 기법(PMT)이라 부르고 0/100, 50/50, 퍼센트 완료, 마일스톤 퍼센트 완료 등을 예로 든다. 퍼센트 완료를 쓸 때는 그 퍼센트를 어떻게 정했는지 정량적 근거 자료로 남기라고 권한다. 근거 없는 체감 퍼센트를 쓰면 “90% 완료 증후군” 이 그대로 들어온다.

방식 규칙 적합한 경우
0/100 끝나야 100%, 그 전엔 0% 며칠짜리 작은 작업 패키지
50/50 시작 시 50%, 완료 시 100% 한두 보고 주기에 걸친 작업
마일스톤 가중 정의된 중간 산출물마다 정해진 비율 긴 작업

소프트웨어에서는 0/100 + 작은 작업 패키지가 가장 정직하다. “완료” 는 팀의 완료 정의를 충족했을 때다. 작업 패키지를 작게 자르는 것은 WBS(SE100 #076)의 일이다.

주간 진척 보고 템플릿

[진척] 2026-W42
- 범위: 전체 140 점 (지난주 +6, 결제 예외 처리 발견)
- 완료: 누적 78 점 / 최근 4주 처리량 9, 12, 7, 11 개
- 예측: 85% 확률 완료 12월 5일 (지난주 11월 28일) ← 몬테카를로 (SE100 #077)
- 비용: CPI 0.91, EAC 6.6억 / BAC 6.0억
- 결정 필요: 결제 예외 처리 6점을 v1 에 포함할지 (10/20까지)

번업(범위와 완료), 확률 예측(날짜), EVM(비용)을 한 장에 묶었다. 각 숫자 옆에 지난주 값을 둔다. 추세가 수준보다 더 많은 것을 말해 준다.

흔한 오해와 함정

  • “SPI 가 1 에 가까워지고 있으니 회복 중이다.” 프로젝트 후반에는 늦었더라도 SPI 가 기계적으로 1 로 수렴한다. 후반 일정 판단에는 SPI(t) 를 쓴다.
  • “EV = 투입한 시간.” EV 는 끝낸 일의 계획 예산이다. 시간을 쓴 만큼 EV 를 인정하면 AC 를 두 번 세는 셈이다.
  • “EVM 은 폭포수 전용이다.” 기준선(PMB)이 있으면 어디든 쓸 수 있다. 다만 범위가 자주 바뀌면 기준선 변경 관리가 핵심 비용이 된다.
  • “번다운이 평평하면 팀이 일을 안 한 것이다.” 범위가 늘어서일 수 있다. 번업으로 두 원인을 분리한다.
  • “차트가 미래를 알려 준다.” 스크럼 가이드의 경고처럼 차트는 과거의 요약이다. 미래는 확률로 말한다(SE100 #071, #077).

확인 문제

  1. PV, EV, AC 를 각각 한 문장으로 정의하라.
  2. EV = 200, PV = 250, AC = 220 일 때 CV, SV, CPI, SPI 를 구하라.
  3. 늦게 끝난 프로젝트에서 완료 시점의 SPI 가 1 이 되는 이유는?
  4. 예제에서 TCPI(BAC)가 1.24 라는 것은 무엇을 뜻하는가?
  5. 번다운 대신 번업을 쓰면 무엇이 더 잘 보이는가?

풀이

  1. PV 는 현재까지 하기로 계획한 일의 예산, EV 는 현재까지 실제로 끝낸 일의 (계획) 예산, AC 는 끝낸 일에 실제로 쓴 비용이다.
  2. CV = 200 − 220 = −20, SV = 200 − 250 = −50, CPI = 200/220 ≈ 0.909, SPI = 200/250 = 0.8.
  3. 완료 시점에는 모든 일을 끝냈으므로 EV 가 BAC 와 같고, 계획 종료일이 지난 시점의 PV 도 BAC 이므로 EV/PV = 1 이 된다. 일정 성과를 시간이 아니라 돈으로 재기 때문이다.
  4. 원래 예산 안에 끝내려면 남은 일을 원가 효율 1.24 로 해야 한다는 뜻이다. 지금 효율(0.83)과 차이가 커서 사실상 불가능하므로 예산 증액이나 범위 축소가 필요하다.
  5. 완료 진척과 전체 범위 변화가 별개의 선으로 보이므로, 진척이 느린 것인지 범위가 늘어난 것인지 구분할 수 있다.

더 읽을거리 (References)