맨위로가기

기능 점수

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

기능 점수는 소프트웨어의 크기를 측정하는 데 사용되는 방법으로, 소프트웨어의 기능 요구 사항을 기반으로 한다. 여러 ISO 표준 및 공개 사양이 있으며, 기능 점수 분석 방법에는 다양한 변형이 존재한다. 기능 점수는 코드 라인 수의 대안으로 사용되며, 개발 생산성 측정, 프로젝트 추정 등에 활용된다. 하지만 코드 라인 수와의 높은 상관관계, 계산 방식의 복잡성 등의 한계와 비판이 존재하며, 이를 개선하기 위한 다양한 시도가 이루어지고 있다.

더 읽어볼만한 페이지

  • 소프트웨어 메트릭 - 코드 커버리지
    코드 커버리지는 테스트 스위트에 의해 실행된 코드의 비율을 측정하는 기준으로, 최종 제품 인증에 필요한 테스트 수준을 결정하며, 다양한 커버리지 기준 중 안전 필수 애플리케이션에서는 수정 조건/결정 커버리지(MC/DC)와 같은 고급 기준이 사용된다.
  • 소프트웨어 메트릭 - 결합도
    결합도는 소프트웨어 설계에서 모듈 간 상호 의존성을 나타내는 척도로, 유지보수 및 수정 비용을 줄이기 위해 낮은 결합도를 지향하는 것이 중요하며, 내용 결합, 공통 결합, 외부 결합 등 다양한 유형으로 분류된다.
  • 소프트웨어 개발 - 유스 케이스
    유스 케이스는 시스템과 액터 간 상호작용을 통해 시스템 목표 달성에 기여하는 동작들을 나타내는 요구 사항 캡처, 모델링, 명세 기법으로, 객체 지향 소프트웨어 공학에서 기능 요구 사항을 캡처하는 데 중요한 역할을 하며 다양한 분야에서 활용된다.
  • 소프트웨어 개발 - 사용자 경험 디자인
    사용자 경험 디자인은 인간 공학에 기반하여 제품 또는 서비스와 사용자 간의 상호작용을 설계하는 분야이며, 사용자 조사, 인터랙션 디자인, 사용성 테스트 등을 통해 효율적이고 만족스러운 경험을 제공하는 것을 목표로 한다.
기능 점수
개요
종류소프트웨어 개발 측정
목적소프트웨어 기능의 크기 측정
개발자앨브레히트
개발일1979년
측정 대상입력
출력
조회
파일 인터페이스
내부 논리 파일
상세 정보
장점사용자의 관점에서 기능 크기 측정
기술적인 복잡성 반영 가능
다양한 개발 방법론에 적용 가능
단점주관적인 판단 개입 가능성
초기 단계에서 정확한 예측 어려움
복잡한 시스템에 적용 시 어려움 발생 가능
활용
적용 분야소프트웨어 개발 비용 예측
프로젝트 범위 정의
생산성 측정
품질 관리
관련 용어
관련 용어COSMIC 기능 점수
NESMA 기능 점수
IFPUG

2. 표준

기능 점수는 소프트웨어 크기를 측정하기 위한 여러 가지 공인 표준 및/또는 공개 사양을 기반으로 한다. 기능 크기 측정에 대한 상위 표준(ISO/IEC 14143)의 구현에는 다음 다섯 가지 표준이 있다.[2] IT 소프트웨어 품질 컨소시엄이 주도하는 OMG 자동 기능 점수(AFP) 사양은 IFPUG의 지침에 따라 기능 점수 계산을 자동화하기 위한 표준을 제공하지만, 현재 구현에는 외부 출력(EO)과 외부 질의(EQ)를 구별하는 데 제한이 있다.[3]

2. 1. ISO 표준

