현재 선택한 정보처리 과정

정보처리기사 필기 이론 학습

이론 목록으로 돌아가기

비용 산정: LOC·기능점수·COCOMO·Putnam

규모·노력·기간·인원을 구분하여 LOC와 기능점수를 계산한다. COCOMO의 개발 유형과 상세 수준을 구분하고 Putnam·SLIM의 관계를 이해한다. 비용과 연결되는 임계경로·간트 차트의 기본 원리도 정리한다.

예상 읽기 11

핵심 요약

비용 산정에서는 규모·노력·기간·인원·비용을 구분해야 한다. LOC와 기능점수는 주로 규모를 나타내고, COCOMO와 Putnam은 규모 및 프로젝트 특성으로 노력·기간 등을 추정하는 모델이다.

항목의미대표 단위
규모개발할 소프트웨어의 양LOC, KLOC, FP
노력사람이 투입하는 작업량사람-월, 인월, MM
기간시작부터 완료까지의 경과 시간개월, 일
인원함께 투입되는 사람 수
비용인력·장비 등에 드는 금액

12인월은 ‘12명이 필요하다’나 ‘12개월이 걸린다’와 같은 뜻이 아니다. 예를 들어 평균 3명이 4개월 투입된 작업량이 12인월이다. 실제 개발에서는 인원을 늘린 만큼 기간이 정확히 반비례하지는 않는다.

1. 산정 접근과 비용 결정 요소

하향식 산정은 전체 경험과 유사 프로젝트 등을 이용해 큰 규모에서 추정한다. 전문가 판단, 여러 전문가 의견을 반복 수렴하는 델파이 기법이 대표적이다. 상향식 산정은 작업을 작은 단위로 나누어 각각을 추정한 뒤 합산한다.

델파이 기법은 익명 의견 수집과 반복적인 피드백으로 특정 인물의 영향과 집단 압력을 줄인다. 전문가 몇 명이 자유롭게 토론하는 회의와 구분한다.

비용에는 제품 규모·복잡도·신뢰성 요구, 개발자의 능력·경험, 도구·하드웨어, 재사용 정도, 일정 제약 등이 영향을 준다. 산정 결과는 확정된 자연법칙이 아니라 입력과 가정에 의존하는 추정치다.

2. LOC 기반 산정

LOC(Lines of Code)는 소스 코드의 행 수이며, KLOC는 1,000 LOC다. 주석·공백·자동 생성 코드 등을 포함하는지 계수 기준을 맞춰야 비교가 가능하다. 언어와 표현 방식에 영향을 받으므로 서로 다른 언어의 LOC를 그대로 같은 기능 규모로 해석하면 안 된다.

기본 계산식은 다음과 같다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
노력(인월) = 총 LOC ÷ 1인월당 생산성
개발 기간(개월) = 노력(인월) ÷ 평균 투입 인원(명)
평균 인원(명) = 노력(인월) ÷ 개발 기간(개월)
인건비 = 노력(인월) × 1인월당 비용

예제: 규모 30,000 LOC, 생산성 500 LOC/인월, 평균 인원 5명, 1인월당 비용 400만 원이라고 하자.

노력은 30,000 ÷ 500 = 60인월, 기간은 60 ÷ 5 = 12개월, 인건비는 60 × 400만 = 2억 4,000만 원이다. 장비·운영비 등을 별도로 요구하면 추가해야 하며, 이 인건비를 무조건 총사업비로 보아서는 안 된다.

좌우로 이동해 그림을 확인하세요.그림 크게 보기
30,000 LOC를 500 LOC/인월로 개발하면 60인월이다. 평균 5명은 12개월, 인월당 400만 원은 2억 4,000만 원이다.
30,000 LOC를 500 LOC/인월로 개발하면 60인월이다. 평균 5명은 12개월, 인월당 400만 원은 2억 4,000만 원이다.

세 점 추정

낙관치 O, 최빈치 M, 비관치 P가 주어질 때 사용하는 전통적 가중 추정식은 다음과 같다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
추정값 E = (O + 4M + P) ÷ 6

O=4, M=7, P=16이면 (4+28+16)÷6=8이다. 세 값이 기간이면 결과도 기간이며, LOC 추정치라면 결과는 LOC다. 문제에서 주어진 단위를 유지한다. 이 식을 단순 산술평균 (O+M+P)÷3과 혼동하지 않는다.

3. 기능점수(FP)

기능점수(Function Point)는 사용자가 요구하는 기능을 기준으로 소프트웨어의 기능 규모를 측정한다. LOC에 비해 프로그래밍 언어와 구현 방식의 영향을 덜 받는다. 단순한 화면 수나 DB의 물리적 테이블 수를 그대로 세는 방법은 아니다.

애플리케이션 경계를 먼저 정한 뒤 다음 다섯 기능 유형을 분류한다.

