COSMIC 기능점수란 무엇이며, 작업 시간 추정과 무엇이 다릅니까?
부다페스트의 소프트웨어 개발 회사인 Mesterséges Intelligencia Központ Kft.는 소프트웨어의 규모를 COSMIC 기능점수로 측정합니다. 그러면 규모는 추정하는 사람의 감이 아니라 소프트웨어의 속성이 되므로, 검증하고 다시 측정할 수 있으며 두 견적을 비교할 수 있습니다.
핵심: COSMIC(ISO/IEC 19761)은 소프트웨어의 기능 규모를 측정합니다. 입력, 출력, 읽기, 쓰기의 모든 데이터 이동은 각각 1 COSMIC 기능점수(CFP)입니다. 작업 시간 추정은 추정하는 사람이 얼마나 많은 작업을 예상하는지를 알려 주고, 측정된 규모는 과제가 얼마나 큰지를 알려 줍니다. 그래서 검증하고 다시 측정할 수 있으며 두 견적을 비교할 수 있습니다. 그리고 공수는 규모와 경험적 생산성으로부터 도출할 수 있습니다.
기능 규모 측정이란 무엇입니까?
소프트웨어의 규모는 프로그램 행 수, 시간, 점수 등 여러 방식으로 나타낼 수 있습니다. 기능 규모 측정(functional size measurement, FSM)은 소프트웨어를 어떻게 구현하는지가 아니라, 사용자의 관점에서 소프트웨어가 무엇을 할 수 있어야 하는지를 측정합니다. 기본 개념은 ISO/IEC 14143-1:2007 표준이 정하고 있으며, 이 표준의 설명에 따르면 목적은 바로 측정이 구현 방식 대신 사용자가 요구하는 기능에 주목하도록 하는 것입니다.
측정의 기반은 기능 사용자 요구사항(functional user requirements, FUR)의 범위입니다. 이는 사용자 요구사항 가운데 소프트웨어가 어떤 작업과 서비스를 수행해야 하는지를 기술하는 부분입니다. 성능, 보안, 선택한 기술은 여기에 속하지 않으며, 이에 관해서는 아래 한계 부분에서 다룹니다.
표준화된 기능 규모 측정 방법은 여러 가지가 있습니다. 가장 잘 알려진 것은 COSMIC(ISO/IEC 19761:2011)과 IFPUG 방법(ISO/IEC 20926:2009)이며, ISO는 다른 방법(NESMA, FiSMA, Mk II)도 표준화했습니다. 모두 요구사항을 바탕으로 하지만 규칙과 측정 단위가 다르므로, 서로 다른 방법으로 측정한 수치는 직접 비교할 수 없습니다.
COSMIC이란 무엇입니까?
COSMIC은 Common Software Measurement International Consortium의 약자로, 이 방법을 관리하고 측정자 인증을 운영하는 비영리 단체입니다. 이 방법은 1990년대 말 기존 기능점수 방법을 발전시킨 형태로 만들어졌고, 2003년에 ISO 표준이 되었으며, 현재 유효한 판은 ISO/IEC 19761:2011입니다. 방법의 상세한 설명서인 COSMIC Measurement Manual 5.0판은 무료로 내려받을 수 있으며, 제1부는 2021년, 제2부는 2024년에 발행되었습니다.
표준에 따르면 이 방법은 응용 소프트웨어(예: 업무 시스템), 실시간 소프트웨어, 그리고 이 둘의 혼합형을 측정하는 데 적합합니다. 즉 ERP, CRM, 온라인 쇼핑몰 시스템도, 제어 소프트웨어도 이 방법으로 측정할 수 있습니다.
COSMIC 모델의 개념
COSMIC은 소프트웨어를 단순한 모델로 설명합니다. 소프트웨어는 경계를 넘어 기능 사용자와 데이터를 주고받고, 경계 안에서는 영구 저장소에서 데이터를 읽거나 영구 저장소에 데이터를 씁니다.
| 개념 | 의미 | 예시 |
|---|---|---|
| 기능 사용자 | 소프트웨어에 데이터를 보내거나 소프트웨어로부터 데이터를 기대하는 사람 또는 대상: 사람, 다른 소프트웨어, 장치 | 담당 직원, 청구서 발행 시스템 |
| 경계 | 측정 대상 소프트웨어와 그 기능 사용자 사이의 개념적 인터페이스 | 웹 화면과 다른 시스템에 열려 있는 인터페이스 |
| 트리거 이벤트 | 기능 사용자가 그에 반응해 프로세스를 시작하는 이벤트 | 새 고객이 가입을 신청함 |
| 기능 프로세스 | 요구사항의 기본적이고 독립적으로 실행할 수 있는 단위이자, 서로 연결된 데이터 이동의 집합 | “새 고객 등록” |
| 데이터 그룹 | 소프트웨어가 데이터를 처리해야 하는 하나의 대상을 기술하는 데이터 속성의 묶음 | 고객: 이름, 주소, 세금 번호, 이메일 |
| 데이터 이동 | 하나의 데이터 그룹의 이동이며, 네 가지 유형이 있음 | 아래 참고 |
네 가지 데이터 이동은 다음과 같습니다.
- Entry(입력): 데이터 그룹 하나가 기능 사용자로부터 경계를 넘어 프로세스로 들어옵니다.
- Exit(출력): 데이터 그룹 하나가 프로세스에서 경계를 넘어 기능 사용자에게 나갑니다.
- Read(읽기): 프로세스가 영구 저장소에서 데이터 그룹 하나를 읽습니다.
- Write(쓰기): 프로세스가 데이터 그룹 하나를 영구 저장소에 씁니다. 삭제도 쓰기로 계산합니다.
측정 규칙 가운데 계산을 결정하는 몇 가지는 다음과 같습니다.
- 모든 데이터 이동은 1 CFP입니다. 기능 프로세스의 규모는 그 데이터 이동의 합이고, 소프트웨어의 규모는 그 프로세스 규모의 합입니다.
- 모든 기능 프로세스는 최소 두 개의 데이터 이동으로 이루어집니다. 트리거가 되는 입력 하나와, 최소 하나의 출력 또는 쓰기입니다.
- 한 프로세스 안에서 같은 데이터 그룹에 대한 한 유형의 이동은 필드가 몇 개이든 한 번만 계산합니다.
- 한 프로세스의 모든 오류 메시지와 확인 메시지는 합쳐서 하나의 출력입니다.
- 규모는 발생 횟수가 아니라 유형에 따라 정해집니다. 하루에 고객을 열 명 등록하든 만 명 등록하든 규모는 달라지지 않습니다.
- 이 방법은 데이터 처리(계산, 검증)를 따로 측정하지 않습니다. 데이터 처리는 해당 데이터 이동의 일부입니다.
결과는 비율 척도이므로 규모를 더하고 비교할 수 있습니다. 40 CFP인 두 부분은 합쳐서 80 CFP이며, 부분합은 기능 그룹별로도 나타낼 수 있습니다.
풀이 예시: “새 고객 등록”
단순한 요구사항 하나를 예로 들어 봅니다. “담당 직원이 새 고객의 정보(이름, 주소, 세금 번호, 이메일)를 등록합니다. 시스템은 고객이 이미 등록되어 있지 않은지 확인하고, 저장한 뒤, 성공 또는 오류를 알립니다.” 측정 단계는 다음과 같습니다.
- 기능 사용자는 담당 직원이고, 트리거 이벤트는 새 고객이 가입을 신청하는 것입니다.
- 데이터 그룹은 고객입니다. 네 가지 데이터 속성은 같은 대상을 기술하므로 하나의 그룹입니다.
- 데이터 이동은 요구사항의 문장에서 식별하고, 각각을 셉니다.
| 단계 | 데이터 이동 | 데이터 그룹 | 규모 |
|---|---|---|---|
| 담당 직원이 양식을 제출함 | Entry(입력) | 고객 | 1 CFP |
| 시스템이 고객이 이미 있는지 확인함 | Read(읽기) | 고객 | 1 CFP |
| 시스템이 새 고객을 저장함 | Write(쓰기) | 고객 | 1 CFP |
| 성공 또는 모든 오류에 대한 알림 | Exit(출력) | 오류 메시지와 확인 메시지 | 1 CFP |
| 합계 | 네 개의 데이터 이동 | 하나의 데이터 그룹 | 4 CFP |
COSMIC 웹사이트에 공개된 가이드의 “새 직원 등록” 예시도 같은 방식으로 구성되어 있습니다. 요구사항이 바뀌면 규모에는 다음과 같이 나타납니다.
- 시스템이 새 고객을 청구서 발행 시스템에도 넘겨야 한다면, 이는 다른 기능 사용자를 향한 출력이 하나 더 생기는 것이므로 5 CFP가 됩니다.
- 우편번호를 지역명 테이블과 대조해 확인해야 한다면, 다른 데이터 그룹에 관한 것이므로 읽기가 하나 더 생겨 1 CFP가 늘어납니다.
- 양식이 고객에 관해 네 개가 아니라 열두 개의 필드를 요구하더라도, 데이터 그룹이 같으므로 규모는 달라지지 않습니다.
- 기존 프로세스를 수정해야 한다면, 변경의 규모는 추가, 수정, 삭제된 데이터 이동의 합입니다.
이 예시는 측정을 왜 검증할 수 있는지도 보여 줍니다. 모든 CFP 뒤에는 이름이 붙은 요구사항, 데이터 그룹, 규칙이 있습니다. 누군가 이의를 제기하면 정확히 어느 행이 문제인지 짚을 수 있습니다.
일찍 측정하고 나중에 다듬기
COSMIC 측정은 측정의 목적과 범위를 정하는 것에서 시작합니다. 무엇을 측정하는지, 무엇이 포함되는지, 결과를 어디에 쓰는지입니다. 정확한 측정에는 기능 프로세스와 그 데이터 이동을 식별할 수 있을 만큼 상세한 요구사항이 필요합니다. 프로젝트 초기에는 이런 요구사항이 아직 없는 경우가 많습니다. 이런 경우를 위해 COSMIC은 초기 규모 추정을 위한 근사 기법을 공개해 권장하며, 요구사항을 구체화한 뒤에는 정확한 측정으로 이어갈 수 있습니다.
이 방법의 가이드라인은 처음에는 비기능적으로 보이던 많은 요구, 예를 들어 응답 시간이나 사용 편의성이 프로젝트 진행 중에 소프트웨어 기능으로 바뀌고, 그 때문에 규모가 늘어나는 것처럼 보인다는 점도 경고합니다. 이는 측정의 결함이 아니라 요구사항이 더 정확해졌다는 것을 보여 줍니다. 따라서 실무에서는 명세를 항목별로 작성하고, 변경 사항을 같은 방법으로 다시 측정하며, 변경의 규모를 따로 나타내는 것이 좋습니다. 그러면 범위의 증가가 조용히 일어나지 않고 수치로 드러납니다.
비교: 작업 시간, 스토리 포인트, IFPUG, COSMIC
| 기준 | 작업 시간 추정 | 스토리 포인트 | IFPUG 기능점수 | COSMIC 기능점수 |
|---|---|---|---|---|
| 표현하는 것 | 추정하는 사람이 예상하는 작업량 | 팀의 상대적 추정. 규모, 공수, 시간 중 무엇인지 항상 분명하지는 않음 | 기능 규모 | 기능 규모 |
| 표준 여부 | 아니요 | 아니요 | 예, ISO/IEC 20926:2009 | 예, ISO/IEC 19761:2011 |
| 좌우하는 요인 | 추정하는 사람의 경험, 신중함, 소속 팀 | 해당 팀. 팀마다 의미가 다름 | 요구사항 | 요구사항 |
| 외부에서 검증할 수 있는지 | 추정하는 사람의 설명으로만 | 팀 밖에서는 거의 불가능 | 예, 공개된 규칙에 따라 | 예, 공개되어 무료로 이용할 수 있는 규칙에 따라 |
| 측정 단위 | 시간 | 팀 고유의 점수 | IFPUG 기능점수 | CFP, 1 CFP = 1 데이터 이동 |
| 가장 적합한 용도 | 짧고 잘 알려진 작업의 계획 | 팀 자체의 스프린트 계획 | 규모 측정, 비교 | 규모 측정, 비교, 견적과 일정표의 기반 |
작업 시간 추정이 나쁜 도구는 아닙니다. 다른 것을 측정할 뿐입니다. 바로 예상되는 작업량으로, 이는 과제의 규모뿐 아니라 팀의 역량, 도구, 신중함에도 좌우됩니다. 스토리 포인트는 팀 안의 계획에 유용하지만, COSMIC 웹사이트에 공개된 가이드에 따르면 주관적이며 팀마다 의미가 다릅니다. IFPUG와 COSMIC은 둘 다 표준화된 기능 규모이지만 규칙이 다르므로, 두 방법의 수치는 서로 바꿔 쓸 수 없습니다.
측정된 규모가 왜 더 신뢰할 수 있는 기반입니까?
제목의 질문에 정확히 답하자면, COSMIC은 시간을 더 정확하게 추정하는 것이 아니라 과제의 크기를 측정하며, 그 덕분에 공수 추정을 더 신뢰할 수 있게 됩니다. 이유는 다음과 같습니다.
- 구현이 아니라 요구사항을 측정합니다. 기능 규모는 요구사항에서만 나오므로 기술, 프로세스, 그리고 누가 소프트웨어를 개발하는지와 무관합니다.
- 공개된 규칙에 따라 다시 측정할 수 있습니다. 규칙은 공개되어 있고 측정 결과는 문서화해야 하므로, 다른 측정자가 같은 명세로 검증할 수 있습니다.
- 규모와 생산성이 분리됩니다. 공수 추정은 규모와 경험적 생산성에서 나옵니다(공수 = 규모 / 생산성). 그래서 어느 요인이 왜 바뀌는지 알 수 있습니다.
- 측정이 요구사항을 개선합니다. COSMIC 가이드에 따르면 초기 측정은 모호하거나, 서로 모순되거나, 누락된 요구사항을 찾아내는 데 도움이 됩니다.
- 비교할 수 있습니다. 같은 명세에 대한 두 견적은 같은 규모를 받으므로, 가격이 같은 범위를 기준으로 합니다.
COSMIC 가이드는 CFP로 측정한 규모가 스토리 포인트로 표현한 추정보다 실제 공수와 더 밀접하게 함께 움직인 여러 연구를 인용합니다. 같은 가이드는 규모로부터 추정한 공수가 신뢰할 수 있으려면 개발 프로세스가 충분히 반복 가능하고 공수가 주로 규모에 의해 결정되어야 한다는 점도 경고합니다. 따라서 측정된 규모는 더 나은 출발점이지만, 좋은 추정을 하려면 생산성도 알아야 합니다.
COSMIC은 무엇을 측정하지 않습니까?
COSMIC 규모는 기능을 측정하며, 방법의 설명서도 이를 분명히 밝힙니다. 표현하지 않는 것은 다음과 같습니다.
- 복잡한 알고리즘. 표준에 따르면 이 방법은 복잡한 수학적 알고리즘이나 특수한 규칙 체계로 특징지어지는 소프트웨어(예: 전문가 시스템, 시뮬레이션, 자기 학습 소프트웨어, 일기 예보)를 측정하도록 설계되지 않았습니다.
- 연속 신호 처리. 음성 및 영상 처리, 그리고 예를 들어 컴퓨터 게임의 그러한 부분도 표준의 적용 범위 밖에 있습니다.
- 진정한 비기능 요구사항. 기술, 성능, 프로젝트상의 제약은 방법에 따라 기록해야 하지만 CFP로 측정하지는 않습니다.
- 창작 작업. COSMIC 가이드에 따르면 예술 작품 제작 같은 순수한 창작 작업은 이 방법의 대상이 아닙니다. 따라서 그래픽과 맞춤 시각 디자인 작업은 규모로 표현되지 않습니다.
- 기성 패키지 도입. 요구사항의 대부분이 기성 제품의 설정으로 해결된다면, 공수는 해당 패키지에 맞는 방식으로 추정하는 것이 좋습니다.
그래서 좋은 견적은 측정된 규모와 함께, 규모로 표현되지 않는 것을 따로 표시합니다. 연동, 비기능 요구사항, 맞춤형 화면과 그래픽, 다중 플랫폼, 데이터 이전, 복잡한 계산, 실시간 동작이 그렇습니다. 저희 견적에는 이 항목들이 이렇게 들어가며, 이에 관해서는 비용 산정 페이지에서 설명합니다.
저희는 실제 업무에서 이를 어떻게 사용합니까?
저희는 개발의 기능 규모를 COSMIC 기능점수로 측정합니다. 측정을 위해 인공지능을 활용한 자체 작업 흐름을 구축했으며, 결과는 검토 단계에서 사람이 확인합니다. 단계는 다음과 같습니다.
- 항목별 명세: 개발을 기능 그룹으로 나누고, 각각을 같은 템플릿으로 기술합니다. 목표, 행위자, 데이터, 기능, AI 기능, 그리고 범위에 포함되지 않는 것입니다(일하는 방식 참고).
- 여러 번의 독립된 계산: 여러 언어 모델이 각 기능 그룹을 여러 번 셉니다. 계산 결과의 편차가 불확실성을 보여 줍니다.
- 조정 단계: 모든 기능 프로세스가 여러 설명에 나오더라도 정확히 한 번만 계산되도록 합니다.
- 검토: 측정을 검토하고, 불확실한 부분을 명확히 하며, 필요하면 자동 병합 결과를 사람이 직접 바로잡습니다.
- 확정: 완성된 측정은 변경할 수 없는 버전으로 고정할 수 있으며, 이것이 계약의 기반이 됩니다.
기존 시스템을 추가 개발할 때는 기존 부분을 따로 기술하므로, 새로운 부분만 규모에 포함됩니다. 측정은 기능 규모로 표현되지 않는 것도 표시합니다.
규모가 어떻게 견적과 일정표가 됩니까?
견적 가격은 측정된 규모에서 나오며, 규모로 표현되지 않는 항목이 더해집니다. 규모를 기능 그룹별로도 파악하므로 일정표도 이를 바탕으로 짭니다. 단계의 순서, 시연 내용, 마감일이 그것입니다. 진행 중에 새로운 요구가 생기면 같은 방식으로 측정하므로, 범위가 얼마나 달라지는지, 그리고 그것이 가격과 일정에 어떤 의미인지 알 수 있습니다. 그래서 구체적인 가격과 마감일은 첫 대화가 아니라 측정을 마친 뒤에 제시합니다.
규모를 기준으로 두 견적 비교하기
여러 개발사에 견적을 요청하신다면, 규모는 견적들이 같은 과제를 대상으로 하는지 판단하는 데 도움이 됩니다. 다음과 같이 진행하는 것이 좋습니다.
- 같은 명세: 모든 견적 제출 업체가 같은 항목별 설명을 받습니다.
- 규모와 프로세스 목록: 어떤 규모와 어떤 기능 프로세스를 기준으로 가격을 제시했는지 요청하십시오.
- 차이의 원인: 두 견적이 다르다면 규모가 다른지, 규모로 표현되지 않는 항목이 다른지, 아니면 규모 단위당 가격이 다른지 확인해 보십시오.
- 별도 항목: 무엇이 별도 줄로 표시되어 있는지(연동, 데이터 이전, 운영), 그리고 무엇이 가격에 포함되어 있지 않은지 물어보십시오.
- 변경 관리: 진행 중의 변경을 어떻게 측정하고 가격을 매기는지 물어보십시오.
견적 제출 업체가 기능 규모를 측정하지 않더라도, 같은 항목별 프로세스 목록을 기준으로 가격을 제시했다면 그 견적도 비교할 수 있습니다. 개발사 선택의 다른 기준은 소프트웨어 개발 회사는 어떻게 선택해야 합니까? 글에서 다루며, 애초에 맞춤형 개발이 필요한지는 맞춤 소프트웨어와 기성 솔루션(SaaS) 중 어느 쪽이 맞습니까? 글이 판단에 도움이 됩니다.
자주 묻는 질문
COSMIC 기능점수란 무엇입니까?
COSMIC 기능점수(CFP)는 ISO/IEC 19761 표준에 따른 소프트웨어 기능 규모의 측정 단위입니다. 1 CFP는 하나의 데이터 이동, 즉 기능 프로세스에서 데이터 그룹 하나의 입력, 출력, 읽기 또는 쓰기입니다. 소프트웨어의 규모는 그 프로세스들이 가진 데이터 이동의 합입니다.
작업 시간 추정과 무엇이 다릅니까?
작업 시간 추정은 예상되는 작업량을 알려 주며, 추정하는 사람과 팀에 따라 달라집니다. COSMIC은 공개된 규칙으로 요구사항에서 과제의 규모를 측정하므로, 같은 명세로 다른 사람도 같은 결과에 도달할 수 있습니다. 그런 다음 시간은 규모와 경험적 생산성에서 도출할 수 있습니다.
COSMIC은 무엇을 측정하지 않습니까?
표준에 따르면 이 방법은 복잡한 수학적 알고리즘과 연속 신호(음성, 영상) 처리를 측정하도록 만들어지지 않았으며, 성능이나 기술상의 제약 같은 진정한 비기능 요구사항도 CFP로 표현하지 않습니다. 좋은 견적은 이런 것을 별도 항목으로 표시합니다.
누가 측정하며, 측정을 검증할 수 있습니까?
측정은 이 방법을 아는 측정자가 수행합니다. 저희의 경우 AI를 활용한 작업 흐름이 계산하고, 그 결과를 사람이 검토합니다. 규칙은 공개되어 있고 측정은 프로세스별로 문서화되므로, 이 방법을 아는 다른 전문가가 같은 명세로 검증할 수 있습니다.
규모가 어떻게 견적이 됩니까?
가격은 측정된 규모에서 나오며, 규모로 표현되지 않는 것, 즉 연동, 비기능 요구사항, 맞춤 그래픽, 다중 플랫폼, 데이터 이전이 더해집니다. 일정표는 기능 그룹별 규모를 바탕으로 짜며, 변경 사항도 같은 방식으로 측정합니다. 자세한 내용은 비용 산정 페이지에서 보실 수 있습니다.
저희는 어떻게 도와드립니까?
맞춤 소프트웨어를 계획하고 계시다면, 항목별 명세를 함께 작성하고, 그 규모를 COSMIC 기능점수로 측정한 뒤, 이를 바탕으로 견적과 일정을 작성합니다. 요청하시면 비밀유지계약(NDA)을 체결하며, 인도 후에는 운영과 유지보수도 맡습니다. 소스 코드와 이용 권리는 계약으로 정합니다. 첫 상담은 무료입니다. 연락처 페이지에 안내된 연락처로 메시지를 보내 주시기 바랍니다.
출처
- COSMIC: Measurement Manual v5.0, Part 1: Principles, Definitions and Rules (PDF)
- COSMIC: Measurement Manual v5.0, Part 2: Guidelines (PDF)
- COSMIC: A Guide to Software Size Measurement (PDF)
- COSMIC Measurement Manual: 다운로드
- ISO: ISO/IEC 19761:2011 (COSMIC: a functional size measurement method)
- ISO: ISO/IEC 14143-1:2007 (Functional size measurement, Part 1: Definition of concepts)
- ISO: ISO/IEC 20926:2009 (IFPUG functional size measurement method)