1. 기능점수(Function Point) 개요
- 기능점수(Function Point, FP)란 소프트웨어의 기능적 요구사항을 정량적으로 측정하여 개발 규모를 산정하는 방법임
- 1979년 IBM의 Allan Albrecht가 개발하였으며, 기술 중심의 LOC(Line of Code) 방식의 한계를 보완하고자 제안됨
- 소프트웨어가 사용자에게 제공하는 기능을 중심으로 측정하며, 언어나 플랫폼 독립적인 특성 가짐
- 국제적으로는 IFPUG(International Function Point Users Group)에서 표준화한 방법이 널리 사용됨
2. 기능점수 산정 절차
기능점수 산정은 아래 5단계를 통해 수행됨
① 기능 유형 파악 및 분류
- 사용자의 관점에서 소프트웨어의 기능을 5가지 기본 구성요소로 분류
- 외부입력(EI: External Input)
- 외부출력(EO: External Output)
- 외부조회(EQ: External Inquiry)
- 내부논리파일(ILF: Internal Logical File)
- 외부인터페이스파일(EIF: External Interface File)
② 각 기능별 복잡도 평가
- 각 기능 유형에 대해 파일 참조 수와 데이터 항목 수 등을 기준으로 복잡도 수준을 단순/보통/복잡으로 구분
- 각 복잡도 수준에 따라 고정된 점수 가중치 부여
③ 기초기능점수(Unadjusted Function Point, UFP) 산정
- 각 기능 유형별 수량 × 복잡도에 따른 가중치를 계산하여 총합을 도출함
예) EI(단순, 가중치 3점) 5개 → 5 × 3 = 15 FP
- 모든 기능 유형을 합산하여 UFP 결정
④ 조정계수(VAF: Value Adjustment Factor) 산정
- 총 14개의 일반시스템 특성(GSC: General System Characteristics)을 평가함
- 성능, 데이터통신, 트랜잭션 처리율, 복구성, 재사용성 등 포함
- 각 특성에 대해 0~5점 부여하고, 총점(TDI: Total Degree of Influence)을 이용하여 VAF 계산
VAF = 0.65 + (0.01 × TDI)
⑤ 최종기능점수(FP) 산정
- UFP × VAF를 적용하여 최종 기능점수 도출
FP = UFP × VAF
3. 기능점수 기반 산정의 특징
- 사용자 중심의 기능 기반 산정 방식
→ 코드라인 수가 아닌 사용자의 요구사항에 초점을 맞춤 - 언어, 플랫폼, 개발방법론 독립성 확보
→ Java, C, Python 등 언어에 무관하게 동일한 기능은 동일한 점수 - 초기 요구사항 단계에서도 추정 가능
→ 분석 단계에서 요구사항 명세만으로도 규모 예측 가능
4. 기능점수법의 장단점
① 장점
- 고객 관점의 기능 중심 접근으로 품질 및 사용자 만족도와 연계 용이
- 개발 초기 단계에서도 적용 가능하여 프로젝트 계획 수립에 유리
- 프로젝트 간 생산성 비교나 외주계약 단가 기준으로 사용 가능
② 단점
- 비기능 요구사항(성능, 보안 등)에 대한 고려가 부족함
- 복잡도 판단 기준에 주관성이 개입될 여지 존재
- 1차 정성적 판단 이후에도 보정 요인에 따른 해석 필요
5. 기능점수법 적용 시 유의사항
- GSC 평가는 경험자의 주관에 따라 가변적일 수 있으므로, 명확한 기준과 경험 축적 필요
- 기능 단위 식별 시 동일 기능의 중복 계상 방지
- 유지보수, 변경작업, 패키지 기반 개발 시에는 별도 보정 모델 적용 고려
- COSMIC, NESMA 등 파생된 기능점수 모델들도 존재하며, 적용 목적에 따라 적절한 선택 필요
6. 관련 도구 및 활용 방안
- FP 산정 지원 도구로는 SEER, CostXpert, Function Point Workbench 등이 활용됨
- 최근에는 자동화된 분석도구를 통한 FP 산정 시도도 확산 중
- 프로젝트 단위 견적 산정, 일정/인력 계획, 외주 과업 명세 등 다양한 분야에 활용 가능
7. 결론
기능점수 기반 소프트웨어 규모 산정법은 기능 중심의 정량적 산정 도구로서, 전통적인 LOC 기반 산정의 한계를 극복함
사용자의 관점에서 시스템을 해석하고, 초기 요구사항 단계에서부터 명확한 기준을 가지고 프로젝트 계획 수립 가능함
단, 주관적 요소와 비기능 요인 미반영 문제를 보완하기 위해, 경험 기반의 적절한 보정과 병행 모델 적용이 요구됨
'IT Study > SW 공학 및 개발방법론' 카테고리의 다른 글
🧾 기능 기반 vs 객체 기반 설계 방식의 차이와 예제 비교 (0) | 2025.04.12 |
---|---|
🧾 표준코딩 스타일 가이드(Python PEP8, Google Java Style 등) 분석 (1) | 2025.04.11 |
🧾 기능명세서(FRS)와 기술명세서(SRS)의 차이 및 작성법 (0) | 2025.04.09 |
🧾 리팩토링의 목적과 적용 시점, 코드 스멜의 종류 (1) | 2025.04.08 |
🧾 PMBOK 기반 IT 프로젝트 통제 범위(WBS, Earned Value 등) (1) | 2025.04.08 |