문제
SW 프로젝트의 규모 척도인 기능점수(Function Point)의 장단점을 설명하고, LOC(Line Of Code)와 COCOMO(Constructive Cost Mode)와의 차이를 설명하시오
답변
1. 기능점수(FP: Function Point)의 장단점
1.1 기능점수(FP)의 개념
- 사용자 관점에서 소프트웨어의 기능적 규모를 측정하는 방법
- 앨런 앨브레히트(Allan Albrecht)가 1979년 IBM에서 개발
- 데이터 기능(내부 논리 파일, 외부 인터페이스 파일)과 트랜잭션 기능(외부 입력, 외부 출력, 외부 조회)으로 구성
1.2 기능점수의 장점
- 프로그래밍 언어 독립성: 특정 프로그래밍 언어나 기술에 종속되지 않음
- 초기 측정 가능: 요구사항 분석 단계에서부터 규모 측정 가능
- 사용자 관점 반영: 사용자에게 제공되는 기능 중심으로 측정하여 비즈니스 가치 반영
- 일관성: 표준화된 측정 방법으로 프로젝트 간 비교 가능
- 국제 표준: ISO/IEC 20926으로 표준화되어 국제적으로 인정됨
1.3 기능점수의 단점
- 측정 복잡성: 측정 절차가 복잡하고 전문 지식 필요
- 주관적 요소: 측정자의 해석에 따라 결과가 달라질 수 있음
- 기술적 복잡도 제한: 내부 알고리즘이나 기술적 복잡성을 완벽하게 반영하기 어려움
- 시간 소모적: 정확한 측정에 많은 시간과 노력 소요
- 특수 도메인 한계: 실시간 시스템, 임베디드 시스템 등 특수 영역에 적용이 제한적
2. LOC(Line Of Code) 측정 방법
2.1 LOC의 개념
- 소스 코드의 물리적 라인 수를 기준으로 소프트웨어 규모를 측정하는 방법
- 실행 명령문, 데이터 정의, 주석 등을 포함할 수 있음
- SLOC(Source Lines of Code) 또는 KLOC(Kilo Lines of Code)으로 표현
2.2 LOC의 특징
- 단순성: 이해하고 측정하기 쉬움
- 객관성: 물리적으로 명확하게 측정 가능
- 구현 중심: 실제 작성된 코드의 양을 직접 측정
- 역사적 데이터: 오랜 기간 축적된 데이터로 비교 분석 용이
3. COCOMO(Constructive Cost Model)
3.1 COCOMO의 개념
- 소프트웨어 개발 비용, 노력, 일정을 예측하는 알고리즘 모델
- 배리 베임(Barry Boehm)이 1981년 개발, COCOMO II로 발전
- 주로 LOC 기반으로 비용을 추정하며, 후에 기능점수도 지원
3.2 COCOMO의 주요 구성
- 규모 요인: 소프트웨어 크기(KLOC 또는 FP 기반)
- 비용 인자: 제품, 하드웨어, 인력, 프로젝트 특성을 반영한 15개 인자
- 개발 모드: Organic(소규모), Semi-detached(중간규모), Embedded(대규모) 모드
3.3 COCOMO II의 주요 모델
- 애플리케이션 구성 모델: 프로토타입 단계
- 초기 설계 모델: 아키텍처 단계
- 사후 아키텍처 모델: 상세 개발 단계
4. 세 가지 측정 방법의 비교
특성 | 기능점수(FP) | LOC | COCOMO |
---|
측정 기준 | 기능적 요구사항 | 코드 라인 수 | 규모, 비용 인자, 규모 인자 |
측정 시점 | 요구분석 단계부터 가능 | 코딩 후 측정 | 계획 단계부터 적용 가능 |
측정 관점 | 사용자 관점 | 개발자 관점 | 프로젝트 관리 관점 |
언어 독립성 | 언어 독립적 | 언어 의존적 | 직접 의존하지 않음(조정 가능) |
측정 객관성 | 다소 주관적 | 객관적 | 다소 주관적(조정계수) |
측정 난이도 | 상대적으로 복잡 | 매우 단순 | 중간 수준(파라미터 설정 필요) |
주요 목적 | 기능적 규모 측정 | 물리적 규모 측정 | 비용/노력/일정 예측 |
산출물 | 기능점수(FP) | 코드 라인 수 | 인월(Person-Month), 일정 |
4.1 기능점수 vs LOC
- 추상화 수준: FP는 기능 중심의 높은 추상화, LOC는 코드 중심의 낮은 추상화
- 시점: FP는 개발 전 측정 가능, LOC는 코딩 후에만 정확한 측정 가능
- 언어 독립성: FP는 언어에 독립적, LOC는 언어의 특성에 따라 크게 달라짐
- 생산성 측정: FP는 기능 단위의 생산성 측정 가능, LOC는 코드량 기준 생산성
4.2 기능점수 vs COCOMO
- 목적: FP는 규모 측정이 주목적, COCOMO는 비용/일정 예측이 주목적
- 범위: FP는 소프트웨어 기능만 측정, COCOMO는 프로젝트 전체 특성 고려
- 적용: FP는 측정 자체가 목적, COCOMO는 FP나 LOC를 입력으로 사용하여 비용 산출
- 조정 인자: FP는 기술적 복잡도만 조정, COCOMO는 다양한 비용 인자 적용
4.3 LOC vs COCOMO
- 관계: COCOMO는 전통적으로 LOC를 기본 입력으로 사용
- 확장성: LOC는 단순 측정값, COCOMO는 LOC에 다양한 인자를 적용해 확장
- 적용 범위: LOC는 코드 크기만 측정, COCOMO는 프로젝트 환경 요소 포괄
- 정교함: LOC는 단순한 측정, COCOMO는 복잡한 비용 모델 제공
5. 소프트웨어 규모 측정 트렌드와 발전 방향
- 하이브리드 접근법: FP와 LOC를 상호보완적으로 활용
- 애자일 환경 적응: 스토리 포인트와 기능점수의 연계
- 자동화 도구: 기능점수 측정 자동화 도구 발전
- 클라우드/마이크로서비스: 현대적 아키텍처에 맞는 측정 방법 개발
어린이 버전 요약
기능점수(FP)는 컴퓨터 프로그램이 할 수 있는 기능의 수와 복잡도를 측정하는 방법이에요. 마치 집의 크기를 방의 개수로 측정하는 것과 비슷해요.
코드 라인 수(LOC)는 프로그램을 만드는 데 작성한 줄 수를 세는 방법이에요. 책의 페이지 수를 세는 것처럼 단순해요.
코코모(COCOMO)는 프로그램을 만드는 데 얼마나 많은 사람과 시간이 필요한지 예측하는 방법이에요. 집을 짓는 데 필요한 인부 수와 시간을 계산하는 것과 비슷하답니다!