1. 배경

고전적인 SW측정 방법인 LOC(Line of codes)는 말 그대로 SW의 소스 코드 라인 수를 세서 규모를 측정하는 방법이다.  

소스 코드 생성은 전체 SW개발 노력 중에 일부분을 차지하고, SW규모 측정은 SW가 구현되지 전에 비용추정(Cost estimating)을 위해 하는 것인데, 구현되지 않은 SW  LOC수를 불확실할 수 밖에 없다. 이런 불확실한 입력을 바탕으로 비용 추정한 결과는 신뢰성이 떨어질 수 밖에 없는 것이다. LOC 는 이 밖에도 다음과 같은 문제점이 제기되고 있다.

-           - 라인 수 방식은 경제적 의미가 미흡하고, 언어의 수준에 따라 왜곡되기도 한다

-           - 라인 수 방식은 코드가 없는 요구사항정의, 설계, 사용자 지침서 등에 대한 품질 수준을 제시할 수 없다.

-           - 개발공수의  많은 부분이 코딩이 없는 공정(프로젝트관리, 계획수립, 품질관리, 요구정의)에 투입되는데 이를 측정할 방법이 없다.


현재 SW를 개발하는 언어가 무수히 많이 존재하는데, 이들 언어간의 생산성을 비교할 수 있는 기준이 존재하지 않는다.

-            

-           [PBX SW를 여러 가지 언어로 개발시 생산성 비교]

-           Language

        K(Killo)LOC

          Effort(Months)

          LOC

          per month

        Function Points         per month

Assembly

376

832

451

1.80

C

206

445

462

3.37

CHILL

158

339

466

4.42

PL/I

118

299

393

5.01

Ada95

78

230

339

5.68

C++

38

177

215

6.52

Smalltalk

28

147

190

10.20

출처 : C. Jones,  Software Estimation Education Materials, 1999

결론부터 이야기하자면 LOC척도는 최근에 많이 사용되는 고급언어와 객체지향 언어의 경우 위험하고 신뢰할 수가 없어서  생산성 비교 검토(비용추정을 위한)에 있어서는 기능점수(Function Points)가 최선의 대안인 것이다.

 

2.    기능점수의 개요

기능점수(Function Points)란 사용자의 관점에서 SW가 제공하는 기능을 측정하는 방법이다.

기능점수의 다음과 같은 특징을 갖고 있다.

-           - 기능적 사용자 요구사항을 측정

-           - 외부 사용자 관점에서 측정

-           - SW생명주기에 걸쳐서 적용

-           - 공수, 방법론, 물리적 또는 기술적 요소와 무관하게 측정

 

어플리케이션의 경계

측정 대상 SW와 사용자 간의 경계로써 내부의 어플리케이션과 외부의 사용자 세계 간의 개념적 경계를 의미.

경계는 사용자 관점에서 기초하여 설정

사용자가 보는 분리된 기능 영역에 기초하여 기술

 

기능적 사용자 요구사항은 다음 두 가지 형태가 있다.

1)   데이터 기능(Data Function)

사용자가 어플리케이션 경계 내부 및 외부에서 사용되는 데이터 요구를 충족시키기 위하여 제공되는 기능.

A.      내부논리파일(ILF, Internal Logical Files)

사용자가 식별 가능한 논리적인 데이터 그룹 또는 제어정보로 어플리케이션 경계 내부에서 유지되는 데이터.

개발하는 어플리케이션에서 실제로 관리(등록, 수정, 삭제)되는 논리 데이터.

 

B.      외부연계파일(ELF, External Interface Files)

사용자가 식별 가능한 논리적인 데이터 그룹 또는 제어정보로써 다른 어플리케이션 경계 내부에 관리되는 측정대상 어플리케이션이 참조하는 데이터.

측정대상 어플리케이션에서는 등록,수정,삭제가 발생하지 않고, 참조의 목적으로만 이용되는 데이터.

 

2)   트랜잭션 기능(Transaction Function)

어플리케이션의 데이터 처리 요구를 충족시키는 위해 사용자에게 제공되는 기능.

A.      외부입력(EI, External Inputs)

