기능점수(Function Point)산정 및 활용 방안

발주지원센터 | 송기호(khsong@software.or.kr)

 

소프트웨어 프로젝트들은 환경,기술력, 자본, 개발규모 다양한 환경적인 요소들이 동반되기 때문에 소프트웨어 개발비용을 예측하는 것은 어려운 문제

 

최근 수년 동안 정보시스템 구축과 운영 사업의 증가로 국가예산에서 정보화예산이 차지하는 비중이 커짐에 따라 정보화 예산 관리의 과학화와 효율화를 위해 사업의 소요 비용을 초기에 보다 정확하고, 정밀하게 예측하는 것이 중요한 문제로 대두

이러한 문제점을 해결하기 위하여 기존의 본수(本數) 방식이나 스텝(step) 방식의 모호성과 부정확성을 보완하기 위하여 개발자 관점이 아닌 사용자 관점에서 사용기술과는 무관하게 소프트웨어 개발규모를 측정할 있는 국제 표준 기법인 기능점수(Function Point)방식을 기본 산정 방식으로 하는 대가기준에 대한 연구를 수행

 

소프트웨어개발비 산정의 현황

2004 2 소프트웨어규모산정 방식을 본수 방식에서 기능점수 방식 중심으로전환

기능점수방식으로 전환됨에 따라 합리적으로 규모를 수량화 있게 되었고, 이를 기반으로 사업초기 단계에서 개발비용을 예측할 수있는 근거가 마련

기획예산처에서는 좀더 근거 있고 합리적인 예산 반영을 위하여 소프트웨어개발비와 관련하여 예산 요구 자료를 기능점수방식으로 제출하도록 권고

하지만, 2004 소프트웨어개발비 산정방식을 본수에 기능점수 방식으로 전환 대다수의 기관에서 기능점수의 개념에 대한 이해 부족과 적용의 어려움으로 이를 활용 하지못하고 있는 실정

 

1. 소프트웨어사업대가기준 소개

정보통신부 고시로 규정하고 있는 소프트웨어사업 대가의 기준은 국가기관 등이 소프트웨어 개발, 데이터베이스 구축, 정보전략계획 수립 등의 정보화사업을 추진함에 있어 정보통신기술의 발전 사회적 여건변화에 유연하게 대처하고, 소프트웨어 산업과의 선순환적 구조를 가질 있도록 소프트웨어사업에 대한 예산수립이나 발주시 적정비용 등 을 산정하기 위한 기준을 제공하는 것을 목적

[ 1. 소프트웨어사업대가기준 구성 ]

구분

