기능점수 검증

1. 개요

기능점수(Function Point)는 소프트웨어의 규모를 기능적 관점에서 측정하는業界 표준 방법론이다. 기능점수 검증은 개발 또는 유지보수 대상 소프트웨어의 기능점수를 산정하고, 그 산정 결과가 정확한지를 감리자가 검토·확인하는 활동이다. 기능점수는源代码 라인 수(Lines of Code, LOC)와 달리 프로그래밍 언어에依存하지 않으며, 사용자에게 제공하는 기능의 양을 기준으로 규모를 측정하므로, 서로 다른 기술 스택을 가진 프로젝트도公平하게 비교할 수 있다.

기능점수는 International Function Point Users Group (IFPUG)에서 개발한 IFPUG 기능점수 방법론이 가장 널리 사용되며, 이밖에 COSMIC, FiSMA, NESMA 등의 방법론도 존재한다. 기능점수의 주요 용도는软件开发 비용 산정, 일정 계획, 생산성 측정, 프로젝트 성과 평가 등이다. 감리자는 기능점수 산정 과정에서 발생할 수 있는 오류를 방지하고, 산정 결과의 신뢰성을 확보하기 위해 기능점수 검증을 수행한다.

기능점수 검증의 중요성은 정보화 사업의 비용 편익 분석, 사업자 선정 평가, 사업 완료 후 실측과의 비교 등 사업 관리 전 과정에 걸쳐凸显된다. 특히 공공부문 정보화 사업에서는 기능점수 기반 사업 관리 체계를 도입하여 사업자의 과다报价을 방지하고, 사업 완료 시 실제 규모와 산정 규모의 차이에 따른 비용 조정을 수행하고 있다. 감리자는 이러한制度가 올바르게 운영되도록 기능점수 산정과 검증을 독립적으로 검토해야 한다.


2. ASCII 다이어그램

기능점수 산정 흐름

[기능점수 산정 과정]

┌─────────────────────────────────────────────────────────────────────┐
│                      기능점수 산정 과정                               │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│   ┌─────────────────────────────────────────────────────────┐      │
│   │                   기능점수 구성 요소                      │      │
│   ├─────────────────────────────────────────────────────────┤      │
│   │                                                         │      │
│   │   [1. 데이터 기능]              [2. 트랜잭션 기능]        │      │
│   │   ┌─────────────────┐        ┌─────────────────┐        │      │
│   │   │ 내부 논리 파일   │        │ 외부 입력(EI)    │        │      │
│   │   │ (ILF)          │        │(External Input) │        │      │
│   │   ├─────────────────┤        ├─────────────────┤        │      │
│   │   │ 외부 참조 파일   │        │ 외부 출력(EO)   │        │      │
│   │   │ (EIF)          │        │(External Output)│        │      │
│   │   ├─────────────────┤        ├─────────────────┤        │      │
│   │   │                │        │ 외부 조회(EQ)    │        │      │
│   │   │                │        │(External Query) │        │      │
│   │   └─────────────────┘        └─────────────────┘        │      │
│   │                                                         │      │
│   └─────────────────────────────────────────────────────────┘      │
│                              │                                      │
│                              ▼                                      │
│   ┌─────────────────────────────────────────────────────────┐      │
│   │                   복잡도 조정                            │      │
│   │                                                         │      │
│   │   [복잡도 요소]  ○ 데이터 항목 수   ○ 파일 참조 수       │      │
│   │                 ○ 파일 항목 수   ○ 처리 로직 복잡도     │      │
│   │                                                         │      │
│   │   [조정 방식]  ┌─────────────────┐                     │      │
│   │               │  未調整 기능점수   │──▶ +α 보정 → 조정FP │      │
│   │               │    (UFP)        │     (Adjusted FP)   │      │
│   │               └─────────────────┘                     │      │
│   └─────────────────────────────────────────────────────────┘      │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

기능점수 검증 절차

[기능점수 검증 절차]

┌─────────────┐    ┌─────────────┐    ┌─────────────┐    ┌─────────────┐
│  요구사항   │───▶│  기능 식별   │───▶│  복잡도    │───▶│  점수 산정  │
│  분석       │    │  (Counting)  │    │  평가       │    │  (Sizing)   │
└─────────────┘    └─────────────┘    └─────────────┘    └─────────────┘
      │                  │                  │                  │
      ▼                  ▼                  ▼                  ▼
 요구사항 문서        ILF/EIF/EI/EO/EQ    RET/DET/FTR        UFP/AFP
 검토 및 분류         식별 및 분류        평가 및 분류         합산 및 조정