다음은 기능 점수(Function Point) 측정에 대한 ISO 표준 목록이다.

  • FiSMA: ISO/IEC 29881:2010 정보 기술 – 시스템 및 소프트웨어 공학 – FiSMA 1.1 기능 크기 측정 방법.
  • IFPUG: ISO/IEC 20926:2009 소프트웨어 및 시스템 엔지니어링 – 소프트웨어 측정 – IFPUG 기능 크기 측정 방법.
  • Mark-II: ISO/IEC 20968:2002 소프트웨어 공학 – Ml II 기능 점수 분석 – 계산 실무 매뉴얼
  • Nesma: ISO/IEC 24570:2018 소프트웨어 공학 – Nesma 기능 크기 측정 방법 버전 2.3 – 기능 점수 분석 적용을 위한 정의 및 계산 가이드라인
  • COSMIC: ISO/IEC 19761:2011 소프트웨어 공학. 기능 크기 측정 방법.
  • OMG: ISO/IEC 19515:2019 정보 기술 — 객체 관리 그룹 자동 기능 점수 (AFP), 1.0


처음 다섯 개의 표준은 기능 크기 측정에 대한 상위 표준인 ISO/IEC 14143의 구현이다.[2] IT 소프트웨어 품질 컨소시엄이 주도하는 OMG 자동 기능 점수(AFP) 사양은 IFPUG의 지침에 따라 기능 점수 계산을 자동화하기 위한 표준을 제공한다. 그러나 이 표준의 현재 구현은 특별한 사전 구성 없이 외부 출력(EO)과 외부 질의(EQ)를 구별하는 데 제한이 있다.[3]

3. 기능 점수 분석 방법

기능 점수 분석 방법은 1979년 IBM의 앨런 J. 알브레히트가 제안한 ''애플리케이션 개발 생산성 측정''에서 처음 정의되었다.[4] 이 방법은 소프트웨어의 기능 요구 사항을 출력, 문의, 입력, 내부 파일, 외부 인터페이스의 5가지 유형으로 분류하고, 각 기능의 복잡성을 평가하여 기능 점수를 할당한다. 이러한 기능 점수는 최종 사용자 비즈니스 기능에 쉽게 매핑되지만, 알고리즘과 같이 구현에 리소스가 필요한 내부 기능은 반영하기 어렵다는 단점이 있다.

현재 ISO에서 인정한 기능 점수 측정 방법(FSM) 중에는 알고리즘 복잡성을 고려하는 방법이 없다. 이러한 단점을 보완하기 위해 다양한 접근 방식이 제안되었으며, 알브레히트 기반 IFPUG 방법의 변형은 다음과 같다.


  • 초기 및 간편한 기능 점수
  • 엔지니어링 기능 점수
  • 뱅(Bang) 측정
  • 기능 점수
  • 가중 마이크로 기능 점수
  • 퍼지 기능 점수

3. 1. 기능 유형

IBM의 앨런 J. 알브레히트(Allan J. Albrecht)는 1979년에 발표한 ''애플리케이션 개발 생산성 측정(Measuring Application Development Productivity)''에서 기능 점수를 정의했다.[4] 기능 점수는 소프트웨어의 기능 요구 사항을 식별하고, 각 요구사항을 출력, 문의, 입력, 내부 파일, 외부 인터페이스의 5가지 유형으로 분류한다. 기능이 식별되어 유형별로 분류되면 복잡성을 평가하고 기능 점수를 할당한다. 이러한 각 기능 사용자 요구 사항은 입력 데이터나 사용자 쿼리와 같은 최종 사용자 비즈니스 기능에 매핑된다.

