1. 펑션포인트( Function Point )의 개념
펑션포인트는 사용자 관점에서 소프트웨어의 기능을 수치로 표현한 것입니다. 즉, 소프트웨어가 사용자에게 제공하는 기능의 ‘규모’를 점수로 나타내는 방법입니다. 기능의 크기를 측정하는 기준은 ‘사용자에게 제공되는 기능 단위’로, 이를 통해 개발의 복잡도와 노력을 추정할 수 있습니다.
펑션포인트는 소프트웨어 개발의 초기 단계에서 요구사항 분석 결과를 바탕으로 산출할 수 있어서, 프로젝트 계획, 비용 산정, 인력 배치, 일정 관리 등에 활용됩니다.
2. 펑션포인트 측정 요소
펑션포인트는 크게 5가지 주요 기능 요소와 복잡도 조정 요소로 구성됩니다.
1) 주요 기능 요소 (5가지)
- 내부 논리 파일 (Internal Logical Files, ILF)
시스템 내부에서 관리하는 논리적 데이터 그룹입니다. 예를 들어, 고객 정보, 제품 목록 등 시스템이 직접 저장하고 관리하는 데이터 파일을 의미합니다.
- 외부 인터페이스 파일 (External Interface Files, EIF)
시스템 외부에 존재하지만, 시스템에서 참조하는 논리적 데이터 그룹입니다. 예를 들어, 다른 시스템의 데이터베이스를 읽기만 하는 경우 해당 데이터가 EIF가 됩니다.
- 외부 입력 (External Inputs, EI)
시스템에 데이터나 제어 정보를 입력하는 기능입니다. 예를 들어, 사용자 입력 화면, 데이터 등록, 수정 등이 포함됩니다.
- 외부 출력 (External Outputs, EO)
시스템에서 처리된 데이터를 외부로 출력하는 기능입니다. 보고서, 조회 결과, 메시지 출력 등이 해당됩니다.
- 외부 조회 (External Inquiry, EQ)
사용자에게 데이터를 조회하여 보여주는 기능으로, 입력과 출력이 결합된 형태지만, 데이터 처리(계산)가 거의 없고 단순 조회에 해당합니다.
3. 펑션포인트 산정 절차
펑션포인트를 산정하는 기본 절차는 다음과 같습니다.
1) 기능 식별
위 5가지 기능 요소에 해당하는 모든 기능을 찾아냅니다.
2) 복잡도 평가
각 기능 요소별로 복잡도를 ‘단순(Simple)’, ‘보통(Average)’, ‘복잡(Complex)’으로 평가합니다. 복잡도는 데이터 요소 수, 파일 수 등 기준에 따라 결정됩니다.
3) 기능 점수 부여
복잡도에 따라 미리 정해진 가중치를 부여합니다. 예를 들어, 외부 입력(EI)의 경우 단순은 3점, 보통은 4점, 복잡은 6점 등으로 점수를 줍니다.
4) 기능 점수 합산
각 기능별 점수를 모두 합산하여 ‘비조정 기능 점수’(Unadjusted Function Point)를 구합니다.
5) 복잡도 조정 계수 적용
14개의 일반 시스템 특성(General System Characteristics, GSC)을 평가하여 0~5점으로 등급을 매긴 후, 이를 바탕으로 조정 계수를 계산합니다. 이 조정 계수를 비조정 기능 점수에 곱해서 ‘조정 기능 점수’(Adjusted Function Point)를 산출합니다.
4. 펑션포인트의 장점과 단점
- 장점
언어 독립성: 특정 프로그래밍 언어나 기술에 구애받지 않고 사용 가능
초기 단계 활용 가능: 요구사항만으로도 크기 산정이 가능하여 프로젝트 계획에 도움
비교 및 추정 용이: 프로젝트 간 규모 비교, 생산성 분석, 비용 추정에 유용
사용자 중심: 시스템이 제공하는 기능을 기준으로 하므로 사용자 관점 반영
- 단점
전문성 요구: 정확한 산정을 위해서는 경험과 지식이 필요
시간 소요: 상세한 기능 분석과 평가에 시간이 걸릴 수 있음
주관성 가능성: 복잡도 평가에서 주관적인 판단이 개입될 수 있음
5. 펑션포인트 활용 사례
펑션포인트는 소프트웨어 개발 프로젝트 관리에서 여러 방면으로 활용됩니다.
개발 비용 산정: 프로젝트 예상 비용과 인력 산정을 위한 기초 자료로 활용
개발 생산성 측정: 개발자가 시간당 처리하는 펑션포인트 수를 통해 생산성 평가
프로젝트 관리: 일정 계획, 리소스 배분, 위험 관리 등에 참고
품질 관리: 결함 수 대비 기능 점수를 비교하여 품질 평가 가능
6. 예시
예를 들어, 한 온라인 쇼핑몰 시스템이 있다고 합시다.
내부 논리 파일(ILF): 고객 정보, 상품 정보, 주문 정보 등 3개
외부 인터페이스 파일(EIF): 결제 시스템 데이터 1개
외부 입력(EI): 회원가입, 상품 주문, 상품 검색 등 5개
외부 출력(EO): 주문 확인서 출력, 배송 조회, 통계 보고서 3개
외부 조회(EQ): 상품 조회, 주문 상태 조회 2개
이 각각의 기능에 대해 복잡도를 평가하고 점수를 부여한 뒤 합산, 조정 계수를 적용하면 전체 펑션포인트 수를 산출할 수 있습니다.
결론
펑션포인트는 소프트웨어 개발의 기능적 규모를 체계적으로 측정하는 중요한 기법입니다. 특히 요구사항 분석 단계에서 개발 규모를 산정하고, 프로젝트 관리를 효율적으로 수행하는 데 큰 도움이 됩니다. 초보자라면 펑션포인트의 5가지 기능 요소와 복잡도 평가 방법을 먼저 이해한 후, 실제 프로젝트에 적용해 보는 것이 좋습니다. 경험이 쌓이면 더욱 정확하고 신뢰성 있는 산정이 가능해집니다.
세부적으로 예시 : 도서 관리 시스템
도서 관리 시스템은 도서관에서 책을 관리하고, 회원이 책을 대여하거나 반납할 수 있게 하는 소프트웨어라고 가정해봅시다.
1. 기능 요소 식별
먼저, 펑션포인트의 5가지 주요 기능 요소를 도서 관리 시스템에 적용해 봅니다.
2. 복잡도 평가 및 점수 부여
각 기능별로 복잡도를 단순, 보통, 복잡으로 평가하고, 이에 따른 점수를 부여합니다. (아래 점수는 예시이며 실제 기준과 다를 수 있습니다.)
3. 비조정 기능 점수 합산
모든 점수를 합산합니다.
30+5+16+15+6=72
즉, 비조정 기능 점수는 72점입니다.
4. 복잡도 조정 계수 산정
복잡도 조정 계수는 시스템 특성 14가지를 평가해 점수(보통 0~5점)를 주고, 이를 모두 더해 다음 식으로 계산합니다.
조정 계수=0.65+0.01×총점
예를 들어, 14가지 특성 평가 총점이 30이라면,
0.65+0.01×30=0.65+0.3=0.95
5. 최종 조정 기능 점수 계산
비조정 기능 점수에 조정 계수를 곱합니다.
72×0.95=68.4
따라서, 이 도서 관리 시스템의 펑션포인트는 약 68.4 FP가 됩니다.
6. 의미
이 68.4 FP는 이 시스템이 제공하는 기능의 크기를 나타내며, 이를 바탕으로 개발 기간, 인력, 비용 등을 추정할 수 있습니다. 예를 들어, 개발자가 시간당 1 FP를 처리한다고 하면, 약 68시간 정도가 소요될 것으로 예상할 수 있습니다.
요약
- 도서 관리 시스템의 주요 기능을 5가지 요소로 나누어 식별
- 각 기능의 복잡도를 평가하고 점수를 매김
- 점수를 합산해 비조정 기능 점수를 산출
- 복잡도 조정 계수를 적용해 최종 펑션포인트 산출
- 펑션포인트로 개발 규모와 소요 자원을 예측할 수 있음