3. 해석

3.1 기능점수 방법론 이해

기능점수 방법론의 핵심은 소프트웨어가 사용자에게 제공하는 기능의 양을 객관적으로 측정하는 것이다. 기능점수는 크게 데이터 기능과 트랜잭션 기능으로 구분된다.

데이터 기능: 시스템이 관리하는 데이터의 논리적 그룹을 나타내며, 내부 논리 파일(Internal Logical File, ILF)과 외부 참조 파일(External Interface File, EIF)로 구분된다. ILF는 시스템 내부에서 생성하고 유지하는 논리적 데이터 그룹이고, EIF는 다른 시스템에서 참조만 하는 논리적 데이터 그룹이다. 예를 들어, 주문 관리 시스템에서 "주문" 데이터는 ILF에 해당하고, 외부 시스템에서 연계받는 "고객" 데이터는 EIF에 해당할 수 있다.

트랜잭션 기능: 데이터를 처리하는 기능을 나타내며, 외부 입력(External Input, EI), 외부 출력(External Output, EO), 외부 조회(External Query, EQ)로 구분된다. EI는 데이터를 입력받아 시스템을 갱신하는 처리이고, EO는 데이터를 가공하여 출력하는 처리이며, EQ는 데이터를 조회만 하는 처리이다.

각 기능 요소는 데이터 항목 수(Data Element Type, DET), 파일 참조 수(File Type Referenced, FTR), 레코드 요소 수(Record Element Type, RET) 등의 복잡도 요소에 따라 저평가, 중평가, 고평가 된다. 복잡도가 높을수록 더 많은 기능점이 할당된다.

3.2 기능점수 산정 절차

기능점수 산정은 체계적인 절차를 따라 수행되어야 하며, 감리자는 이 절차의 적절성을 검증해야 한다.

단계 1: 경계 결정: 분석의 범위와 대상 시스템의 경계를 명확히界定한다. 어느 기능까지를 하나의 응용 시스템으로 볼 것인지, 다른 시스템과의 경계를 어떻게划分할 것인지를 결정해야 한다. 경계 설정이 모호하면 기능의 중복 계산이나 누락이 발생할 수 있다.

단계 2: 기능 식별: 데이터 기능(ILF, EIF)과 트랜잭션 기능(EI, EO, EQ)을 식별한다. 모든 기능이漏れ없이 식별되어야 하며, 식별된 기능은 요구사항 문서, 설계 문서 등을 기반으로 검증해야 한다.

단계 3: 복잡도 결정: 각 기능 요소의 복잡도를 결정한다. DET, RET, FTR의 개수에 따라 저·중·고 복잡도가 결정되며, 이는 기능점수에直接影响된다. 복잡도 결정 기준은 IFPUG에서定시公布的 Guidelines에 명시되어 있다.

단계 4: 기능점수 산출: 각 기능 요소에 해당하는 기능점수를 합산하여 미조정 기능점수(Unadjusted Function Point, UFP)를 산출한다. 이후_general System Characteristics (GSC) 14개 항목을 평가하여 조정 계수(Value Adjustment Factor, VAF)를 산출하고, UFP에 VAF를 적용하여 조정 기능점수(Adjusted Function Point, AFP)를 산출한다.

3.3 기능점수 검증 핵심 포인트

감리자가 기능점수 검증을 수행할 때重点적으로 확인해야 할 사항은 다음과 같다.

요구사항과의 정합성: 기능점수 산정의基礎가 되는 요구사항이 완전하고 정확한지를 확인한다. 요구사항이 누락되면 기능이 빠지고, 요구사항이 과장되면 기능점이 과다 산정된다. 감리자는 요구사항 문서와 기능점수 산정 내역을 대조하여 누락이나 불일치가 없는지를 검증해야 한다.

경계 설정 적절성: 시스템 경계, ILF/EIF 경계가 적절히 설정되었는지를 확인한다. 다른 시스템과 중복되지 않는지, 내부적으로 논리적으로 그룹화된 데이터가 하나의 ILF로 적절히 식별되었는지를 검토해야 한다.

