소프트웨어 비용산정으로 프로젝트 범위와 자원을 계획하는 법
상향식·하향식 산정과 COCOMO, 기능점수법, Halstead, McCabe 지표를 활용해 소프트웨어 개발 비용과 자원을 계획하는 방법
2026-08-14 · 최초 발행 2025-05-23
비용은 프로젝트의 규모와 경계를 읽는 데서 나온다
소프트웨어 비용산정은 개발 대상의 양적·질적 규모를 파악하고, 필요한 공수·투입 자원·소요 기간을 예측해 실행 가능한 계획으로 만드는 과정이다. 예산 편성뿐 아니라 사업관리의 기준을 세우고 이해관계자 사이의 의사소통을 맞추는 데도 쓰인다.
산정 결과는 프로젝트 계획과 예산 편성의 기초 자료가 되며, 범위와 자원에 대한 합의를 유지하는 기준점이 된다.
프로젝트를 쪼개거나, 전체에서 내려오는 산정 방식
비용을 추정하는 접근은 세부 작업을 쌓아 올리는 방식, 전체 프로젝트를 분해하는 방식, 수학적 모델을 사용하는 방식으로 나뉜다.
상향식(Bottom-up) 접근은 작업 단위에서 전체로 확장한다. LOC(Lines of Code), MM(Man-Month), 수학적 모델을 활용해 세부 항목을 산정한 뒤 합산하는 방식이다.
하향식(Top-down) 접근은 전체 프로젝트를 먼저 보고 세부 작업으로 나눈다. 전문가 판단법, 전문가 집단의 합의를 이용하는 델파이 기법, MM 기반 산정이 여기에 포함된다.
수학적 산정 모델은 소프트웨어의 양적 규모와 질적 특성을 함께 고려해 비용을 계산한다.
규모와 공수를 연결하는 산정 모델
COCOMO
Barry Boehm이 개발한 COCOMO(Constructive Cost Model)는 LOC를 측정한 뒤 공식에 대입해 MM을 예측한다. 규모를 측정하고, 수식에 넣고, 소요 인원월을 예측한 결과를 비용 산정으로 연결한다.
COCOMO는 프로젝트 규모에 따라 다음과 같이 구분된다.
- Basic COCOMO: 소규모 프로젝트용, MM = a * (KLOC)^b
- Intermediate COCOMO: 중간 규모, 15개 비용 인자 추가
- Detailed COCOMO: 대규모, 하위 시스템별 계산 후 통합
기능점수법
Allan Albrecht(IBM)가 개발한 기능점수법(Function Point, FP)은 사용자가 보는 논리적 기능과 복잡도를 평가한다. 프로그래밍 언어에 독립적이라는 점이 특징이다.
측정 대상은 외부 입력(EI), 외부 출력(EO), 외부 조회(EQ), 내부 논리 파일(ILF), 외부 인터페이스 파일(EIF)이다. 기능을 식별하고 복잡도를 평가한 뒤 미조정 기능점수를 계산하고, 영향도 계수를 적용해 최종 기능점수를 구한다.
FP는 기능 유형별 개수와 복잡도 가중치를 곱해 미조정 기능점수(UFP)를 구한 후, 14개 일반 시스템 특성(GSC)에 따른 영향도 계수(VAF)를 적용한다.
최종 FP = UFP * VAF
Halstead Software Science
Maurice Halstead의 모델은 소프트웨어 규모와 난이도 척도를 사용해 소요공수를 예측한다. 주요 요소는 다음과 같다.
- N1: 연산자 종류 수
- n1: 연산자 총 발생빈도수(중복 카운트)
- N2: 피연산자 종류 수
- n2: 피연산자 총 발생빈도수(중복 카운트)
규모와 노력은 다음 공식으로 계산한다.
- 프로그램 용량(V) = [N1 + N2] * log₂[n1 + n2]
- 프로그램 길이(N) = n1 + n2
- 프로그램 난이도(D) = (N1/2) * (n2/N2)
- 개발 노력(E) = D * V
McCabe 순환복잡도
Thomas McCabe의 순환복잡도(Cyclomatic Complexity)는 프로그램의 논리적 복잡도를 측정하고 필요한 테스트 케이스 수를 예측하는 데 사용된다.
계산식은 다음과 같다.
- V(G) = E - N + 2 (E: 간선 수, N: 노드 수)
- V(G) = P + 1 (P: 조건 분기문 수)
위 플로우차트에서는 간선(E) = 8, 노드(N) = 6이므로 V(G) = 8-6+2 = 4다. 조건분기(P) = 3으로 계산하면 V(G) = 3+1 = 4가 된다.
요구사항에서 직접경비까지 이어지는 산정 흐름
비용산정은 요구사항과 범위를 먼저 정한 뒤 규모, 개발비, 직접경비를 순서대로 검토한다.
요구사항 단계에서는 고객 요구사항을 수집·분석하고 기능적·비기능적 요구사항을 식별한다. 이어서 프로젝트 경계를 정하고 포함·제외 기능을 명확히 한다.
규모 산정에서는 LOC나 FP처럼 프로젝트에 맞는 방법을 선택해 소프트웨어 규모를 측정한다. 보정 전 개발비는 기본 인건비를 바탕으로 초기 개발비를 산출하는 단계다. 이후 개발 환경, 복잡도, 팀 역량 등의 보정 요소를 반영해 개발비를 산정한다.
마지막으로 하드웨어·소프트웨어 구매 비용, 출장비, 교육비 같은 직접경비를 더해 최종 비용을 구성한다.
고객관리 웹 애플리케이션 산정 예시
A사가 고객 정보 관리, 주문 처리, 통계 리포트 생성을 제공하는 고객관리 웹 애플리케이션을 개발하려 한다고 가정한다. 기능점수 산정은 다음과 같다.
| 구분 | 기능 유형 | 복잡도 | 가중치 | 점수 |
|---|---|---|---|---|
| 외부 입력(EI) | 고객정보 입력 | 중간 | 4 | 4 |
| 외부 입력(EI) | 주문정보 입력 | 복잡 | 6 | 6 |
| 외부 출력(EO) | 주문 내역 출력 | 중간 | 5 | 5 |
| 외부 출력(EO) | 통계 리포트 | 복잡 | 7 | 7 |
| 외부 조회(EQ) | 고객정보 조회 | 단순 | 3 | 3 |
| 내부 논리 파일(ILF) | 고객 DB | 복잡 | 15 | 15 |
| 내부 논리 파일(ILF) | 주문 DB | 복잡 | 15 | 15 |
| 외부 인터페이스 파일(EIF) | 결제 시스템 | 중간 | 7 | 7 |
미조정 기능점수(UFP)는 62다. 14개 GSC를 평가한 뒤 영향도 계수(VAF)는 1.1로 산출한다.
FP = 62 * 1.1 = 68.2
인당 월별 개발 기능점수를 15 FP로 두면 필요 MM은 68.2 ÷ 15 ≈ 4.55 MM이다. 월별 인건비가 8백만원일 때 개발 비용은 4.55 * 8 = 36.4백만원이다.
직접경비는 서버 임대 2백만원, 라이선스 1.5백만원, 기타 1백만원으로 4.5백만원이다. 따라서 총 비용은 36.4 + 4.5 = 40.9백만원이 된다.
산정값을 유지하려면 함께 봐야 할 변수
한 가지 모델만으로 값을 확정하기보다 다양한 비용산정 모델을 병행하고, 과거 유사 프로젝트 데이터를 활용하며, 전문가 검토를 거치는 방식이 정확도를 높이는 데 도움이 된다.
요구사항의 불명확성, 기술적 복잡도, 팀 경험 부족, 일정 제약은 산정 오차를 키울 수 있다. 낙관적 추정을 피하고 충분한 버퍼를 확보해야 하며, 프로젝트가 진행되는 동안에는 변화한 요구사항과 환경을 반영해 산정값을 주기적으로 다시 검토해야 한다.
비용산정은 단순한 계산이 아니라 프로젝트의 범위와 자원 조건을 이해하는 작업이다. 이를 바탕으로 자원을 배분하고 일정을 세우며, 프로젝트 특성에 맞는 계획을 유지할 수 있다.