컴퓨터(Computer Science)/소프트웨어공학(Software engineering)

프로젝트 계획 (3) -기능점수[ 소프트웨어공학]

게임이 더 좋아 2020. 4. 17. 12:29
반응형
728x170

저번 글에서 말했는데 LOC 산정이 힘들어서 기능점수로 규모를 파악할 수도 있다고 했다.

 

그래서 이번엔 기능 점수에 대해 알아보려고 한다.

 

**COCOMO II에서 기능점수를 이용한다.

 


 

 

기능 점수란 소프트웨어 시스템이 가지는 기능을 정량화한 것이다.

LOC의 예측은 힘들기 때문에 시스템이 가질 기능의 개수로 규모를 판단하는 것이다.

 

 

** 이 방법은 경험 중심적인 방법으로 비즈니스 응용 분야의 소프트웨어 개발비용 산정에 정확하다고 한다.

 

** 기능 점수를 이용해서 예측하려면 생산성 메트릭이 있어야한다. 다시 말해서 단위 시간당 프로그래머의 생산성을 기능 점수로 표현한 자료가 있어야한다.

 

 

기능 점수(function points)
 소프트웨어 규모를 측정하는 방법
 기능적 요구 사항이 중심이 되는 측정 방법
 소프트웨어의 요구 사항 복잡도를 측정
 구현 관점 아닌 사용자 관점의 요구 기능을 정량적으로 산정
 측정의 일관성 유지를 위해 개발 기술, 개발 방법, 품질 수준 등은 고려하지 않음
 소프트웨어 개발에 사용되는 언어와 무관
 정확한 라인수는 예측 불가능

 

 

**이 5가지는 알고있어야한다 

 


전체를 봤으니 세부사항도 살펴보자

데이터 기능

 

내부 논리 파일 (ILF: Internal Logical File)
 개발 대상 SW가 직접 생성/관리하는 데이터
 사용자가 등록/수정/삭제/조회를 하기 위한 대상
 데이터베이스 테이블, 시스템 내부에서 다루는 파일 등

 

 

외부 연계 파일, EIF: External Interface File
 측정 대상 SW에서는 참조만 하고, 외부 다른 SW가 관장하는 파일

 

 

 

 

 

 


 

 

트랜젝션기능

 

 

외부 입력 EI, External Input
 대상 SW의 ILF (DB 또는 File)에 데이터를 등록하거나, 수정·삭제하는 것
 
(예) 학생 정보 등록, 수정, 삭제

 


외부 출력 EO, External Output
 계산하는 로직을 거쳐 데이터나 제어 정보를 사용자에게 reporting하는 기능
 수학적 계산 로직이 하나 이상 존재하며 그에 따른 파생 데이터도 존재
 
(예) 학생 학점 조회, 통계 리포팅 등

 

외부 조회 EI, External Inquiry
 단순히 ILF, EIF의 데이터를 가져와서 별도의 가공 처리 없이 그대로 출력하는 대화식 기능
 
 (예) 학생 주소 검색, 학생 정보 조회
 (비교) External Output: 별도의 가공을 수행하는 로직(알고리즘)이 존재

 


그럼 각 세부사항마다 계산하는 방법은 어떻게 될까?

 

전체적으로 FP를 계산하는 방법

순서는 이렇게 된다.

 

1. 5 가지 기능 분야에 해당되는 개수를 파악
2. 5 각 기능에 대한 복잡도(단순, 중간, 복잡)를 결정
3. 각 기능 분야의 개수와 복잡도 가중치를 곱하여 총 기능 점수(GFP)를 구한다.
4. 14개의 질문을 이용하여 각 처리 복잡도의 정도에 따라 0에서 5까지 할당한다.
5. 처리 복잡도 보정계수(PCA)를 식을 이용하여 구한다.
6. 식에 넣어 기능 점수를 구한다.

 

 

 

 

기능 요소별 가중치 반영 = GFP
이 식들을 이용한다.

 

 


그냥 넘어가면 이해가 안되니까 예를 살짝 건드리고 넘어가자

 

표를 이용한다.

 

 5가지 기능 요소별 개수 파악 & 복잡도 가중치 반영
 EI = 10개, EO = 5개, EQ = 8개, ILF = 30개, EIF = 4개
 복잡도는 모두 단순


 처리 복잡도 (Processing Complexity)
 신뢰도 높은 백업, 분산처리기능은 높이 요구됨 (5점)
 나머지 질문에 대한 처리복잡도는 보통 (3점)


 생산성
 60 FP/week => 240FP/month


 계산
 표에 대입하여 GFP를 구한다.
GFP = (10 X 3) + (5 X 4) + (8 X 3) + (30 X 7) + (4 X 5) = 304 FP


 처리 복잡도 보정 계수 구하면
PCA = 0.65 + 0.01 X (12 X 3 + 2 X 5) = 1.11


 FP를 보정
FP = GFP X PCA = 304 X 1.11 = 337.44 FP


 추정 노력(E) = FP / 생산성 = 337.44 / 240 = 1.406 MM

 

**아까 위에서 단위시간당 생산성 메트릭이 있어야 한다는 것은 변환하기 위해서라 했듯이

이 식에 쓰인다

 

 

 

 

 


 

 

LOC 대신 기능점수를 구해서 규모를 판단한다고 했는데

기능점수는 이렇게 이용한다.

 

총 라인수 = FP * 원하는 언어의 1점 당 LOC

 

* 기능 점수 1을 구현하기 위한 LOC 
어셈블리 언어(324), C언어(150), Pascal(91), 
Ada(71), APL(32), SmallTalk(21)

 

 

 

 

 

*개발 노력


 FP만 산정한 경우: 개발 노력 (MM) = FP/생산성(FP/MM)


 LOC 산출 가정: 개발 노력 (MM)= LOC/생산성(LOC/MM)

 

 

 

반응형
그리드형