기능점수
“사용자 기능 기준으로 규모를 측정하는 산정 방법. 코드량과 무관.”
기능점수란 무엇인가
기능점수(Function Point, FP)는 소프트웨어의 규모를 코드량이 아니라 사용자가 체감하는 기능의 양으로 측정하는 산정 방법이다. 화면 몇 개를 짰는지, 코드가 몇 줄인지가 아니라 사용자가 데이터를 입력·조회·저장·출력하는 기능이 얼마나 되는지를 헤아려 크기를 매긴다.
같은 기능을 어떤 언어로 어떤 방식으로 구현하든 사용자에게 제공되는 가치가 같다면 규모도 같게 보겠다는 관점이 핵심이다. 그래서 기능점수는 구현 기술의 선택에 흔들리지 않는, 사용자 관점의 규모 척도로 통한다.
개발 생산성과 무관하게 산출물의 크기를 객관적으로 비교할 수 있다는 점이 가장 큰 효용이다.
코드량과 분리된 측정
기능점수가 LOC 산정과 갈라지는 지점은 측정 대상이 결과물의 분량이 아니라 기능의 윤곽이라는 데 있다. 같은 조회 기능을 한 언어로는 길게, 다른 언어로는 짧게 작성할 수 있지만 사용자가 누리는 기능은 동일하므로 기능점수는 같다.
이 때문에 기능점수는 언어·플랫폼·개발자의 코딩 습관에 좌우되지 않는다는 장점을 가진다. 또한 설계가 끝나기 전, 요구사항과 외부 인터페이스의 윤곽만 잡혀도 추정이 가능해 기획 단계의 규모 산정에 적합하다.
코드가 한 줄도 작성되기 전에 규모를 가늠할 수 있다는 점은 발주와 계약 시점의 협상 근거로 특히 유용하다.
기능 유형의 분해
기능점수 산정은 시스템이 다루는 기능을 성격에 따라 몇 가지 유형으로 나누는 데서 출발한다. 크게 사용자가 시스템 안에서 관리하는 데이터의 묶음과, 외부 시스템과 주고받는 데이터의 묶음으로 나뉘는 데이터 기능, 그리고 데이터를 입력하고 조회하고 출력하는 트랜잭션 기능으로 구분된다.
각 기능은 다루는 데이터의 복잡도에 따라 단순·보통·복잡 등의 수준으로 가중되어 점수가 부여된다. 이렇게 유형별로 식별한 기능에 가중치를 적용해 합산하면 시스템의 미보정 규모가 나온다.
분해의 일관성이 산정의 신뢰성을 좌우하므로, 무엇을 하나의 기능으로 볼지에 대한 기준을 흔들림 없이 적용하는 것이 중요하다.
| 구분 | 기능점수 | LOC |
|---|---|---|
| 측정 대상 | 사용자 기능 | 코드 라인 수 |
| 언어 의존 | 없음 | 큼 |
| 산정 시점 | 기획·설계 전 | 구현 후 |
맨먼스·COCOMO와의 연결
기능점수는 그 자체로 일정이나 비용이 아니라 규모를 나타내는 중간 지표다. 따라서 산정한 규모를 공수(맨먼스)로 환산하려면 단위 기능당 생산성, 즉 한 기능을 만드는 데 드는 노력에 대한 기준값이 필요하다.
조직이 축적한 과거 실적에서 기능점수당 투입 공수를 도출하면 새 프로젝트의 규모를 곧바로 맨먼스로 옮길 수 있다. COCOMO와 같은 비용 추정 모형도 규모를 입력으로 받는데, 이때 기능점수를 규모 입력값으로 삼아 보다 사용자 관점에 가까운 추정을 할 수 있다.
결국 기능점수는 규모 측정과 비용·일정 산정을 잇는 다리 역할을 한다.
발주와 계약의 기준
기능점수는 공공·대형 정보화 사업에서 사업 대가를 산정하는 근거로 폭넓게 쓰인다. 코드량은 개발사의 구현 방식에 따라 부풀려질 수 있어 객관적 정산 기준이 되기 어렵지만, 기능점수는 사용자 기능을 기준으로 하므로 발주사와 수행사가 동일한 잣대로 규모를 합의할 수 있다.
이 덕분에 요구사항이 변경될 때 늘어난 기능만큼의 추가 규모를 정량적으로 따져 대가를 조정하는 근거로도 활용된다. 범위가 증가하는 국면에서 기능점수는 단순한 추정치를 넘어 협상의 공통 언어가 된다.
다만 합의된 산정 기준과 가중 규칙을 양측이 사전에 명확히 공유해야 분쟁을 줄일 수 있다.
적용의 전제와 한계
기능점수는 데이터 입출력과 트랜잭션이 명확한 업무 시스템에 잘 들어맞지만, 복잡한 연산이나 실시간 제어처럼 사용자 기능으로 환원되지 않는 영역의 규모는 충분히 반영하지 못한다는 한계가 있다. 알고리즘의 난이도나 비기능 요구사항의 무게는 기능의 개수만으로는 잡히지 않기 때문이다.
또한 산정에 일정한 숙련이 필요하고, 기능을 식별하는 기준이 사람마다 다르면 같은 시스템도 다른 점수가 나올 수 있다. 따라서 조직 차원의 산정 지침과 과거 실적 데이터가 함께 갖춰져야 기능점수가 신뢰할 만한 추정 기반이 된다.
도구는 같아도 그것을 떠받치는 데이터와 기준의 성숙도가 결과의 질을 가른다.
관련 용어