기능점수로 산정하는 사용자 관점의 소프트웨어 규모
기능점수(FP)의 데이터·트랜잭션 기능 분류, UFP와 VAF 산식, 공공 SW 사업 대가 보정계수를 정리한다.
2026-08-14 · 최초 발행 2026-04-17
사용자에게 제공되는 기능으로 규모를 측정한다
소프트웨어 규모를 코드 라인 수(LOC)로 판단하면 개발 언어와 코딩 방식에 따라 결과가 달라진다. 기능점수(Function Point, FP)는 이 한계를 피하기 위해 사용자가 받는 기능을 기준으로 규모를 정량화하는 방식이다.
구현 기술이나 프로그래밍 언어와 분리해 외형적 기능을 측정하므로, 같은 기능이라면 Java, C++, Python 등 어떤 언어로 개발하더라도 동일한 기능점수가 산출된다. 분석과 설계 단계에서도 산정할 수 있어 초기 비용 예측에 쓰이며, 기능점수당 결함 수나 기능점수당 투입 인력(M/M)처럼 품질과 생산성을 비교하는 지표로도 활용된다.
데이터의 관리와 이동을 나눠 본다
FP는 데이터 기능과 트랜잭션 기능으로 나뉜다. 전자는 애플리케이션이 관리하거나 참조하는 데이터의 복잡도를, 후자는 데이터가 경계를 넘으며 처리되는 흐름을 다룬다.
데이터 기능에는 다음 항목이 있다.
- ILF (Internal Logical File, 내부논리파일): 대상 애플리케이션 내부에서 유지관리되는 논리적으로 연관된 데이터 그룹이다. 사용자 테이블이나 주문 마스터 테이블 등이 이에 해당한다.
- EIF (External Interface File, 외부연계파일): 다른 애플리케이션이 유지관리하지만 현재 애플리케이션이 참조 목적으로 사용하는 데이터 그룹이다.
트랜잭션 기능은 데이터의 입력, 출력, 조회를 구분한다.
- EI (External Input, 외부입력): 애플리케이션 경계 밖에서 들어와 내부 파일을 갱신하거나 제어 정보를 변경하는 기능이다.
- EO (External Output, 외부출력): 내부 데이터를 처리해 정보를 만들고 사용자에게 전달하는 기능이다. 단순 조회와 달리 수학적 계산이나 통계적 처리가 수반된다.
- EQ (External Inquiry, 외부조회): 데이터를 검색하고 출력하는 기능이다. 데이터 변형이나 계산 없이 있는 그대로 보여주는 단순 조회에 해당한다.
가중치와 조정인자로 점수를 계산하는 방식
산정에서는 먼저 측정 범위를 정하고 기능을 분류한다. 각 기능의 개수에 복잡도 가중치를 적용해 미조정 기능점수를 구한 다음, 프로젝트 환경 특성을 반영한 조정계수를 적용한다.
미조정 기능점수(UFP)는 데이터 기능점수와 트랜잭션 기능점수를 합한 값이다.
미조정 기능점수(UFP) = 데이터 기능점수 + 트랜잭션 기능점수
조정 단계에서는 분산처리, 성능, 신뢰성, 다중사이트 영향도 등을 포함한 프로젝트의 환경적 특성 14가지를 고려한다.
- 조정인자(VAF) = {각 14개 항목 × (0~5점)의 합} × 0.01 + 0.65
- 조정기능점수 = UFP × VAF
개발 프로젝트 기능점수(DEP)는 순수 개발 기능 외에 데이터 전환(Conversion) 기능까지 포함한 프로젝트 전체 규모를 나타낸다.
DEP = (UFP + CFP) × VAF
(CFP: 데이터 컨버전 기능점수)
공공 SW 사업 대가 산정에 적용되는 보정계수
대한민국 공공 소프트웨어 사업에서는 지식경제부(현 산업통상자원부) 고시 기준에 따라 개발 원가를 산출한다. 보정 전 개발원가를 구한 뒤, 소프트웨어 특성에 맞는 보정계수를 적용하는 구조다.
- 보정 전 개발원가 = UFP × 기능점수당 원가
- 개발원가 = 보정 전 개발원가 × (보정계수 합)
규모 보정계수는 프로젝트 크기에 따른 생산성 차이를 반영하며, FP 300 미만인 경우 0.65를 적용한다. 애플리케이션(AP) 유형 보정계수는 업무 난이도를 반영한다.
- 단순 업무처리용: 1.0
- 과학기술용: 1.2
- 멀티미디어/통신제어: 1.3
- 지능정보형: 1.7
언어 보정계수는 개발 언어의 생산성을 반영한다.
- 어셈블리: 1.9
- C/Java: 1.2
이 밖에 신뢰성, 성능, 보안성 요구사항은 품질 및 특성 보정계수에 반영된다.
기능을 분류해 원가 산정까지 연결하는 흐름
규모 추정의 공통 언어가 되는 이유
기능점수는 논리적 기능을 세분화해 측정하므로 주관적 개입을 줄일 수 있다. 발주자와 개발자는 모두 기능을 기준으로 규모를 논의할 수 있고, 운영 중인 소프트웨어의 기능을 지속적으로 측정해 유지보수 비용 산정의 근거로 삼을 수도 있다.
다만 측정 자체에는 숙련된 기능점수 측정 전문가가 필요하며 초기 학습 곡선도 존재한다. 알고리즘 복잡도나 내부 성능 최적화 노력은 기능점수에 직접 반영되지 않을 수 있으므로, 프로젝트 특성에 맞춰 조정계수를 세밀하게 적용해야 한다.
FP는 소프트웨어를 물리적 양인 LOC가 아니라 논리적 가치인 기능으로 평가한다. ILF, EIF, EI, EO, EQ로 요구사항을 분해하고 정량화하면 대가 산정과 생산성 관리에 필요한 기준을 만들 수 있다.
Sources
- 지식경제부 SW사업 대가 산정 가이드
- 정보처리기술사 도메인 포커스: 소프트웨어 공학
- IFPUG (International Function Point Users Group) CPM Manual