프트웨어 개발 프로젝트의 규모와 코스트를 산정하기 위한 일반적인 방법은 1) 투입된 man-day(man-month) 공수에 의한 방식 2) 공수를 LoC(Line of Code)로 환산한 방식 3) 그리고 Function Point에 의한 방식이 사용된다. Function Point는 LoC 방식이 개발 프로세스의 코딩 단계에 국한되는 문제를 극복할 대안으로 연구되었다. 실제로 소프트웨어 개발 공정에서 코딩은 50%미만의 기간이 대부분이기 때문이다. 이보다는 Concept, Design, Implementation, Test, Release 중에서 Test단계에 도달해야 완성된 코드를 counting 할 수 있기 때문이다.
Wikipedia를 보니 국제 표준이 여럿 있지만, Function Point를 제대로 지적하는 표준은 ISO/IEC 20926이다. 자세한 자료는 아래를 검색하여 보기 바란다.
ISO/IEC 20926:2003Software engineering -- IFPUG 4.1 Unadjusted functional size measurement method -- Counting practices manual
Function Point의 계산은 아래와 같은 변수가 필요하다.
1. 5개의 기능 점수 산정: 아래 5개의 기능점수를 테이블에서 확인하여 합산한 점수
- 내부논리파일 기능점수(ILF)
- 외부논리파일 기능점수(EIF)
- 외부입력 기능점수(EI)
- 외부출력 기능점수(EO)
- 외부조회 기능점수(EQ)
2. 아래의 4단계의 가중치
- 분석단계
- 설계단계
- 구현단계
- 시험단계
3. 기능점수당 단가: 공공기관이 제시한는 단가 테이블에 의함
4. 단계별 단가 산정: (#2)가중치*(#3) 기능점수당 단가
- 분석단계 단가
- 설계단계 단가
- 구현단계 단가
- 시험단계 단가
5. 보정계수의 산정: 테이블에 의함. 총 보정계수는 아래의 합
- 규모별
- 유형별
- 언어별(구현, 시험단계만 해당)
- 품질별
6. 단계별 코스팅: (#1)총기능점수 * (#4) 단계별단가 * 보정계수(3개 혹은 4개의 곱)로 산정
- 분석 및 설계: 규모, 유형, 품질의 보정계수 합만 곱함.
- 구현 및 시험: 규모, 유형, 언어, 품질의 4가지 보정계수 전체를 곱함.
7. 보정전 개발원가: 네 단계별 코스팅의 합
8. 최종 소프트웨어 개발비: 보전전 개발원가 + 이윤 + 직접경비의 합
참조 파일:
(1) FP 개발산출액 산출 로직
(2) 산출용 엑셀파일
<2018년도 SW사업 대가산정 개정사항, 매년 공식과 계수가 변경되니 새로이 리서치가 필요함>
2018년 6월에 발표한 SW사업 대가 산정 기준은
1. 보정계수를 아래의 2카테고리 5개 항목으로 수정
1-1. 규모 보정계수
= 0.4057 x [자연로그(기능점수) - 7.1978]자승 + 0.8878
단, 500FP 미만은 1.2800, 3000FP이상은 1.1530으로 일괄 적용)
1-2. 애플리케이션 복잡도 보정계수
- 연계복잡성 수준
- 성능요구 수준
- 다중사이트 운영성
- 보안성 수준
애플리케이션 복잡도 보정계수의 데이터는 아래 링크의 자료를 다운로드하여 참조.