맨위로가기

COCOMO

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

1. 개요

COCOMO(Constructive Cost Model)는 소프트웨어 개발 비용, 노력, 일정을 추정하기 위한 알고리즘 모델이다. 1970년대 후반 배리 W. 보엠에 의해 개발되었으며, Basic, Intermediate, Detailed의 세 가지 모델로 구성된다. COCOMO는 소프트웨어 프로젝트의 규모(소스 코드 라인 수)를 기반으로 개발 노력과 기간을 계산하며, Intermediate COCOMO는 추가적인 비용 요인을 고려하여 정확도를 높였다. COCOMO II는 현대적인 소프트웨어 개발 환경을 반영하여 개발되었으며 코드 재사용 및 기성 소프트웨어 구성 요소 사용과 같은 트렌드를 반영한다.

더 읽어볼만한 페이지

  • 소프트웨어 개발 - 유스 케이스
    유스 케이스는 시스템과 액터 간 상호작용을 통해 시스템 목표 달성에 기여하는 동작들을 나타내는 요구 사항 캡처, 모델링, 명세 기법으로, 객체 지향 소프트웨어 공학에서 기능 요구 사항을 캡처하는 데 중요한 역할을 하며 다양한 분야에서 활용된다.
  • 소프트웨어 개발 - 사용자 경험 디자인
    사용자 경험 디자인은 인간 공학에 기반하여 제품 또는 서비스와 사용자 간의 상호작용을 설계하는 분야이며, 사용자 조사, 인터랙션 디자인, 사용성 테스트 등을 통해 효율적이고 만족스러운 경험을 제공하는 것을 목표로 한다.
COCOMO
개요
COCOMO II 모델의 매개변수 및 하위 모델을 보여주는 다이어그램
COCOMO II 모델의 매개변수 및 하위 모델을 보여주는 다이어그램
유형소프트웨어 비용 예측 모델
개발자Barry Boehm
개발 시기1970년대 초반
설명
목적소프트웨어 프로젝트의 비용, 노력 및 기간을 예측하는 것
적용 분야소프트웨어 개발 프로젝트의 계획 및 관리
기반경험적 데이터 및 소프트웨어 개발의 역사적 데이터
특징다양한 규모와 복잡성의 프로젝트에 적용 가능
프로젝트 특성을 반영하는 다양한 비용 동인(cost driver) 고려
여러 버전 존재 (COCOMO 81, COCOMO II 등)
COCOMO 81
모델 유형정적 단일 변수 모델
노력 방정식노력 = a * (KLOC) ^ b
KLOC작성된 코드 라인 수 (천 단위)
a, b프로젝트 유형에 따라 결정되는 상수
프로젝트 유형조직(Organic): 작고 간단한 프로젝트
분리(Detached): 중간 크기의 프로젝트
임베디드(Embedded): 크고 복잡한 프로젝트
COCOMO II
모델 유형정적 다변수 모델
특징현대 소프트웨어 개발 환경 반영
소프트웨어 재사용, 아키텍처, 위험 관리 등의 요소 고려
하위 모델애플리케이션 구성 단계
초기 설계 단계
후기 아키텍처 단계
비용 동인제품 속성
하드웨어 속성
인적 속성
프로젝트 속성
같이 보기
같이 볼 항목소프트웨어 개발
소프트웨어 공학
비용 예측

2. 역사

생산적 비용 모델은 1970년대 후반 배리 W. 보엠이 개발하였고[1], 1981년 보엠의 저서 ''소프트웨어 공학 경제학''에[2] 소프트웨어 프로젝트의 노력, 비용 및 일정을 추정하는 모델로 발표되었다. 이 모델은 보엠이 소프트웨어 연구 기술 이사로 재직했던 TRW 항공우주에서 진행된 63개 프로젝트 연구를 기반으로 했다. 이 연구는 2,000에서 100,000 소스 코드 라인에 이르는 규모와 어셈블리 언어에서 PL/I에 이르는 프로그래밍 언어를 사용하는 다양한 프로젝트를 조사했다. 이러한 프로젝트들은 1981년에 널리 사용되었던 소프트웨어 개발 프로세스인 폭포수 모델을 기반으로 했다.