- 어플리케이션 경계 밖에서 들오는 데이터나 제어정보를 처리하는 단위 프로세스.

) 인사 관리 어플리케이션에서 직원을 등록하는 기능.

B.      외부출력(EO, External Outputs)

- 어플리케이션 경계 밖으로 데이터나 제어정보를 내보내는 단위 프로세스

- 데이터는 조회는 물론 처리 과정을 통해 사용자에게 정보 제공.

- 처리 과정에서 계산, 파생 데이터, ILF변경 등이 있어야 함.

) 인사 관리 어플리케이션에서 직원의 급여지급 내역을 집계하여 해당 월의 부서별 현황 보고서를 출력하는 기능.

C.      외부조회(EQ, External Queries, External Inquiries)

- 어플리케이션 경계 밖으로 데이터나 제어정보를 그대로 내보내는 단위 프로세스

- ILF, EIF에서 데이터를 검색하여 사용자에게 제공.

- 조회 과정에서 계산, 파생 데이터, ILF변경 등이 없어야 함.

) 인사 관리 어플리케이션에서 내부 논리 파일 중에 직원 데이터를 그대로 보여주는 기능. 직원상세정보 조회.

 

3.     기능점수 측정 절차

사용자 삽입 이미지








1)   측정 유형 결정

개발 프로젝트 : 개발사업 측정. SW사업대가 기준에서는 이것만 인정

개선 프로젝트: 유지보수 측정.

어플리케이션 : 제품, 패키지 측정

 

2)   측정 범위와 어플리케이션 경계 식별

A.     측정 범위의 정의

- 규모 측정 대상 SW집합을 정의

- 기능 점수 측정 목적에 따른 해답을 얻는데 필요한 기능 식별

- 하나 이상의 어플리케이션이 포함될 수 있음.

 

B.      어플리케이션의 경계 식별

- 무엇이 어플리케이션의 외부인지 식별

- 내부 어플리케이션과 외부 사용자 세계 간의 개념적 인터페이스

- 트랜잭션에 의해 처리된 데이터가 어플리케이션에 들거나 나가는 기능을 사용자 관점에서 식별.

- 어플리케이션에 의하여 유지되는 논리 데이터를 둘러싸고 있는 사용자의 관점에서 식별

 

3)   데이터 기능 측정

A.     데이터 기능(ILF, EIF) 목록 작성

B.      데이터 기능 수 추출

C.     복잡도 산출 및 적용

D.     데이터 기능외 미조정 기능점수 결정

 

4)   트랜잭션 기능 측정

A.     트랜잭션 기능(EI, EO, EQ) 목록 작성

B.      트랜잭션 기능 수 추출

C.     복잡도 산출 및 적용

D.     트랜잭션 기능외 미조정 기능점수 결정

 

5)   미조정 기능 점수 계산

미조정 기능 점수는 프로젝트 또는 용용 프로그램이 사용자에게 제공하는 계산 가능한 기능성을 의미하며 이는 데이터 기능과 트랜잭션 기능의 기능 유형별 기능 수에 기능 유형에 따른 가중치를 선정하여 곱한 값이 된다.

 

기능점수 측정 가중치

기능 유형

복잡도 가중치

기능점수 합계

낮음

보통

높음

EI

X 3

X 4

X 6

 

EO

X 4

X 5

X 7

 

EQ

X 3

X 4

X 6

 

ILF

X 7

X 10

X 15

 

EIF

X 5

X 7

X 10

 

미조정 기능점수

 


ILF, EIF 
복잡도 매트릭스

RETs

1 ~ 19 DETs

20 ~ 50 DETs

51 ~  

DETs

1

낮음

낮음

보통

2 ~ 5

낮음

보통

높음

6 ~

보통

높음

높음

    * RET(Record Element Type) : 레코드요소형식
      DET(Data Element Type) : 데이터요소형식

EI 복잡도 매트릭스

FTRs

1 ~ 4 DETs

5 ~ 15 DETs

16 ~   DETs

0 ~ 1

낮음

낮음

보통

2

낮음

보통

높음

3 ~

보통

높음

높음


EQ, EO
복잡도 매트릭스

FTRs

1 ~ 4 DETs

5 ~ 15 DETs

16 ~   DETs

