4. 프로젝트 관리 및 계획 -1

소프트웨어 프로젝트 관리란?

어렵게 생각할 것 없이 그냥 잘 관리된 절차를 따라 프로젝트를 진행하는 것을 의미한다. 크게 4가지 측면에서 볼 수 있다.

  • 기간 내에 소프트웨어를 만들어 납품
  • 정해진 예산 범위에서의 개발
  • 기대에 맞춘 품질
  • 잘 돌아가는 팀의 유지

이를 위해서는 프로젝트를 체계적으로 계획한 개발 계획서(프로젝트 계획서)를 작성할 필요가 있다.

프로젝트 계획에 들어가야 하는 요소들

소프트웨어 공학의 모든 것(최은만)에 나온 프로젝트 계획서 목차를 참고해서 봐보자.

  1. 개요
    1. 프로젝트 명
    2. 프로젝트 기간
    3. 프로젝트 목적
    4. 프로젝트 기대 효과
  2. 프로젝트 범위
    1. 작업명세서
  3. 시스템 구축 환경
    1. 하드웨어 구성도
    2. 소프트웨어 구성도
  4. 프로젝트 추진 체계
    1. 프로젝트 수행 조직도
    2. 조직별 역할
    3. 인력 투입 계획
  5. 관리 프로세스 계획
    1. 작업 계획
    2. 통제 계획
    3. 산출물 검수 계획
  6. 프로젝트 관리
    1. 프로젝트 보고 계획
    2. 위험관리 방안
    3. 이슈 및 변경 관리
    4. 테스트 방안

프로젝트 계획은 프로젝트의 시작부터 끝까지의 모든 내용을 담고 있기에 양이 방대하다. 그 중에서도 중요한 두 가지는 알아두자.

  • 제안 요청서(RFP : Request for Proposal)
  • 작업 명세서(SOW: Statement of Work)

프로젝트 계획의 각 부분 살펴보기

비용 추정

개발에 소요되는 시간과 비용을 추정하는 부분이다. 사실 계획 단계에서 정확한 비용을 추정하기는 매우 어렵다. 예상치 못한 변수가 등장할 수도 있고, 프로젝트가 지연될 수도 있기 때문이다. 그렇기에 계획 단계에서는 예상 비용 범위를 넓게 잡고, 점점 좁혀가는 방법을 사용한다.

Untitled

비용 추정 방식은 크게 2가지로 나뉜다.

  • Experience-based techniques

    과거에 진행했던 프로젝트 경험을 바탕으로 비용을 산출.

  • Algorithmic cost modeling

    정해진 공식에 몇 가지 요소를 대입하여 비용을 계산(ex: COCOMO). 사용되는 요소로는 프로젝트의 규모나 작업 기간을 사용한다.

    프로젝트 규모 - LOC(Lines of Code), FP(Function Point)로 계산

COCOMO

Constructive Cost Model의 약자이다. 시스템에 소요되는 비용을 산정하기 위하여, 소프트웨어의 유형을 구분하고 Man/Month와 개발 기간을 계산한다. 개발자는 비용을 여유롭게 잡으려하고 구매자는 낮게 잡으려고 할 때 생기는 이해 관계에서 조금은 자유롭다. 3가지 유형과 3가지 모드에 대해 알아보자.

손으로 계산하지 말고 해당 사이트에서 편하게 계산하자.

유형 → 비용산정 단계 및 변수의 정도에 따라서

  • 기본형(Basic)

    → 개발 노력과 비용을 LOC 형태로 추정 후 비용 산정

    Untitled

    *KDSI = Kilo LOC, 전체 라인 수를 1,000 단위로 묶은 단위

    *A = 소프트웨어의 타입. 아래의 모드에 따라 달라진다.

    *(KDSI)^b = 프로젝트 규모에 복잡도를 제곱한 것. 복잡도 또한 모드에 따라 달라진다.

  • 중간형(Intermediate)

    → Basic에서 확장. 프로젝트 형태, 개발 환경, 개발 인력 요소에 따라 15가지 특성치를 적용한다.

    Untitled

    *M = 개발 절차에 따른 속성이나 역량 등의 외부 요소들을 의미한다.

  • 발전형(Detailed)

    → 대형 시스템에서 각 모듈별, 서브 시스템별로 비용을 빌도 산정하여 합산한다. 중간형을 보완하기 위해 만들어졌다.


모드 → 프로젝트 규모 및 난이도에 따라서

  • 조직형 모드(Organic)

    → 5만 소스라인 이하의 소규모 개발팀. 작은 응용 시스템 개발에 적합하다.

  • 반 결합 모드(Semidetached)

    → 5~30만 정도의 중간 규모 개발팀. 운영체제나 DB개발에 적합하다.

  • 내장 모드(Embedded)

    → 30만 소스라인 이상의 대형 개발팀. 신호기 제어기 시스템 등에 적합하다.

기존 COCOMO의 단점

기존의 COCOMO는 몇 가지의 단점을 포함하고 있다.

  • 프로젝트의 사이즈는 설계 단계에서 측정하기 어렵다
  • A,B,M과 같은 요소들을 정하는 기준이 주관적이다.
  • 프로그래밍 언어에 따라서 LOC가 달라진다.
  • 팀 퍼포먼스에 따라서 비용이 달라진다.

이러한 문제를 해결하고자 COCOMO2가 만들어졌다.

COCOMO 2

COCOMO2는 최신 소프트웨어 개발 방식에 발 맞추어 여러 부분에서 새로워졌다. 특히 소프트웨어 개발 단계에 따라서 3가지 서브 모델을 사용하는 것이 특징이다.

Untitled

참고자료