이 모델에 대한 언급은 일반적으로 ''COCOMO 81''이라고 부른다. 1995년에는 ''COCOMO II''가 개발되었고, 2000년에 ''COCOMO II를 이용한 소프트웨어 비용 추정''이라는 책으로 최종 발표되었다.[3] COCOMO II는 COCOMO 81의 후속 모델이며, 현대적인 소프트웨어 개발 프로젝트를 추정하는 데 더 적합하다고 주장된다. 이는 보다 최근의 소프트웨어 개발 프로세스를 지원하고, 161개의 프로젝트로 구성된 더 큰 데이터베이스를 사용하여 조정되었다. 새로운 모델의 필요성은 소프트웨어 개발 기술이 메인프레임과 야간 일괄 처리에서 데스크톱 개발, 코드 재사용, 그리고 기성 소프트웨어 구성 요소의 사용으로 이동함에 따라 생겨났다.

3. 모델 종류

COCOMO 모델은 크게 Basic COCOMO, Intermediate COCOMO, Detailed COCOMO 세 가지로 나뉜다.


  • Basic COCOMO는 소프트웨어 개발 비용을 빠르고 대략적으로 추정하는 데 적합하다.
  • Intermediate COCOMO는 Basic COCOMO보다 더 다양한 요소를 고려하여 정확도를 높인다.
  • Detailed COCOMO는 Intermediate COCOMO를 더 세분화하여 소프트웨어 개발 각 단계별로 비용 요인을 고려한다.


COCOMO 모델은 개발 규모(LOC)와 개발 공수 및 기간 사이에 비선형 관계가 있다고 가정한다. 즉, 개발 규모가 커질수록 더 많은 노력과 비용이 필요하다.

COCOMO 모델에서 평균 개발 공수는 예상되는 소스 코드 행 수(LOC)에 소프트웨어 규모를 나타내는 계수를 곱하여 계산한다.

:y = axb

  • '''y''': 평균적인 개발 공수
  • '''x''': 개발하는 소프트웨어의 예상 공수
  • '''a''': 소프트웨어 규모의 크기를 나타내는 계수
  • '''b''': 소프트웨어 규모의 크기를 나타내는 계수


소프트웨어 특성, 하드웨어 속성, 프로그래머의 개발 능력 등 15가지 특성을 각각 6단계의 보정 계수로 나타내고, 평균적인 개발 공수에 곱하여 개발에 필요한 공수를 산출한다.

:z = y∏15i=1 ci

  • '''z''': 개발 공수
  • '''y''': 평균적인 개발 공수
  • '''c''': 특성별 수정 계수

3. 1. Basic COCOMO

Basic COCOMO는 소프트웨어 개발 노력과 비용을 빠르고 대략적으로 추정하는 데 적합하다. 프로그램 규모(KLOC, 천 단위 소스 코드 라인 수)를 기반으로 개발 노력(man-months)을 계산한다.

Basic COCOMO에서는 다음 세 가지 소프트웨어 프로젝트 유형을 정의한다.

  • '''오가닉(Organic) 프로젝트''': 비교적 소규모 팀이 좋은 작업 경험을 바탕으로 엄격하지 않은 요구사항을 충족하는 프로젝트.
  • '''세미-디태치드(Semi-detached) 프로젝트''': 중간 규모의 팀이 다양한 수준의 경험을 바탕으로 엄격하거나 느슨한 요구사항을 충족하는 프로젝트.
  • '''임베디드(Embedded) 프로젝트''': 엄격한 제약 조건 내에서 개발되는 프로젝트 (하드웨어, 소프트웨어, 운영 방식 등).


Basic COCOMO 공식은 다음과 같다.

  • '''투입 노력 (E)''' = ab(KLOC)bb [인-월]
  • '''개발 기간 (D)''' = cb(투입 노력)db [월]
  • '''필요 인원 (P)''' = 투입 노력 / 개발 기간 [명]


여기서 KLOC는 프로젝트 소스 코드 라인 수를 천 단위로 나타낸 것이다. ab, bb, cb, db 값은 아래 표와 같이 프로젝트 유형에 따라 달라진다.

소프트웨어 프로젝트abbbcbdb
오가닉(Organic)2.41.052.50.38
세미-디태치드(Semi-detached)3.01.122.50.35
임베디드(Embedded)3.61.202.50.32



Basic COCOMO는 간편하게 추정치를 얻을 수 있다는 장점이 있지만, 하드웨어 제약, 팀원의 능력, 최신 기술 사용 등 다양한 요소를 고려하지 않아 정확도가 떨어진다는 단점이 있다.[1][2]

3. 2. Intermediate COCOMO