비용산정(방식

비용구성

소프트웨어개발비

기능점수

개발원가,직접경비,이윤

코드라인수

직접인건비,제경비,기술료,직접경비

투입인력과기간

유지보수시점에서 소프트웨어개발비의 10~15%

유지보수및재개발비

유지보수

 

재개발

 

시스템운용환경구축비

시스템운용환경설계비

공사비요율 기본설계비,실시설계비

시스템운용환경조성비

공사비

DB구축비

원시자료유형별데이터량

인건비,제경비,이윤,직접경비

ISP수립비

컨설팅지수

공수×(컨설팅지수)0.95 +10,000,000

 

소프트웨어개발비

소프트웨어개발비는 국제 표준인 ISO 12207 소프트웨어 개발 기본공정을 적용한 소프트웨어 개발의 단계별 공정을 수행하는데 필요한 개발원가와 직접경비 그리고 이윤의 합으로 구성

첫째는 소프트웨어개발규모에 의한 산정방식에 따라 소프트웨어개발비를 산정하는 방식이 있고, 번째는 Mam/Month방식으로 이미 우리에게 친숙한 투입인력과 기간에의한 산정방식으로 구분

또한 소프트웨어개발규모에 의한 산정방식은 기능점수 방식과 코드라인수(Line of Code) 방식으로 구분

 

[ 2. 소프트웨어개발원가 산정 방법 ]

소프트웨어개발원가 산정방법

 

산정(방법

개발규모에 의한 산정방법

기능점수

기능점수×기능점수단가×보정계수

코드라인수

코드라인수×코드라인수단가×보정계수

투입인력수와 기간에 의한 산정방법

 

투입인력수×투입기간×기술자등급별단가

소프트웨어 개발규모에 의한 산정 방식인 기능점수 방식과 코드라인수 방식은 개발하려는 소프트웨어의 개발 크기(기능점수, 코드라인수) 산정하고 여기에 단가(기능점수당 단가, 코드라인당 단가) 보정요소를 곱하여 산정하는 방식

 

2. 기능점수(Function Point) 산정 방법

기능점수 방식은 사용자 관점에서 소프트웨어 규모를 산정하는 방법으로, 주로 논리적 설계를 기초로 하여 소프트웨어가 사용자에게 제공하는 기능의 수를 수치로 정량화하고 소프트웨어의 규모를 산정하는 방식

기능점수 방식은 먼저 개발하려는 소프트웨어의 범위 경계를 설정하고 데이터기능(Data Function) 트랜잭션기능(Transaction Function) 도출한 복잡도 가중치를 적용하여 기능점수를 산출하는 방식

, 데이터기능점수와 트랜잭션기능점수의 합계를 [그림 1]에서와 같이 구한다음, 시스템의 특성에 따라 값을 보정함으로써 최종적인 소프트웨어의 기능점수를 계산하는 방식

데이터기능점수와 트랜잭션기능점수의 합을 보정전 기능점수라고 하고, 보정전 기능점수에 보정요소를 곱한 것을 보정기능점수라고도함

 

[그림 1. 데이터 기능과 트랜잭션 기능 기능점수 산정]

데이터기능

 

데이터기능점수는 내부 외부 자료 요구사항을 만족시키기 위해 사용자에게 제공되는 기능

내부논리파일(ILF: Internal Logical File) 외부연계파일(EIF: External Interface File)로 구성

내부논리파일은 응용시스템에서 유지되고 사용자가 식별 가능한 논리적으로 연관된 자료 제어정보(control information) 그룹

다시 말해서 내부논리파일의 기본적인 용도는 개발하려는 응용시스템의 내에서 단위프로세스(elementary process)에서 유지되는 데이터를 저장

외부연계파일은 개발하려는 응용시스템에서 참조되지만 다른 응용시스템에서 유지되며 사용자가 식별 가능한 논리적으로 연관된 자료 제어정보의 그룹

, 외부연계파일의 용도는 개발하려는 해당 응용시스템내의 단위 프로세스에서 참조되는 데이터를 저장

외부연계파일은 반드시 다른 응용시스템의 내부논리파일임.

데이터기능의 기능점수는 내부논리파일과 외부연계파일 모두 데이터요소유형(DET:Data Element Type)3) 레코드요소유형(RET:Record Element Type)4) 개수에 따라 [ 3] 같이 복잡도를 결정하고, 복잡도에 따라 [ 4] 같이 가중치를 정하여 기능별 기능수에 가중치를 곱하여 산정

 

[ 3. ILF/EIF 복잡도 ]

레코드요소유형(RET)

개수 

데이터요소유형(DET)의 개수

1~19

20~50

51이상

1

낮음

낮음

보통

2~5

낮음

보통

높음

6이상

보통

높음

낮음

[ 4. ILF/EIF 가중치 ]

복잡도

가중치

ILF

EIF

낮음

7

5

낮음

10

7

낮음

15

10

ㅁ데이터요소유형(DET): 사용자가 식별가능하고 반복적인 유일한 필드

ㅁ레코드요소유형(RET): ILF EIF안에서 사용자가 식별 가능한 데이터요소의 서브그룹

 

트랜잭션기능

데이터를 처리하기 위해 사용자에게 제공되는 기능

외부입력(EI: External Input), 외부출력(EO: External Output), 외부조회(External inQuiry) 가지 기능

외부입력은 응용시스템 외부에서 들어오는 데이터 제어정보를 처리하는 단위프로세스. 외부입력은 주로 내부논리파일을 유지하거나 변경하는데 사용

외부출력은 응용시스템 밖으로 데이터나 제어정보를 보내는 단위프로세스. 외부출력은 주로 데이터 제어정보의 조회 외에 처리 로직을 통해서 사용자에게 정보를 제공하는데 사용

처리 로직은 수학적 공식 계산식을 포함하거나 유도되는 데이터를 생성해야 함

외부조회는 응용시스템 외부에 데이터나 제어정보를 보내는 단위프로세스.

외부조회는 주로 데이터나 제어정보 조회를 통해 사용자에게 정보를 제공

트랜잭션기능의 기능점수는 외부입력, 외부출력, 외부조회 모두 참조파일유형(FTR: File Type Reference) 데이터요소유형(DET:Data Element Type) 개수에 따라 [ 5],[ 6] 같이 복잡도를 결정하고, 복잡도에 따라 [ 7] 같이 가중치를 정하여 기능별 기능수에 가중치를 곱하여 산정

 

[ 5. EI 복잡도 ]