기능 점수로 측정된 기능은 사용자 중심 요구사항에 쉽게 매핑되지만, 구현에 리소스가 필요한 알고리즘과 같은 내부 기능은 숨기는 경향이 있다. 현재 ISO에서 인정한 기능 점수 측정 방법(FSM) 중에는 알고리즘 복잡성을 크기 측정 결과에 포함하는 방법은 없다. 최근에는 이러한 단점을 보완하기 위한 다양한 접근 방식이 제안되었고, 여러 상업용 소프트웨어 제품에 구현되었다. 알브레히트 기반 IFPUG 방법의 변형은 다음과 같다.

  • 초기 및 간편한 기능 점수 - 문제 및 데이터 복잡성에 대해 두 가지 질문으로 조정하여 다소 주관적인 복잡성 측정을 얻는다. 데이터 요소 계산을 생략하여 측정 작업을 단순화한다.
  • 엔지니어링 기능 점수 - 요소(변수 이름)와 연산자(산술, 같음/다름, 부울 등)를 계산한다. 이 변형은 계산 기능을 강조하며,[5] 연산자/피연산자 기반의 할스테드 복잡도 측정과 유사하다.
  • 뱅(Bang) 측정 - 사용자가 인식하는 "제공되어야 하는 진정한 기능의 척도"인 뱅에 영향을 미치거나 뱅을 보여주는 12개의 기본(단순) 계수를 기반으로 기능 메트릭을 정의한다. 뱅 측정은 소프트웨어 단위가 제공하는 유용한 기능 측면에서 가치를 평가하는 데 도움이 될 수 있지만, 관련 문헌 증거는 거의 없다. 뱅 측정은 운영 시스템 유지 관리 - 개요에서 논의된 것처럼, 재 엔지니어링(전체 또는 부분)을 고려할 때 적용될 수 있다.
  • 기능 점수 - 운영 체제, 통신 시스템 등 상당한 내부 처리가 있는 시스템에 대한 적용 가능성을 개선하기 위해 변경 사항을 추가한다. 사용자가 쉽게 인식할 수는 없지만 적절한 작동에 필수적인 기능을 고려할 수 있다.
  • 가중 마이크로 기능 점수 - 프로그램 흐름 복잡성, 피연산자 및 연산자 어휘, 객체 사용 및 알고리즘에서 파생된 가중치를 사용하여 기능 점수를 조정하는 최신 모델 중 하나이다(2009년).
  • 퍼지 기능 점수 - 낮음 x 중간 및 중간 x 높음 복잡도 간의 퍼지하고 점진적인 전환을 제안한다.[6]

3. 2. 복잡도 평가

IBM의 앨런 J. 알브레히트(Allan J. Albrecht)는 1979년 ''애플리케이션 개발 생산성 측정(Measuring Application Development Productivity)''에서 기능 점수를 정의했다.[4] 소프트웨어의 기능 요구 사항은 식별되며 각 기능 요구 사항은 출력, 문의, 입력, 내부 파일 및 외부 인터페이스의 5가지 유형 중 하나로 분류된다. 기능이 식별되어 유형으로 분류되면 복잡성이 평가되고 기능 점수가 할당된다. 이러한 각 기능 사용자 요구 사항은 입력에 대한 데이터 입력 또는 문의에 대한 사용자 쿼리와 같은 최종 사용자 비즈니스 기능에 매핑된다. 이러한 구분은 기능 점수로 측정된 기능이 사용자 중심 요구 사항에 쉽게 매핑되도록 하는 경향이 있기 때문에 중요하지만, 구현에 리소스가 필요한 내부 기능(예: 알고리즘)을 숨기는 경향도 있다.

