Computer Science/Software Engineering
[CS][소프트웨어공학] SW 기능 산정 (기능점수, 간이법)
y-seo
2023. 10. 16. 01:18
[1] 기능 점수 (FP, FunctionPoint)
- 과거의 소프트웨어 비용 산정
- LOC(Lines of Codes)로 SW의 규모를 파악했다.
- 문제점 : 사용하는 프로그래밍 언어마다 기능 구현을 위한 코드 라인 수가 달라진다.
- 기능 점수 (Function Point) 방법
- SW의 기능과 복잡한 정도를 기준으로 규모를 산정한다.
- IFPUG 모델을 이용하며 2003년 국제표준을 채택하였다. (ISO/IEC 20926:2003)
- 현재 모든 SW 개발 프로젝트의 규모 및 비용 산정의 표준이 된다.
- SW 시스템의 구성 요소를 2가지로 정의할 수 있다.
- 처리 기능 : Transaction Function, 외부입력/외부출력/외부질의
- 데이터 기능 : Data Function, 내부논리파일/외부인터페이스파일
- 그 구성요소를 아래와 같이 표현할 수 있다.
[2] 기능 점수 산정 절차
- FP 산정 절차는 IFPUG CPM (ISO/IEC 20926)을 따른다.
[2] ① 유형 결정
- 조정 인자 값 산정이 이로 인해 달라진다.
- 개발 프로젝트 : 범위가 가장 크고 기준으로 가야 하는 프로젝트
- 개선 프로젝트 : 일부만 수정하는 프로젝트
- 유지보수 프로젝트 : 일부만 수정하는 프로젝트
[2] ② 범위 및 경계 선정
- 기능 점수 산출 범위
- 시스템 전체 (System)
- 응용 소프트웨어 전체 (Application)
- 응용 소프트웨어 일부 (Subset of Application)
- 고려사항 : SW 획득 방식
- 자체 개발 (In-House Development)
- 외주 개발 (Outsourcing Part)
- 패키지 구매 (Package Purchase)
- 대상 시스템 범주 표현 : Use Case Diagram, ER Diagram 등
[2] ③ 데이터 기능점수 산정
- 데이터 기능의 유형
- ILF : 내부논리파일, Internal Logic File, 우리가 개발한 시스템의 내부에서 생성되고 변경 보관되는 파일 또는 레코드 타입
- EIF : 외부인터페이스파일, External Interface File, 애플리케이션 사이에서 공유하는 파일로써 참조만 하는 데이터 파일
- ILF와 EIF를 식별해 복잡도 가중치를 결정한다.
- DET (Data Element Type) : ILF와 EIF에 유지되는 필드 중 식별 가능하고 비반복적인 필드 (Ex.주소)
- RET (Record Element Type) : ILF와 EIF 안에서 식별 가능한 데이터 요소의 하위 그룹 (Ex.학부생vs대학원생)
- 고객 계좌 관리 시스템의 자료 구성 (예시)
- 고객 컴포넌트 (ILF) : DET 13개, RET 2개 → 단순
- 신용등급 컴포넌트 (EIF) : DET 4개, RET 1개 → 단순
[2] ③ 처리 기능 점수 산정
- 처리 기능 유형
- 외부 입력 : EI, External Input, ILF에 자료 생성/변경/삭제 하는 것
- 외부 출력 : EO, External Output, 시스템이 밖으로 방출하는 자료와 제어를 으미
- 외부 질의 : EQ, External Query, 단순한 사용자 질의
- Ex. 고객계좌 관리시스템의 자료 구성
- EI : 생성(FTR 2개, DET 16개) → 복잡, 변경(FTR 2개, DET 16개) → 복잡, 삭제(FTR 2개, DET 3개) → 단순
- EO : FTR 2개, DET 22개 → 복잡
- EQ : FTR 1개, DET 15개 → 단순
[2] ④ 예비 기능 점수 산정
- 모든 데이터 기능과 처리 기능에 대한 복잡도가 산정되면 예비 기능 점수 산정이 가능하다.
- Ex.
- 데이터 기능
- Customer, Account, Product 컴포넌트 : ILF 단순 → 가중치 7 → 총 21
- Credit 컴포넌트 : EIF 단순 → 가중치 5 → 총 5
- 처리 기능
- EI 38점, EO 23점, EQ 12점
- 예비기능 점수 = 데이터 기능 점수 + 처리 기능 점수 = 21 + 5 + 38 + 23 + 12 = 99
- 데이터 기능
[2] ④ 조정 인자 값 산출
- 운영적/환경적 특성을 지원하는 분석이다.
- 14개의 조정 인자가 있으며 각각 점수가 할당되어 있다. 이 값들을 다 더한다.
- 데이터 통신
- 분산 데이터 처리
- 성능
- 운영 환경
- 트랜잭션 비율
- 온라인 데이터 입력
- 사용자 효율성
- 온라인 갱신
- 처리 복잡도
- 재사용성
- 설치 용이성
- 운영 용이성
- 다중 설치성
- 변경 용이성
- 영향도 (Degree of Influence) 결정은 각 인자에 대해 0(영향 없음) ~ 5(많음) 까지 할당한다.
- 14개의 시스템 특성에 대해 영향도가 결정되면 각 영향도의 합 (TDI, Total Degree of Influence)을 구한 후 조정 인자 값 VAF를 산정한다.
- VAF = (TDI X 0.01) + 0.65
[2] ⑤ 최종 기능 점수 산출
- 앞 단계에서 결정된 VAF 값을 예비 기능 점수에 곱해주는 것 = 정규법
- Ex. 고객 계좌 관리 시스템 : 예비 기능 점수는 99점, VAF = 0.94 → 최종 기능 점수 : 99 x 0.94 = 93.1FP
[3] 간이법
- 기능 복잡도 판단이 어려운 경우에 사용한다.
- 평균 복잡도를 사용하여 계산한다.
구분 정규법 간이법 선정 목적 상세하고 정확한 기능 점수 측정 개략적인 예측용 기능 점수 산정 측정 항목 데이터 기능과 처리 기능 데이터 기능과 처리 기능 복잡도 적용 기능별, 단위 파일별 복잡도 평균 복잡도 적용 시기 개발 수명주기 전체에서 가능하나 상세 설계 이후 정확성이 높음 사업 준비 단계, 제안서 작성 단계 등에서 활용 가능 장점 측정 정확도가 높으며 다양하게 활용 가능 신속한 측정이 가능 단점 사업 초기 단계에서 적용하기 어려움 제한적 데이터 사용으로 정확성이 부족함 - 간이법에 의한 기능 점수 산정 절차 : 훨씬 간단해진다.
[4] 간이법 산정 예제
- 담당자는 고객주문을 입력,수정,삭제 한다(고객DB)
- 인사담당자는 사원목록을 부서단위로 조회한다(사원DB, 부서DB)
- 담당자 입장에서 조회이지 실제 조회 기능은 아님, EO, 부서 단위로 정리해줘야 해서
- 인사담당자는 사원목록을 단순 출력한다(사원DB)
- EQ, 그대로 보여주는 것
- 인사담당자는 일정 금액 이상의 급여 수령자 사원목록을 검색한다(사원DB, 급여DB)
- 원화에 대한 미국 달러(USD) 가치를 찾기 위해 A은행 외환DB에서 환율을 검색한다(외환DB)
- 인사담당자는 5년 경력 이상이고, 해당 직무 수행겸험이 있는 사원목록을 추출한다(사원DB)
- 인사담당자는 신입/경력사원 입사 시 사원 파일을 갱신한다(사원DB)
- 인사담당자는 외국 사원 입사 시 사원의 급여를 결정하기 위해 H연합회 통화정보를 참조한다(사원DB, 급여DB, 통화DB)
- 인사담당자는 사원현황을 엑셀 파일을 업로드 시킨다(사원DB)
- 가져다 쓰는거면 EIF, 만들어 쓰는거면 ILF로 볼 수 있다.
- 사원/고객/부서/급여 DB : ILF
- 통화/외환 DB : EIF
- 데이터 기능 산정
- 데이터 기능 점수 = 4 x 7.4 + 2 x 5.5 = 40.6
데이터 베이스 기능 유형 평균 복잡도 고객 DB ILF 7.4 사원 DB ILF 7.4 부서 DB ILF 7.4 급여 DB ILF 7.4 외환 DB EIF 5.5 통화 DB EIF 5.5
- 데이터 기능 점수 = 4 x 7.4 + 2 x 5.5 = 40.6
- 처리 기능 산정
- FP = 데이터 기능 점수 + 처리 기능 점수 = 40.6 + 43.4 = 84.3
트랜잭션 | 유형 | 복잡도 |
담당자는 고객주문을 입력,수정,삭제 한다 | EI | 4.3 |
인사담당자는 사원목록을 부서단위로 조회한다 | EO | 5.4 |
인사담당자는 사원목록을 단순 출력한다 | EQ | 3.8 |
인사담당자는 일정 금액 이상의 급여 수령자 사원목록을 검색한다 | EO | 5.4 |
원화에 대한 미국 달러(USD) 가치를 찾기 위해 A은행 외환DB에서 환율을 검색한다 | EO | 5.4 |
인사담당자는 5년 경력 이상이고, 해당 직무 수행겸험이 있는 사원목록을 추출한다 | EO | 5.4 |
인사담당자는 신입/경력사원 입사 시 사원 파일을 갱신한다 | EI | 4.3 |
인사담당자는 외국사원 입사시 급여를 결정하기 위해 H연합회 통화정보를 참조한다 | EO | 5.4 |
인사담당자는 사원현황을 엑셀 파일을 업로드 시킨다 | EI | 4.3 |
[5] 기능 점수의 활용
- IFPUG에서 기능 점수와 프로그래밍 언어별 LOC에 대한 매핑 테이블 제공한다.
- 주로 사용하는 언어에 대해 정리하면 아래와 같다.
- Ex. 기능 점수 1포인트 당 얼마의 LOC로 고려될 수 있는가?
- 객체 지향 언어(C++, JAVA) 의 경우에는 53 LOC로
- 절차적 언어(C) 의 경우에는 128 LOC로
- Ex. 고객 계좌 관리 시스템의 기능 점수 = 93.1
- C언어로 개발 : 93.1 x 128 = 11916 LOC
- C++, JAVA로 구현 : 93.1 x 53 = 4934 LOC
- 2020년 한국소프트웨어산업협회에서 발표한 기능 점수당 표준 단가는 553,114원이다.
- 개발비 : 93.1 x 553,114 = 51,494,913원
- 기능 점수와 품질 척도는 아래 두가지가 있다.
- 생산성 (Productivity)
- 신뢰성 (Reliability)