소프트웨어의 크기를 숫자로 잰다고? Function Point 제대로 이해하기
우리는 일상 속에서 수많은 소프트웨어를 사용하고 있습니다. 그런데 이 소프트웨어는 얼마나 크고 복잡한지, 또는 개발 난이도가 얼마나 되는지를 어떻게 측정할 수 있을까요?
보통 하드웨어는 물리적 크기나 무게로 측정할 수 있지만, 소프트웨어는 눈에 보이지 않고, 단순한 코드 줄 수(Line of Code, LOC)로만 판단하기엔 애매한 경우가 많습니다. 그래서 등장한 개념이 바로 Function Point (FP) 입니다.
오늘은 이 펑션 포인트라는 개념이 무엇이고, 왜 필요한지, 그리고 실제로 어떻게 활용되는지를 알아보겠습니다.
Function Point란 무엇인가?
Function Point는 1979년 IBM의 Allan Albrecht가 제안한 방법으로, 소프트웨어의 크기를 기능적인 측면에서 정량적으로 측정하는 기법입니다.
즉, 소프트웨어가 사용자에게 제공하는 기능의 수와 복잡도를 기준으로 점수를 매기고, 이를 통해 시스템의 크기를 평가하는 방식입니다.
Function Point는 "이 시스템이 사용자에게 제공하는 유의미한 기능이 몇 개인가?"를 점수화한 것입니다.
Function Point가 왜 필요한가요?
소프트웨어 프로젝트에서는 견적 산정, 일정 계획, 인력 배분 등이 매우 중요합니다. 하지만 프로젝트마다 사용하는 언어나 방식이 다르고, 사람마다 생산성이 다르기 때문에 절대적인 기준이 필요합니다.
Function Point는 이러한 문제를 해결해주는 도구입니다.
주요 활용 목적
- 개발 비용 산정
- 프로젝트 일정 계획
- 생산성 측정 (Function Point당 인건비/시간)
- 외주 견적 협상
- 프로젝트 비교 분석
Function Point 구성요소
Function Point는 크게 5가지 구성요소로 이루어져 있으며, 각각의 기능 유형에 따라 가중치를 부여해 점수를 산정합니다.
- 외부 입력 (EI): 사용자나 다른 시스템에서 데이터를 입력하는 기능 – 예: 회원 가입, 게시글 작성
- 외부 출력 (EO): 처리된 데이터를 사용자에게 출력하는 기능 – 예: 보고서 출력, 검색 결과 표시
- 외부 조회 (EQ): 단순 조회 기능 – 예: 특정 회원 정보 조회
- 내부 논리 파일 (ILF): 시스템 내부에 저장된 데이터 – 예: 회원 테이블, 상품 DB
- 외부 인터페이스 파일 (EIF): 다른 시스템과 연동되는 데이터 – 예: 외부 ERP 시스템과 연동
Function Point 계산 절차
- 기능 항목 파악: 5개 유형의 기능을 목록화
- 복잡도 평가 및 가중치 부여: 각 기능의 난이도에 따라 점수 부여
- 기본 기능 점수 계산: Unadjusted Function Point (UFP) 산정
- 보정 계수 적용: 성능, 신뢰성 등 14가지 시스템 특성 반영
- 최종 Function Point 산출: 최종 FP = UFP × 보정 계수
예시: 간단한 도서 관리 시스템
기능 유형 | 기능 설명 | 난이도 | 점수 |
---|---|---|---|
EI | 도서 등록 | 보통 | 4점 |
EO | 도서 리스트 출력 | 보통 | 5점 |
EQ | 도서 검색 | 간단 | 3점 |
ILF | 도서 데이터베이스 | 보통 | 7점 |
EIF | 외부 회원 DB 연동 | 복잡 | 10점 |
총점: 29 FP
이 수치를 기반으로 시간, 인건비, 일정 등을 추정할 수 있습니다.
장점과 한계
장점
- 언어와 기술에 독립적인 측정
- 사용자 요구 중심의 측정 방식
- 비교 가능성과 재사용성 확보
한계
- 초기에 정확한 요구사항 분석이 필수
- 기능 중심이므로 UI/UX나 비기능 요구사항 반영 어려움
- 초보자는 측정이 까다로울 수 있음
마무리하며
Function Point는 소프트웨어를 숫자로 표현하려는 시도의 결과물입니다. 단순한 코드 양이 아닌, 사용자 입장에서 얼마나 많은 가치 있는 기능을 제공하는가를 기준으로 삼는다는 점에서 매우 유용합니다.
소프트웨어 프로젝트를 계획하거나, 개발 비용을 산정해야 할 때, Function Point는 정량적 판단을 도와주는 훌륭한 도구가 됩니다.
아직 익숙하지 않더라도, FP 개념을 이해하고 실무에 조금씩 적용해 본다면, 훨씬 더 객관적이고 체계적인 개발 계획이 가능해질 것입니다.
✍ 여러분은 Function Point를 실무에 활용해보신 적이 있나요?
댓글로 경험을 공유해 주세요!