현재 ISO에서 인정한 기능 점수 측정 방법(FSM) 중에는 알고리즘 복잡성을 크기 측정 결과에 포함하는 방법은 없다. 최근 이와 같은 단점을 보완하기 위해 다양한 접근 방식이 제안되었으며, 여러 상업용 소프트웨어 제품에 구현되었다. 알브레히트 기반 IFPUG 방법의 변형은 다음과 같다.

  • 초기 및 간편한 기능 점수 - 문제 및 데이터 복잡성에 대해 두 가지 질문으로 조정하여 다소 주관적인 복잡성 측정을 얻는다. 데이터 요소 계산의 필요성을 없애 측정 작업을 단순화한다.
  • 엔지니어링 기능 점수 - 요소(변수 이름)와 연산자(예: 산술, 같음/다름, 부울)를 계산한다. 이 변형은 계산 기능을 강조한다.[5] 그 의도는 연산자/피연산자 기반의 할스테드 복잡도 측정과 유사하다.
  • 뱅(Bang) 측정 - 사용자가 인식하는 "제공되어야 하는 진정한 기능의 척도"로 정의되는 뱅에 영향을 미치거나 뱅을 보여주는 12개의 기본(단순) 계수를 기반으로 하는 기능 메트릭을 정의한다. 뱅 측정은 소프트웨어 단위가 제공하는 유용한 기능 측면에서 해당 가치를 평가하는 데 도움이 될 수 있지만, 그러한 적용에 대한 문헌 증거는 거의 없다. 뱅 측정의 사용은 운영 시스템 유지 관리 - 개요에서 논의된 바와 같이, 재 엔지니어링(전체 또는 부분)을 고려할 때 적용될 수 있다.
  • 기능 점수 - 상당한 내부 처리가 있는 시스템(예: 운영 체제, 통신 시스템)에 대한 적용 가능성을 개선하기 위해 변경 사항을 추가한다. 이를 통해 사용자가 쉽게 인식할 수 없지만 적절한 작동에 필수적인 기능을 고려할 수 있다.
  • 가중 마이크로 기능 점수 - 프로그램 흐름 복잡성, 피연산자 및 연산자 어휘, 객체 사용 및 알고리즘에서 파생된 가중치를 사용하여 기능 점수를 조정하는 최신 모델 중 하나(2009년)이다.
  • 퍼지 기능 점수 - 낮은 x 중간 및 중간 x 높은 복잡도 간의 퍼지하고 점진적인 전환을 제안한다.[6]

4. 기능 점수 계산 과정

IBM의 앨런 J. 알브레히트가 1979년에 발표한 ''애플리케이션 개발 생산성 측정(Measuring Application Development Productivity)''에서 기능 점수가 처음 정의되었다.[4] 기능 점수는 소프트웨어의 기능 요구 사항을 식별하고, 각 요구 사항을 출력, 문의, 입력, 내부 파일, 외부 인터페이스의 5가지 유형으로 분류한다. 각 기능은 복잡성에 따라 평가되어 기능 점수가 할당된다. 이러한 기능들은 데이터 입력(입력)이나 사용자 쿼리(문의)와 같이 최종 사용자의 비즈니스 기능에 직접 연결된다.

기능 점수는 사용자 중심 요구 사항을 쉽게 반영하지만, 알고리즘과 같이 구현에 많은 자원이 필요한 내부 기능은 제대로 반영하지 못하는 경향이 있다. 현재 ISO에서 인정하는 기능 점수 측정 방법(FSM) 중에는 알고리즘 복잡성을 고려하는 방법이 없다.

이러한 단점을 보완하기 위해 다양한 접근 방식이 제안되었고, 상용 소프트웨어 제품에도 구현되었다. 알브레히트 기반 IFPUG 방법의 변형은 다음과 같다.


  • 초기 및 간편 기능 점수: 문제 및 데이터 복잡성에 대한 두 가지 질문으로 조정하여 복잡성을 측정한다. 데이터 요소 계산을 생략하여 측정을 단순화한다.
  • 엔지니어링 기능 점수: 요소(변수 이름)와 연산자(예: 산술, 같음/다름, 부울)를 계산하여 계산 기능을 강조한다.[5] 할스테드 복잡도 측정과 유사하다.
  • 뱅(Bang) 측정: 사용자가 인식하는 "제공되어야 하는 진정한 기능의 척도"를 정의하는 12개의 기본 계수를 기반으로 기능 메트릭을 정의한다. 소프트웨어 단위가 제공하는 유용한 기능 측면에서 가치를 평가하는 데 도움이 될 수 있지만, 관련 문헌 증거는 부족하다. 운영 시스템 유지 관리 개요에서 논의된 것처럼 재 엔지니어링(전체 또는 부분)을 고려할 때 적용할 수 있다.
  • 기능 점수: 운영 체제, 통신 시스템 등 내부 처리가 많은 시스템에 적용 가능성을 개선하기 위해 변경되었다. 사용자가 쉽게 인식할 수 없지만 작동에 필수적인 기능을 고려한다.
  • 가중 마이크로 기능 점수: 프로그램 흐름 복잡성, 피연산자 및 연산자 어휘, 객체 사용, 알고리즘에서 파생된 가중치를 사용하여 기능 점수를 조정하는 최신 모델 중 하나이다(2009년).
  • 퍼지 기능 점수: 낮음 x 중간, 중간 x 높음 복잡도 간의 점진적인 전환을 제안한다.[6]