유형의미구분 단서
EI: 외부 입력경계 밖에서 들어와 내부 논리 파일을 유지하거나 동작을 변경하는 처리등록·수정·삭제 등
EO: 외부 출력계산·파생 등 처리를 포함해 경계 밖으로 정보를 제공합계·통계·파생 보고
EQ: 외부 조회복잡한 파생 처리 없이 데이터를 검색하여 제공단순 조회
ILF: 내부 논리 파일해당 애플리케이션이 유지하는 논리적 데이터 그룹누가 데이터를 유지하는가
EIF: 외부 연계 파일다른 애플리케이션이 유지하고 현재 애플리케이션이 참조하는 데이터 그룹외부 유지·현재 시스템 참조

EI·EO·EQ는 트랜잭션 기능, ILF·EIF는 데이터 기능이다. 외부에서 데이터를 받았다는 사실만으로 EIF가 되는 것은 아니다. 해당 시스템이 데이터를 유지하는지, 다른 시스템이 유지하는 것을 읽는지가 중요하다.

전통적 기능점수의 복잡도별 가중치는 다음과 같다.

기능 유형낮음보통높음
EI346
EO457
EQ346
ILF71015
EIF5710

미조정 기능점수 UFP = Σ(기능별 개수 × 해당 복잡도 가중치)다. 예를 들어 보통 복잡도의 EI 3개, EO 2개, EQ 1개, ILF 2개, EIF 1개이면 3×4 + 2×5 + 1×4 + 2×10 + 1×7 = 53 FP다.

DET는 사용자가 식별하는 데이터 요소, FTR은 트랜잭션이 참조·유지하는 파일 유형, RET는 데이터 기능 내부의 논리적 레코드 하위 그룹이다. 복잡도 판정표가 주어지면 해당 기준에 따라 복잡도를 구한 뒤 가중치를 적용한다.

전통적인 보정 모형이 문제에 제시되면 다음 식을 적용한다.

CODE코드 영역 안에서 좌우로 이동할 수 있습니다.
VAF = 0.65 + 0.01 × TDI
조정 기능점수 = UFP × VAF

TDI는 문제에서 제시한 영향도 합계다. TDI=35이면 VAF=1이므로 위 예제의 조정 기능점수는 53이다. 보정계수를 사용하는 전통적 계산과 기능 규모 자체의 측정을 구분하고, 모든 FP 문제에 임의로 보정을 추가하지 않는다.

4. COCOMO

COCOMO(Constructive Cost Model)는 소프트웨어 규모 등을 사용해 개발 노력을 추정하는 경험적 모델이다. 고전적인 COCOMO 81에서는 KLOC를 주요 입력으로 사용한다.

개발 유형별 분류

유형대표 특성전통적 규모 구분의 단서
조직형·유기형(Organic)비교적 작은 팀, 익숙한 업무, 유연한 제약대체로 5만 LOC 이하
반분리형(Semi-detached)경험 수준이 섞인 팀, 중간 규모·복잡도대체로 5만~30만 LOC
내장형(Embedded)하드웨어·운영·안전 등 강한 제약과 높은 복잡도대규모 또는 엄격한 제약

규모만으로 프로젝트의 성격을 완전히 결정하지는 않는다. 특히 내장형은 단순히 ‘큰 프로그램’보다 엄격한 제약 조건이 핵심이다. 문제에서 구간 경계를 따로 주면 그 조건을 따른다.

상세 수준별 분류

수준특징
Basic규모와 개발 유형을 중심으로 산정
Intermediate비용 동인을 반영하는 노력 조정 계수(EAF) 추가
Detailed개발 단계별 영향과 비용 동인을 더 상세하게 반영

Organic·Semi-detached·Embedded는 개발 유형, Basic·Intermediate·Detailed는 모형의 상세 수준이다. 한 분류의 여섯 종류처럼 나열하지 않는다.

Basic COCOMO의 전통적인 식은 노력 E=a×KLOC^b, 기간 D=c×E^d다.

유형abcd
Organic2.41.052.50.38
Semi-detached3.01.122.50.35
Embedded3.61.202.50.32

예를 들어 Organic 32 KLOC에서는 E≈91.33인월, D≈13.90개월, 평균 인원은 91.33÷13.90≈6.57명이다. 계산 문제에서는 주어진 모델과 계수, KLOC 단위를 먼저 확인한다.

COCOMO II는 재사용과 현대적 개발 환경을 반영하도록 발전한 후속 모형이다. COCOMO 81의 세 개발 유형과 계수를 COCOMO II에 그대로 대입하지 않는다.

5. Putnam과 자동화 추정 도구

Putnam 모형은 개발 규모·생산성·일정·노력 사이의 관계와 Rayleigh-Norden 곡선에 따른 인력 투입 분포를 이용한다. 인력이 프로젝트 내내 같은 수준으로 투입된다고 보는 방식이 아니다.

소프트웨어 방정식의 대표 표현은 S=Cₖ×E^(1/3)×T^(4/3)이다. S는 규모, E는 노력, T는 개발 기간, Cₖ는 기술·생산성 관련 계수다. 같은 규모와 기술 조건에서 기간을 무리하게 줄이면 필요한 노력이 크게 증가할 수 있음을 보여준다. 식의 시간 단위와 보정 조건을 섞어서는 안 된다.

