💡 핵심 인사이트
기능점수(FP) 방식은 소스 코드의 줄 수(LOC)가 아닌, **"사용자 관점에서 소프트웨어가 제공하는 '기능'이 얼마나 많은가?"**를 논리적으로 측정하는 비용 산정 기법입니다.
언어(Java, C 등)에 구애받지 않으며, 크게 **데이터 기능(저장/참조)**과 **트랜잭션 기능(입력/출력/조회)**으로 나누어 점수를 매깁니다.


Ⅰ. 기능점수(FP, Function Point) 개요

**알브레히트(Albrecht)**가 IBM에서 고안한 기법으로, 현재 소프트웨어 개발 비용(특히 공공기관 발주 사업)을 산정하는 가장 표준적인 방법입니다.

  • 문제의식: 똑같은 게시판을 만들어도 어셈블리어는 1,000줄이 넘고, Python은 100줄이면 됩니다. LOC 기준으로 돈을 주면 파이썬 개발자는 억울합니다.
  • 해결책: 코드가 아니라 사용자가 체감하는 논리적 기능의 개수와 복잡도를 세어 점수를 매기고, 이 점수에 단가를 곱하여 비용을 산정합니다.

Ⅱ. 기능점수의 구성 요소 (5가지 파라미터)

기능점수는 소프트웨어의 기능을 크게 **데이터 기능(Data Function)**과 트랜잭션 기능(Transaction Function) 두 그룹, 총 5가지 유형으로 분류합니다.

                        ┌── 사용자 (User) ──┐
                        │                   │
               외부입력(EI) ▼               ▲ 외부출력(EO), 외부조회(EQ)
               ┌─────────────────────────────────┐
               │    응용 소프트웨어 (Application)  │
               │                                 │
               │       [ 데이터 기능 ]             │
               │  내부논리파일(ILF) ◀─▶ 외부연계파일(EIF)
               └─────────────────────────────────┘

1. 데이터 기능 (Data Functions)

사용자의 요구사항을 충족하기 위해 애플리케이션이 유지/관리하거나 참조하는 논리적인 데이터 그룹(DB 테이블 등)입니다.

유형약어 (Full Name)설명예시
내부논리파일ILF (Internal Logical File)해당 애플리케이션 내부에서 직접 생성, 수정, 삭제하며 관리하는 데이터 그룹. (권한이 내게 있음)회원정보 테이블, 게시글 테이블
외부연계파일EIF (External Interface File)해당 애플리케이션 내에서는 유지되지 않지만, 참조를 위해 외부 시스템에서 읽어오는 데이터 그룹.타 기관의 날씨 API 정보, 결제 대행사 응답 데이터

2. 트랜잭션 기능 (Transaction Functions)

사용자가 데이터를 입력받아 시스템의 상태를 변경하거나, 시스템이 데이터를 가공하여 사용자에게 보여주는 동적인 처리 과정입니다.

유형약어 (Full Name)설명예시
외부입력EI (External Input)시스템 외부에서 내부로 데이터가 들어와 **ILF를 변경(추가/수정/삭제)**하는 프로세스.회원가입 처리, 게시글 작성
외부출력EO (External Output)계산이나 수학적 공식을 통해 데이터를 파생/가공하여 시스템 외부로 보여주는 프로세스. (DB값을 단순히 읽는 게 아니라 가공함)이자율 계산 후 출력, 월별 매출 통계 그래프
외부조회EQ (External Inquiry)ILF나 EIF에서 데이터를 읽어와서 별도의 계산이나 가공 없이 단순 검색/조회하여 그대로 보여주는 프로세스.회원 목록 단순 검색, 게시글 읽기

📢 섹션 요약 비유: 기능점수는 식당의 요금을 매길 때 요리사가 주방에서 칼질을 몇 번 했는가(LOC)가 아니라, 냉장고 재료(ILF)와 배달받은 재료(EIF)를 이용해, 손님 주문(EI)을 받아 불에 볶고(EO)나 그냥 썰어서(EQ) 나간 '메뉴의 수와 난이도'로 계산하는 방식입니다.


Ⅲ. 기능점수 산정 절차

기능을 단순히 세는 것으로 끝나지 않고, 프로젝트의 기술적 어려움을 반영해 점수를 보정합니다.

  1. 유형별 개수 산정: 시스템의 기능들을 ILF, EIF, EI, EO, EQ로 식별하고 개수를 셉니다.
  2. 미조정 기능점수 (UFP, Unadjusted FP) 계산: 각 기능의 복잡도(단순/보통/복잡)에 따른 가중치를 곱해 모두 더합니다.
  3. 값 조정 인자 (VAF, Value Adjustment Factor) 산정: 시스템의 기술적 복잡도(분산 처리 여부, 성능 요구치, 보안성 등 14개 특성)를 평가하여 보정 계수를 구합니다.
  4. 조정 기능점수 (AFP, Adjusted FP) 계산: 최종 FP = 미조정 FP(UFP) × 값 조정 인자(VAF) 공식으로 최종 산출합니다.