5. 기능 점수 활용

기능 점수는 코드 라인 수 대신 몇 가지 추가적인 문제를 해결하고자 사용된다.


  • 개발자가 더 생산적으로 일하도록 유도하는 경우, 생성된 코드 라인 수의 "팽창" 위험이 있어 측정 시스템의 가치가 감소할 수 있다. 기능 점수 옹호론자들은 이를 문제의 크기가 아닌 솔루션의 크기를 측정하는 것으로 언급한다.
  • LOC(코드 라인 수)는 더 높은 수준의 언어와 유사한 양의 기능을 제공하기 위해 더 많은 코드 라인이 필요한 저수준 언어를 보상한다.[7] C. Jones는 자신의 저서에서 이를 수정하는 방법을 제시한다.[8]
  • LOC 측정은 제공될 코드 라인 수를 추정하기 어려운 초기 프로젝트 단계에서는 유용하지 않다. 그러나 기능 점수는 요구 사항에서 파생될 수 있으므로 프록시 추정(estimation by proxy)과 같은 방법에서 유용하다.

6. 한계 및 비판

기능 점수는 코드 라인 수(LOC) 대신 몇 가지 추가적인 문제를 해결하고자 사용된다.


  • 개발자가 더 생산적으로 일하도록 유도하는 경우, 생성된 코드 라인 수의 "팽창" 위험이 있어 측정 시스템의 가치가 감소할 수 있다. 기능 점수 옹호론자들은 이를 문제의 크기가 아닌 솔루션의 크기를 측정하는 것으로 언급한다.
  • LOC 측정은 더 높은 수준의 언어와 유사한 양의 기능을 제공하기 위해 더 많은 코드 라인이 필요한 저수준 언어를 보상한다.[7] C. Jones는 자신의 저서에서 이를 수정하는 방법을 제시한다.[8]
  • LOC 측정은 제공될 코드 라인 수를 추정하기 어려운 초기 프로젝트 단계에서는 유용하지 않다. 그러나 기능 점수는 요구 사항에서 파생될 수 있으므로 프록시 추정(estimation by proxy)과 같은 방법에서 유용하다.


알브레히트는 자신의 연구에서 기능 점수가 코드 라인 수와 매우 높은 상관관계를 보인다는 것을 관찰했다.[9] 이는 보다 객관적인 측정 방식, 즉 코드 라인 수를 세는 방식이 있다면, 그러한 측정 방식의 가치에 대한 의문을 제기하게 만들었다. 또한, 측정 방식의 인지된 단점을 해결하기 위해 여러 차례 계산 방식을 보완하려는 시도가 있었다.[10][11][12][13][14][15] 다른 연구자들은 제공되는 기능의 양에 대한 대리 변수를 생성하는 대체 방법을 개발하여 이러한 문제들을 해결하려는 시도를 했다.[16]

7. 개선된 기능 점수 측정 방법

IBM의 앨런 J. 알브레히트가 1979년에 발표한 ''애플리케이션 개발 생산성 측정(Measuring Application Development Productivity)''에서 기능 점수가 처음 정의되었다.[4] 초기 기능 점수 측정 방법은 소프트웨어의 기능 요구 사항을 식별하고, 이를 출력, 문의, 입력, 내부 파일, 외부 인터페이스의 5가지 유형으로 분류했다. 각 기능은 복잡성에 따라 평가되어 기능 점수가 할당되었다. 이러한 기능들은 최종 사용자 비즈니스 기능(예: 데이터 입력, 사용자 쿼리)에 쉽게 매핑되었지만, 구현에 필요한 내부 기능(예: 알고리즘)은 고려하지 않는 경향이 있었다.