0 ~ 1

낮음

낮음

보통

2 ~ 3

낮음

보통

높음

4 ~

보통

높음

높음

* EQ는 반드시 하나 이상의 참조 파일유형(FTR)을 가져야 한다.

자료원 : KFPUG, 기능점수 측정 실무 매뉴얼.

 

6)   조정인자 결정

조정인자(VAF, Value Adjustment Factor)는 측정되는 응용 프로그램의 일반적인 기능에 등급을 부여하여 14개의 일반 시스템 특정(GSC, General System Charateristics)에 기반으로 한다.  

항목

내용

데이터 통신

(Data Communication)

어플리케이션이 프로세서와 직접 통신하는 정도를 말한다. 어플리케이션에서 사용되는 데이터와 제어정보는 통신설비를 통하여 송,수신된다. 제어장치에 지역적으로 연결된 단말기들은 통신설비를 이용하는 것으로 간주된다. 프로토콜은 두 개의 시스템 또는 장치 간 정보의 교환 또는 전송을 가능하게 하는 규약의 모음이다. 모든 데이터 통신에는 일정한 형태의 프로토콜이 필요하다.

분산 데이터 처리

(Distributed data processing)

어플리케이션이 어플리케이션의 물리적 컴포넌트들 사이에서 데이터를 전송하는 정도를 말한다.

분산데이터 또는 분산처리 기능은 어플리케이션 경계 내에서의 어플리케이션 특징이다.

시스템 성능

(Performance criteria)

어플리케이션 개발에 영향을 미치는 시스템의 응답시간과 처리 능력에 대한 고려 수준을 말한다. 사용자에 의해 반응시간 또는 처리량 등으로 명시, 승인, 또는 암시 되는 어플리케이션의 성능목표는 어플리케이션의 설계, 개발, 설치, 지원 등에 영향을 미친다.

자원 제약 정도

(Heavily utilized hardware)

어플리케이션 개발에 영향을 주는 컴퓨터 자원의 제약 정도를 말한다. 자원 제약 때문에 특별한 고려가 요구되는 설계가 필요할 수 있다. 예를 들면, 사용자가 작업부하가 큰 기존 또는 할당된 장비 상에서 어플리케이션을 수행하고 싶어할 수 있다.

트랜잭션 비율

(High Transaction rates)

어플리케이션 개발에 영향을 미치는 비즈니스 트랜잭션의 정도를 말하는 것으로, 트랜잭션 비율이 높으면 어플리케이션의 설계, 개발, 설치 및 지원 등에 영향을 준다. 사용자들은 트랜잭션 비율이 제일 높을 피크 시간에도 적절한 시스템 반응 속도를 요구할 수 있다.

온라인 데이터 입력

(Online data entry)

대화식 트랜잭션을 통해 입력되거나 회수되는 데이터의 정도로, 어플리케이션은 데이터 입력, 통제 기능, 리포트, 그리고 쿼리(query)들을 말한다.

최종 사용자 효율성

(End-user efficiency)

어플리케이션 사용자의 인간적 요소와 사용 편리성을 고려한 정도를 말한다. 주어진 온라인 기능은 사용자 효율성(인간적 요소/사용 편리성)을 고려한 설계를 강조한다. 설계 시 다음과 같은 사항들을 포함한다.

온라인 갱신

(Online updating)

내부논리파일(ILF)이 온라인으로 갱신되는 정도를 말한다. 어플리케이션은 내부논리파일(ILF)을 위해 온라인 갱신(업데이트)을 제공한다.

처리 복잡도

(Complex computations)

처리 로직이 어플리케이션 개발에 영향을 주는 정도로 다음과 같은 경우를 말한다

 - 민감한 제어 그리고/또는 어플리케이션에 고유한 보안 처 리

 - 광범위한 논리적 처리

 - 방대한 양의 수학적 처리

 - 재처리가 필요한 불완전한 트랜잭션을 유발시키는 많은 양의 예외처리

 - 다중 입·출력 가능성을 다루는 복잡한 처리

재사용성

(Reusability)

어플리케이션과 어플리케이션의 소스 코드를 다른 어플리케이션에서 사용할 수 있도록 하기 위하여 특별하게 설계, 개발, 지원되는 정도를 말한다.

