Software Engineering

소프트웨어개발비(기능점수)

배짱이 2008. 10. 13. 23:03
 소프트웨어개발원가 산정방법  구분 산정방법
 개발규모에 의한 산정방식 기능점수 기능점수*기능점수단가*보정계수
  코드라인수 코드라인수*코드라인단가*보정계수
투입인력수와 기간에 의한 산정방식 - 투입인력수*투입기간*기술자등급별단가

 주로 기능점수(Function Point방식)사용

 

Function Point

*기능점수의 역사

1975년 IBM 알란 알브레히트(Albrecht)가 Guide/Share 컨퍼런스에 기능점수 개념 소개, 여러가지 변형 기능점수 방식 존재

1986년 IFPUG 조직

1993년 CFPS(Certified FP Specialist) 인증시작

1995년 ISBSG 참여, ISO/IEC JTC1 WG12 Functional Size Measurement 연구 착수

1998년 ISO/IEC 14143-1 출판

2003년 ISO/IEC 14143-1~5 공식 표준화

2004년 IFPUG CPM4.2 발표 (Counting Practice Manual)

 

소프트웨어사업대가기준에서는 국제기능점수사용자그룹(IFPUG : International Fucntion Point Users Group)에 제안한 기능점수 모형 채택

 

 

1.기능점수 개요

  가. 기능점수 정의

- 논리적 설계에 기초하여 사용자에게 제공되는 기능량을 계량하는 방식

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

  나. 기능점수 특징

- 물리적 파일이나 화면 및 프로그램 수가 아닌 사용자관점(사용 기능)에서의 논리적 기능량을 측정

- 구조적 문제 해결 방식 - 시스템을 보다 작은 컴포넌트로 나누어 분석(분할정복, Divide&Conquer)

- 전수명주기에 걸쳐서 적용

- 공수, 적용방법론, 물리적 또는 기술적 컴포넌트와 무관하게 측정

   다. 기능점수 방식의 제안 배경(LOC 방식의 문제점)

- 경제적 의미 미흡, 언어 수준에 따라 왜곡

- 요구정의, 설계, 사용자 지침서 등은 품질 수준을 LOC로 제시할 수 없음.(이들 결함은 전체 결함의 50% 이상)

- 개발공수의 50%이상이 코딩이 없는 공정(프로젝트 관리, 사양서 및 지침서 작성 등)에 투입되는데 LOC로는 측정 불가

- 현재 사용되는 언어가 500여개가 넘는데 이들 언어간 생산성 비교 표준이 없음

- 절차식이 아닌 풀 다운 메뉴난 버튼 컨트롤 방식을 사용하는 객체/콤포넌트 기반에서는 사용이 어려움

   라. 기능점수의 장점

- 패키지의 기능을 측정함으로써, 구매하고자 하는 응용 패키지의 규모를 결정

- S/W 제품의 품질과 생산성 분석을 위한 측정도구로 활용

- S/W 개발과 유지보수에서 요구되는 비용과 자원을 측정하는 도구

- S/W간 규모비교(조직의 IT PortPolio)의 잣대로 활용

- 사용자의 특별한 요구사항에 부합하는 응용패키지가 무엇인지를 결정할 수 있도록 하는데 도움을 줌

 

2. 기능점수 측정 방식 및  구성요소

  가. 기능점수 측정 방식

- 정규기능점수법 : 기능별 복잡도 산정

- 간이기능점수법(간이법) : 평균복잡도 가중치 사용

  나. 측정유형

1) Development FP

- 소프트웨어의 최초 설치(신규개발)

- 프로젝트에서 사용자를 위해 제공된 모든 기능을 측정

- 변환 기능점수가 없으면, 측정결과가 어플리케이션 기능점수로 설정됨(초기화)

2) Enhancement FP

- 사용중인 소프트웨어의 기능보강과 연관이 있음

- 사용중인 어플리케이션의 추가기능, 삭제기능, 변경기능을 포함

- 사용중인 어플리케이션을 위한 변경을 측정

3) Application FP

- 설치된 어플리케이션의 정적인 규모, 즉 특정시점에서의 기능점수를 말함

- 어플리케이션에서 제공된 현재의 기능을 측정

- 어플리케이션 기능점수는 보강이 진행된 후에는 반드시 계산되어짐

  나.기능유형

1) 데이터 기능

- 내부에서 관리하는 데이터와 외부를 통해 참조하는 데이터 관련 기능

- 내부 및 외부 자료 요구사항을 만족시키기 위해 사용자에게 제공하는 기능

- 내부논리파일(ILF : Internal Logical File)

  : 어플리케이션 경계 내부에서 유지되면 사용자가 식별할 수 있는 논리적으로 연관된 데이터 그룹 또는 제어정보

- 외부연계파일(EIF : External Interface File)

  : 다른 어플리케이션의 경계 내부에서 유지되고 측정 대상 어플리케이션이 참조하며 사용자가 식별할 수 있는 논리적으로 연관된 데이터 그룹 또는 제어정보

- DET(Data Element Type) : 데이터 항목, RET(Record Dlement Type) : 레코드 항목

- DET와 RET를 통해 복잡도 산정

2) 트랜잭션 기능

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

- 외부입력(EI : External Input)

- 외부출력(EO : External Output)

- 외부조회(EQ : External inQuery)

- FTR(File Type Referenced) : 트랜잭션에 의해 읽혀지거나 유지보수되는 논리파일(ILF 또는 EIF)

- DET와 FTR을 통해 복잡도 산정

 

3.기능점수 산정 절차

  가.측정유형 결정

 DFP, EFP, AFP 중 하나를 선택

  나.범위와 경계를 정의

  다.데이터기능/트랜잭션 기능 계산

- 데이터기능과 트랜잭션 기능 복잡도를 산정

  라.미조정 기능점수 산정 (UFP : Unadjusted FP)

  마.조정계수(VAF:Value Adjustment Factor) 산정

- VAF = (TDI + 65)/100

- TDI는 0~5값을 가지는 14개의 일반시스템 특성의 합, 0~70까지 가능

- VAF는 0.75~1.35의 값을 가짐

  바.조정 기능점수(AFP) 산정 = UFP * VAF

 

4.기능점수 측정유형별 분석

  가. 개발프로젝트 측정

- DFP = (UFP + CFP) *VAF

  나. 어플리케이션 측정

- AFP = UFP * VAF

  다. 개선프로젝트 측정

- EFP = [(ADD+CHGA)*VAFA]+(DEL*VAFB)

- New AFP = [(UFPB + ADD + CHGA) - (CHGB + DEL)] *VAFA

 

이 글은 스프링노트에서 작성되었습니다.