Intermediate COCOMO는 Basic COCOMO의 한계를 보완하여 제품, 하드웨어, 인력, 프로젝트의 4가지 속성에 대한 15가지 비용 요인(Cost Drivers)을 고려한다. 각 비용 요인은 "매우 낮음"에서 "매우 높음"까지 6단계로 평가되며, 각 평가에 해당하는 노력 승수(Effort Multiplier)를 곱하여 노력 조정 계수(EAF)를 계산한다. 일반적으로 EAF 값은 0.9에서 1.4 사이이다.[1]

15가지 비용 요인과 그에 따른 노력 승수는 다음 표와 같다.

비용 요인평가
매우 낮음낮음보통높음매우 높음매우 높음
제품 속성
요구되는 소프트웨어 신뢰성0.750.881.001.151.40align="center"|
애플리케이션 데이터베이스 크기align="center"|0.941.001.081.16align="center"|
제품의 복잡성0.700.851.001.151.301.65
하드웨어 속성
런타임 성능 제약align="center"|align="center"|1.001.111.301.66
메모리 제약align="center"|align="center"|1.001.061.211.56
가상 머신 환경의 변동성align="center"|0.871.001.151.30align="center"|
요구되는 턴어라운드 시간align="center"|0.871.001.071.15align="center"|
인력 속성
분석가 능력1.461.191.000.860.71align="center"|
애플리케이션 경험1.291.131.000.910.82align="center"|
소프트웨어 엔지니어 능력1.421.171.000.860.70align="center"|
가상 머신 경험1.211.101.000.90align="center"|align="center"|
프로그래밍 언어 경험1.141.071.000.95align="center"|align="center"|
프로젝트 속성
소프트웨어 공학 방법 적용1.241.101.000.910.82align="center"|
소프트웨어 도구 사용1.241.101.000.910.83align="center"|
요구되는 개발 일정1.231.081.001.041.10align="center"|



Intermediate COCOMO 공식은 다음과 같다.

:

여기서 ''E''는 인월 단위로 적용된 노력, KLoC는 프로젝트에 대해 추정된 천 줄의 코드 수, EAF는 위에서 계산된 계수이다.

계수 ''ai''와 지수 ''bi''는 다음 표에 나와 있다.

소프트웨어 프로젝트aibi
유기형3.21.05
반 분리형3.01.12
임베디드형2.81.20



개발 시간 ''D''와 가장 효과적인 인원 수 ''P'' 계산은 Basic COCOMO와 동일한 방식을 사용한다.

:

:

3. 3. Detailed COCOMO

상세 COCOMO는 Intermediate COCOMO를 더욱 확장한 것이다. 소프트웨어 개발 프로세스의 각 단계(요구사항 분석, 설계, 구현, 테스트 등)별로 비용 요인의 영향을 고려한다. 프로젝트의 특정 단계에 따라 다른 EAF(노력 조정 계수) 값을 적용하여 더욱 정확한 예측을 제공한다.[1][2][3]

4. 비판 및 한계

Basic COCOMO는 빠른 코드 예측에 좋다. 하지만 하드웨어의 한계, 팀원들의 능력과 경험, 최신 개발 도구 및 기술의 사용 등의 변수를 고려하지 못한다.

5. 활용 및 응용

COCOMO 모델은 소프트웨어 개발 프로젝트 초기 단계에서 비용, 노력, 일정을 예측하는 데 유용하게 활용될 수 있다. 프로젝트 관리자는 COCOMO 모델을 사용하여 프로젝트 예산을 수립하고, 자원 할당 계획을 세울 수 있다. 다양한 시나리오를 가정하여 민감도 분석(sensitivity analysis)을 수행하고, 프로젝트 리스크를 관리하는 데에도 활용할 수 있다.

6. COCOMO II

COCOMO 81 모델의 후속 모델로, 1990년대 이후의 소프트웨어 개발 환경 변화를 반영하여 개발되었다.[3] COCOMO II는 현대적인 소프트웨어 개발 프로세스를 지원하고, 161개 프로젝트의 자료를 기반으로 조정되었다. 새로운 모델의 필요성은 소프트웨어 개발 기술이 메인프레임과 야간 일괄 처리에서 데스크톱 개발, 코드 재사용, 그리고 기성 소프트웨어 구성 요소의 사용으로 이동함에 따라 생겨났다.

COCOMO II는 Post-architecture, Early Design, Reuse의 세 가지 하위 모델을 제공한다.

참조

[1] 웹사이트 Software Estimating Technology: A Survey http://ece.arizona.e[...] 2016-10-09
[2] 서적 Software Engineering Economics https://archive.org/[...] Prentice-Hall 1981
[3] 서적 Software Cost Estimation with COCOMO II Prentice-Hall 2000



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

문의하기 : help@durumis.com