설치 용이성

(Ease of installation)

이전 환경으로부터의 변환이 어플리케이션 개발에 영향을 미치는 정도를 말하는 것으로, 변환과 설치 용이성은 어플리케이션의 중요한 특징의 하나이다. 변환 및 설치 계획과 변환 도구 등은 시스템 테스트 단계에서 제공되고 테스트 된다.

운영 용이성

(Ease of operation)

어플리케이션이 기동, 백업, 복구 등 운영 측면의 프로세스에 대해서 고려하는 정도를 말하는 것으로, 어플리케이션의 중요한 특징의 하나이다. 어플리케이션은 테이프 걸기, 용지 관리, 수동 개입 등 수작업 활동의 필요성을 최소화한다.

다중 설치성

(Portability)

어플리케이션이 복수의 장소와 사용자 조직을 고려하여 개발되는 정도를 말한다.

변경 용이성

(Maintainability)

어플리케이션의 처리 로직이나 데이터 구조의 변경을 쉽게 하기위해 개발하는 정도를 말한다.

     자료원 : KFPUG, 기능점수 측정 실무 매뉴얼.

14개의 특성의 영향도 정도에 따라 각각 0(영향 없거나 낮음)부터 5(강한 영향)까지 영향도 점수(DI, Degree of Influence)를 부여하고, 이를 모두 합산하여 전체 영향도(TDI, Total DI)를 구한다.

이러한 과정을 통해 조정 기능점수(AFP)는 미조정 조정인자(UFP)+-35%까지 조정될 수 있다.

VAF 계산 공식 (일반시스템의 전체 영향도 * 0.01 + 0.65)

VAF = ((DI) * 0.01) + 0.65

 

7)   조정 기능점수 계산

조정 기능점수는 미조정 기능점수(UFP)에 기술 복잡도(CFP, DI를 의미함)를 고려하여 산출 조정인자(VAF)를 곱하여 계산된다. 다음 기능점수 측정 유형별 계산 공식이다.

기능측정 유형

조정 기능점수 산출공식

개발 프로젝트의 기능점수

DFP(Development FP)

DFP = (UFP + CFP) x VAF

개선 프로젝트의 기능점수

EFP (Enhancement FP)

EFP = [(ADD + CHGA + CFP) x VAFA] + (DEL x VAFB)

최초 응용프로그램 기능점수

AFPi(Initial Application FP)

AFPi = ADD x VAF

개선 응용프로그램 기능점수

AFPe(Enhancement Application FP)

AFPe = [(UFPB + ADD + CHGA) – (CHGB + DEL)] x VAFA


UFP  : 조정전 기능점수. 미조정 기능점수
UFPB :
프로젝트 시작 전의 미조정 기능점수

CFP  : 프로젝트에 의해 변환 기능의 미조정 기능점수

ADD  : 프로젝트에 의해 추가된 기능의 미조정 기능점수

DEL  : 프로젝트에 의해 삭제된 기능의 미조정 기능점수

CHGA : 프로젝트에 의해 변경된 기능의 미조정 기능점수

CHGB : 변경된 기능에 대한 미조정 기능점수

VAFB : 프로젝트가 시작되기 전의 어플리케이션 대한 조정인자

VAFA : 프로젝트가 종료된 후의 어플리케이션에 대한 조정인자

 

자료원 : KFPUG, 기능점수 측정 실무 매뉴얼.

 

 

  -참고자료-

위키 피디아의 Function points - http://en.wikipedia.org/wiki/Function_points

KFPUG, 기능점수 측정 실무 매뉴얼, 참고.

IFPUG, Counting Practice Manual Release 4.2, 참고.

-관련사이트-

http://www.ifpug.org/
http://www.kfpug.or.kr/


이올린에 북마크하기(0) 이올린에 추천하기(0)

Posted by 좐군

2009/10/18 23:29 2009/10/18 23:29
, , ,
Response
No Trackback , No Comment
RSS :
http://John.tobe30.com/tc/rss/response/217

Trackback URL : http://John.tobe30.com/tc/trackback/217

Leave a comment
[로그인][오픈아이디란?]