복잡도 분류 적절성: 각 기능 요소의 복잡도가 정해진 기준에 따라 정확히 분류되었는지를 검증한다. 복잡도 요소를 과소평가하면 기능점이 과소 산정되고, 과대평가하면 과다 산정된다.

계산 오류 검증: 기능점수의 산술적 계산이 정확한지를 확인한다. 합산 오류, VAF 계산 오류 등이 없는지를 검증해야 한다.

3.4 실측 기능점수와의 비교

사업 완료 후 실제 산출된 기능점수(실측)와 사전에 산정된 기능점수(산정)의 차이가 일정 수준을 초과하면, 비용 조정이 이루어진다. 감리자는 실측과 산정의 차이가 합리적인 범위内有 있는지를 검증해야 한다.

실측 방법 적절성: 사업자가 사업 완료 후 산출한 실측 기능점수가 정확한 방법론으로 산정되었는지를 확인한다. 실측 방법이 산정 방법과 동일해야公平한 비교가 가능하다.

차이 원인 분석: 산정과 실측의 차이가 발생하는 원인을 분석해야 한다. 요구사항 변경에 따른 기능 증감, 산정 시 고려하지 않은 기능의 발견, 산정 오류 등 다양한 원인이 있을 수 있다. 원인이 합리적이라면 차이는容許될 수 있다.

3.5 기능점수 활용 시 주의사항

기능점수는 강력한 규모 측정 도구이지만,万能은 아니다. 감리자는 기능점수의局限性도認識하고 활용해야 한다.

기능점수가 포착하지 못하는 요소: 사용자 인터페이스 복잡도, 성능 요구사항 수준, 실시간 처리 요구사항, 시스템 통합 복잡도 등은 기능점수로完全 포착되기 어렵다. 기능점수 외에 이러한 요소들을 함께 고려해야 한다.

방법론 일관성: 기능점수 방법론(IFPUG, COSMIC 등)은 각각의특징이 있으므로, 하나의 사업에서 서로 다른 방법론을 혼용하면 비교가 불가능하다. 사업一开始就 명확한 방법론을 선택하고 일관되게 적용해야 한다.


4. 핵심 용어 정리

용어영문명설명
기능점수Function Point (FP)소프트웨어의 기능적 규모를 측정하는 단위
내부 논리 파일Internal Logical File (ILF)시스템 내부에서 생성·유지하는 논리적 데이터 그룹
외부 참조 파일External Interface File (EIF)다른 시스템에서 참조만 하는 논리적 데이터 그룹
외부 입력External Input (EI)데이터를 입력받아 시스템을 갱신하는 트랜잭션
외부 출력External Output (EO)데이터를 가공·처리하여 출력하는 트랜잭션
외부 조회External Query (EQ)데이터를 조회만 하는 트랜잭션
미조정 기능점수Unadjusted Function Point (UFP)복잡도 조정 전 총 기능점수
조정 기능점수Adjusted Function Point (AFP)GSC를 반영하여 조정한 총 기능점수

5. analogies 📢

기능점수 검증은 아파트의 전용 면적 검량과 같다. 아파트의 전용 면적은购房者에게 제공되는 실제居住 공간의 크기를 나타내며, 이 면적에 따라 가격이 결정된다. 때때️ 발开发商가 면적을 과대 산정하여 가격을 부당하게 올리거나, 면적을 과소 산정하여 실제居住 공간이 좁은 경우가 있다. Likewise, 소프트웨어 기능점수는 개발자에게 지불될 비용의 기준이 되며, 사업자가 기능점을 과다 산정하면 발주자가 과다 비용을 지불하게 된다. 감리자는功能점수 검증을 통해 산정 결과가 정확한지를 확인하며, 이를테면 아파트의 면적을 제3자 기관이 검량하여购房者를 보호하듯, 기능점수 검증을 통해 정보화 사업의 발주자를 보호한다. 면적 검량에서 측정 오차의容許 범위가 있듯, 기능점수에서도 산정과 실측 간 합리적인 차이의容許 범위가 있으며, 이를 초과하는 차이에 대해서는 반드시 원인 분석과정이 이루어져야 한다.