참조파일

유형(FTR)

개수 

데이터요소유형(DET)의 개수

1~4

5~15

16이상

0~1

낮음

낮음

보통

2

낮음

보통

높음

3이상

보통

높음

낮음

[ 6. EO/EQ 복잡도 ]

레코드요소

유형(RET)

개수

데이터요소유형(DET)의 개수

1~5

6~19

20이상

0~1

낮음

낮음

보통

2~3

낮음

보통

높음

4이상

보통

높음

낮음

[ 7. EI/EO/EQ 가중치 ]

복잡도

가중치

EI/EQ

EO

낮음

3

4

낮음

4

5

낮음

6

7

ㅁ참조파일유형(FTR) : 트랜잭션 기능에 의해 읽히거나 유지되는 내부논리파일 또는 트랜잭션기능에 의해 읽히는 외부연계파일

 

3. 소프트웨어 개발비 산정을 위한 간이기능점수 모형

예산수립 시나 사업제안단계에서는 기능 수준만 도출해 내고 분석/설계단계에서 기능의 속성까지 상세하게 도출되므로, 속성의 개수(DET,RET, FTR 개수) 고려하여 기능의 복잡도와 가중치를 도출하는 것은 사업초기단계에 현실적으로 무리

따라서 소프트웨어사업대가기준에서는 사업초기 기능의 복잡도와 가중치를 결정하기 어려운 현실을 반영하여 [ 8] 평균복잡도가중치를 제시하여 보다 기능점수 방식을 사용하기 편리하게 유도

평균복잡도가중치는 기능이 도출되고 복잡도를 결정하는 단계를 생략하고, 제시된 평균복잡도 가중치를 바로 기능의 수에 곱하게 된다. 평균복잡도가중치란 과거 수행된 소프트웨어의 기능점수 산정결과를 통계분석하여 내부논리파일,외부연계파일, 외부입력, 외부출력, 외부조회에 적용된 복잡도에 대해 계산한 가중치들의 평균값

평균복잡도가중치의 적용은 예산수립단계 사업제안단계, 사업초기에 기능점수 산정에 필요한 자료가 충분하지 않은 경우 또는 정상적인 기능점수 산정 결과에 대한 검증이 필요한 경우 사용

평균복잡도 가중치를 사용한 기능점수 방식을 간이기능점수 방법이라함

[ 8. 2007년도 평균복잡도가중치 ]

유형

내부논리파일

외부연계파일

외부입력

외부출력

외부조회

가중치

7.4

5.5

3.9

5.1

3.8

따라서, 소프트웨어사업대가기준에서 제시하고 있는 기능점수 방식은 복잡도 적용방법에 따라 크게 국제기능점수사용자그룹에서 정의하는 정규기능점수법과 소프트웨어사업 대가기준에서 제시하는 간이기능점수법 가지로 구분

[ 그림 2. 정규기능점수법과 간이기능점수법 ]

4. 기능점수 활용 방안

기능점수 방식의 기본 정신은 사업초기에 개발하려는 소프트웨어의 범위와 경계를 식별하고 사용자관점에서 기능들을 도출하여 요구사항을 명확히 하고 이를 수치로서 정량화하는

구현하려는 소프트웨어 기능들의 목록과 이에 점수를 부여하여 소프트웨어의 개발규모를 정량화 한다는 것은 사업관리 측면에서는 범위관리, 일정관리, 형상관리에서 기능점수 목록을 활용하여 프로젝트 편성 변경통제를 강화

개발공정에서는 기존 산출물의 추가 보완을 통하여 기능점수를 상세 모형으로 유지관리가 가능

시험단계와 검수단계에서는 기능점수 목록이 기준선(Baseline)으로서 역할을 하며 프로젝트의 위험을 감소시키는 역할

가장 대표적으로 기능점수 모형이 활용되는 것은 요구사항관리(Requirement Management) 크게 향상

기능점수는 예산수립이나 사업의 제안 단계에서 요구사항을 정리 수 있으며, 이를 정량화 있기 때문에, 근거 있는 예산 사업비를 산정에 도움

만들어진 기능점수 목록은 소프트웨어개발사업의 관리에 중요한 수단으로 활용


'삽질로그' 카테고리의 다른 글

현재폴더에서 도스창 실행  (0) 2007.10.22
SW품질평가-ISO9126  (2) 2007.10.18
80x15 배너이미지 만들기  (0) 2007.08.02
RSS 관리  (0) 2007.08.02
자바에 사용되는 용어들  (0) 2007.07.26

+ Recent posts