현재 ISO에서 인정한 기능 점수 측정 방법(FSM) 중에는 알고리즘 복잡성을 고려하는 방법은 없다. 이러한 단점을 보완하기 위해 다음과 같은 다양한 변형된 기능 점수 측정 방법들이 제안되었고, 상용 소프트웨어 제품에도 구현되었다.


  • 초기 및 간편 기능 점수: 문제 및 데이터 복잡성에 대한 두 가지 질문을 통해 조정하여 주관적인 복잡성 측정을 제공한다. 데이터 요소 계산을 생략하여 측정을 단순화한다.
  • 엔지니어링 기능 점수: 요소(변수 이름)와 연산자(예: 산술, 같음/다름, 부울)를 계산하여 계산 기능을 강조한다.[5] 이는 할스테드 복잡도 측정과 유사한 접근 방식이다.
  • 뱅(Bang) 측정: 사용자가 인식하는 "제공되어야 하는 진정한 기능의 척도"인 뱅을 정의하고, 12개의 기본 계수를 기반으로 기능 메트릭을 계산한다. 뱅 측정은 소프트웨어 단위의 유용한 기능을 평가하는 데 도움을 줄 수 있지만, 실제 적용 사례는 많지 않다. 운영 시스템 유지 관리와 같이 재 엔지니어링을 고려할 때 뱅 측정을 활용할 수 있다.
  • 기능 점수: 운영 체제나 통신 시스템과 같이 내부 처리가 많은 시스템에 적용 가능성을 개선하기 위해 변경된 방법이다. 사용자가 쉽게 인식할 수는 없지만 시스템 작동에 필수적인 기능을 고려한다.
  • 가중 마이크로 기능 점수: 프로그램 흐름 복잡성, 피연산자 및 연산자 어휘, 객체 사용, 알고리즘에서 파생된 가중치를 사용하여 기능 점수를 조정하는 최신 모델 중 하나이다(2009년).
  • 퍼지 기능 점수: 낮음, 중간, 높음 복잡도 간의 점진적인 전환을 제안한다.[6]

참조

[1] 웹사이트 Estimating Lessons Learned in Project Management – Traditional http://www.pmhut.com[...] Thomas Cutting 2010-05-28
[2] 웹사이트 ISO/IEC 14143 https://www.iso.org/[...] International Standards Organization 2007-02-01
[3] 간행물 Automated Function Points http://www.omg.org/s[...] 2013-02
[4] 논문 Measuring Application Development Productivity IBM Corporation 1979-10-14
[5] 웹사이트 Engineering Function Points and Tracking System http://www.stsc.hill[...] Software Technology Support Center 2008-05-14
[6] 학술지 Fuzzy Modeling for Function Points Analysis 2003-06-01
[7] 서적 The Economics of Software Quality Addison-Wesley 2012
[8] 서적 Applied Software Measurement: Assuring Productivity and Quality McGraw-Hill 1996-06
[9] 논문 Software Function, Source Lines of Code, and Development Effort Estimation – A Software Science Validation 1983
[10] 학술지 Function point analysis: difficulties and improvements 1988-01
[11] 학술지 Function point analysis: evaluation of a software cost estimation model 1991
[12] 논문 Specification-based software sizing: An empirical investigation of function metrics 1993
[13] 서적 Software sizing and estimating: Mk II FPA (Function Point Analysis) John Wiley & Sons, Inc. New York 1991
[14] 학술지 An algorithm for sizing software products 1984
[15] 학술지 A comparison of function point counting techniques 1993
[16] 논문 Using Test Cases To Size Systems: A Case Study 2012-04
[17] 웹사이트 Estimating Lessons Learned in Project Management – Traditional http://www.pmhut.com[...] Thomas Cutting 2010-05-28



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com