SLIM은 Putnam 모형에 기반한 산정 도구다. ESTIMACS는 기능점수 등에 기반한 비용 추정 도구로 구분한다. 실제 모델 교정 절차보다 도구와 기반 모형의 연결을 먼저 이해한다.

6. 비용과 연결되는 일정 계획

프로젝트 관리의 3P를 묻는 분류에서는 People(사람), Problem(문제), Process(프로세스)를 구분한다. 사람은 참여 인력과 조직, 문제는 해결할 대상·범위, 프로세스는 수행할 작업과 절차의 틀이다. 작업 프레임워크를 선택하는 것은 Process와 연결한다.

비용을 산정한 뒤에는 작업 간 선후 관계에 따라 일정을 정한다. WBS는 전체 작업을 관리 가능한 작은 단위로 분해하는 구조다. PERT는 불확실한 작업 기간을 세 점 추정 등으로 다루고, CPM은 작업의 선후 관계와 기간으로 임계경로를 찾는 기법이다.

임계경로는 시작부터 완료까지 시간이 가장 긴 경로이며, 단순한 선후 관계 모형에서 프로젝트의 최소 완료 기간을 결정한다. 작업 하나의 시간이 가장 짧은 경로를 고르는 문제가 아니다. 간트 차트는 작업별 시작·종료·기간을 수평 막대로 표현한다.

예를 들어 A 2일 후 B 3일과 C 5일을 병렬 수행하고, 둘 다 끝나야 D 1일을 시작한다면 A-B-D는 6일, A-C-D는 8일이다. 임계경로는 A-C-D이고 최소 완료 기간은 8일이다. 병렬 작업 B와 C를 단순히 모두 합산하면 잘못된 기간이 된다.

좌우로 이동해 그림을 확인하세요.그림 크게 보기
A 2일 뒤 B 3일과 C 5일을 병행하고 둘 다 끝난 뒤 D 1일을 수행한다. 최장 경로 A-C-D는 8일이다.
A 2일 뒤 B 3일과 C 5일을 병행하고 둘 다 끝난 뒤 D 1일을 수행한다. 최장 경로 A-C-D는 8일이다.

비용·규모·일정 계산의 조건과 단위

기능점수의 경계

기능별 수와 가중치를 합산한 값은 미조정 기능점수이며, 조정 계수가 적용되는 방법에서는 그 계수의 조건을 확인한다. 산정 규칙이 다른 값을 섞지 않는다. 기능 규모 320 FP, 생산성 8 FP/인월이라면 노력은 40인월이다. 인월 단가 500만 원이면 인건비는 2억 원이다. 이는 주어진 선형 생산성 가정 아래의 계산이며 실제 일정에 무조건 동일하게 적용되는 법칙은 아니다.

COCOMO·Putnam

전통적인 COCOMO의 Organic·Semi-detached·Embedded는 프로젝트 특성의 분류이고 Basic·Intermediate·Detailed는 산정 모델의 상세화 수준이다. 축을 서로 바꿔 외우지 않는다. 기본 노력식이 E=a×KLOC^b로 주어졌다면 계수와 규모 단위를 그대로 적용한다. Intermediate 방식의 노력 조정 계수 EAF는 비용 유발 요인의 승수들을 곱하여 적용한다. 예를 들어 기본 노력 50인월, 두 승수 1.2와 0.9이면 54인월이다.

LOC 비교에는 주석·빈 줄·생성 코드 등을 세는 동일한 규칙이 필요하다.

일정과 비용의 서로 다른 양

노력(인월)=평균 인원×기간(월)은 문제에서 균등 투입을 가정할 때의 관계다. 인원을 두 배로 늘리면 항상 기간이 절반이 된다는 의미는 아니다. WBS는 필요한 작업 범위를 계층적으로 분해한 구조이며, 그 자체가 선후 관계나 주공정을 계산한 결과는 아니다.

PERT의 기대시간은 (a+4m+b)/6, 분산은 ((b−a)/6)^2이다. 기대시간이 같아도 낙관·비관 시간의 차이가 다르면 분산은 다르다. CPM에서는 가능한 경로의 소요시간을 구하고 가장 긴 경로가 전체 최소 완료시간을 결정한다. 비주공정 작업의 여유를 초과해 지연되면 주공정이 바뀔 수 있다. 기본 주공정·여유시간의 이해와 여러 단축 대안을 최적화하는 고급 일정 기법은 구분한다.

총비용 계산에서는 인월 단가, 인원별 월 비용, 공통 월 비용, 최초 한 번 발생하는 고정비를 분리한다. 총 인건비를 구한 뒤 서버 월 비용을 다시 인원 수만큼 곱하는 식의 이중 계산을 피한다.

산정의 방향과 근거

상향식 산정은 세부 작업의 노력을 추정한 뒤 합산한다. 하향식 산정은 전체 추정치를 먼저 정하고 세부 영역에 배분한다. 유추 산정은 과거 유사 프로젝트와의 차이를 반영하며, 델파이 기법은 익명 전문가 의견을 반복적으로 수렴한다. 작업별 합산에서는 공통 작업의 누락·중복과 가정의 차이를 검토한다.