Computers/SW Engineering

day 1. 프로젝트 관리 - 비용 추산

emzei 2016. 3. 16. 14:13
  • 프로젝트 관리 (Project Management)
    • 개요
      • 주어진 기간 내에 최소의 비용으로 사용자를 만족시키는 시스템을 개발하기 위한 활동
      • 소프트웨어 개발 계획을 세우고 분석, 설계, 구현 등의 작업을 통제하는 것
      • 소프트웨어 생명 주기의 전 과정에서 걸쳐 진행
      • 수행할 작업의 범위, 필요 자원, 수행 업무, 이정표, 비용, 추진 일정들을 알아야 함

  • 프로젝트 관리 대상
    • 계획 관리
    • 품질 관리
    • 위험 관리
    • 효과적인 프로젝트 관리를 위한 3대 요소 (3P)
      : People(인적 자원) , Problem(문제 분석 및 인식) , Process(개발에 필요한 작업 계획)

  • 프로젝트 관리 구성 단계
    • "프로젝트 시작 - 프로젝트 계획 수립 - 프로젝트 가동 - 프로젝트 통제 - 프로젝트 종료"
    • 프로젝트 계획 수립
      • 특징
        • 프로젝트 수행 전 개발 영역 결정, 필요 자원, 비용, 일정 등을 예측하는 작업
        • 계획 수립을 통해 개발 과정에서 발생할 수 있는 여러 위험 최소화 가능
        • 계획 수립 산출물 : 시스템 정의서, 프로젝트 계획서
        • 계획에 따라 소프트웨어의 품질이 결정되므로, 계획단계에서 관리자가 중요함
      • 소프트웨어 개발 영역(범위) 결정
        • 개발 영역 결정 요소 : 데이터, 소프트웨어에 대한 기능, 성능, 제약 조건, 인터페이스, 신뢰도 등
      • 자원 추산
        • 인적 자원
        • 재사용 소프트웨어 자원
        • 환경 자원
      • 소프트웨어 프로젝트 추산
        • 프로젝트 수행에 필요한 비용 예측
        • 신뢰할만한 비용을 예측하기 위한 방법
          • 관리의 후반까지 프로젝트 예측을 가능한 한 연기한다 (현실성 부족)
          • 이미 수행된 유사 프로젝트 참고
          • 상대적으로 잘게 분리하여 예측하는 분해 기법 사용
          • 하나 이상의 경험적 예측(실험) 모델 활용
          • 자동화 도구 도입
      • 계획 수립 시 고려사항
        • 프로젝트 복잡도
        • 프로젝트 규모
        • 구조적 불확실성 정도
        • 과거 정보의 가용성
        • 위험성

  • 소프트웨어 프로젝트 추산
    • 프로젝트 수행에 필요한 소프트웨어의 직간접적 비용 예측
    • 가장 어렵고 오차 발생이 심함 (정확한 예측 어려움)
    • 소프트웨어 측정 요소
      • 직접 측정 요소 : 노력, LOC, 투입 인원, 문서수 등
      • 간접 측정 요소 : 생산성, 복잡성, 효율성,  품질, 신뢰성, 유지 보수성 등

    • 소프트웨어 비용 결정 요소
      • 프로젝트 요소 : 어떤 소프트웨어를 개발할 것인가에 따라 비용이 달라짐
        • 제품의 복잡도 : 소프트웨어의 종류에 따라
        • 시스템의 크기 : 소프트웨어의 규모에 따라
        • 요구되는 신뢰도
      • 자원 요소
        • 인적 자원 :  관리자, 개발자 능력 및 자질
        • 하드웨어 자원
        • 소프트웨어 자원
      • 생산성 요소
        • 개발자의 능력
        • 개발 기간


    • 소프트웨어 비용 산정 기법

      • 하향식 비용 산정 기법 : 과거의 유사한 경험을 바탕으로 전문 지식이 많은 개발자들이 참여한 회의를 통해 비용을 산정하는 비과학적인 방법, 전체 비용 산정 후, 각 작업별로 비용 세분화
        • 전문가 감정 기법
          • 두 명 이상의 전문가에게 비용 산정 의뢰
          • 편리, 신속. 개인적/주관적일 수 있음
        • 델파이 기법
          • 전문가 감정 기법을 보완하기 위하여, 많은 전문가의 의견을 종합하여 산정하는 기법

      • 상향식 비용 산정 기법
        • 세부적인 작업 단위별로 비용 산정 후 집계하여 전체 비용 산정 하는 방법
        • LOC(Line of code, 원시 코드 라인 수) 기법
          • 코드 라인 수의 비관치, 낙관치, 기대치를 측정하여 예측치를 구하고, 이를 이용하여 비용 산정
          • 비관치 : 가장 많이 측정된 코드 라인 수
          • 낙관치 : 가장 적게 측정된 코드 라인 수
          • 기대치 : 측정된 모든 코드 라인 수의 평균
          • 산정 공식
            • 예측치 =  { (낙관) + 4 * (기대) + (비관) } / 6
            • 노력(인월, E) = 개발 기간 * 투입 인원 = LOC / 1인당 월평균 생산 코드 라인 수
            • 개발 비용 = 노력(인월) * 단위 비용 (1인당 월평균 인건비)
            • 개발 기간 = 노력(인월) / 투입 인원
            • 생산성 = LOC / 노력(인월)
        • 개발 단계별 인월수(Effort Per Task) 기법
          • LOC 기법을 보완하기 위하여, 각 기능 구현 시키는데 필요한 노력(인월)을 생명 주기이 각 단계별로 산정
          • LOC 기법 보다 정확
        • 수학적 산정 기법
          • (= 경험적 추정 모형, 실험적 추정 모형)
          • 목표 : 개발 비용 산정의 자동화 
          • COCOMO 모형
            • Constructive Cost Model, Boehm 제안
            • 원시 프로그램의 규모인 LOC에 의한 비용 산정 기법
            • 특징
              • 규모(LOC) 예측 후, 소프트웨어 종류에 따라 다르게 책정되는 비용 산정 공식에 대입하여 비용 산정
              • 소프트웨어 개발비 견적에 널리 통용
              • 같은 규모라도 성격에 따라 비용이 다르게 산정
              • 비용 산정 결과는 MAN-MONTH로 나타남
            • 소프트웨어 개발 유형
              • 소프트웨어 복잡도 혹은 원시 프로그램 규모에 따라 분류
              • 조직형 (Organic mode)
                • 기관 내부에서 개발된 중소규모의 소프트웨어
                • 일괄 자료 처리, 과학 기술 계산용, 비즈니스 자료 처리용
                • 50KLOC(=5KDSI) 이하의 소프트웨어
                • 사무 철용, 업무용, 과학용 응용 소프트웨어 개발에 적합
              • 반분리형 (Semi-detached mode)
                • 트랜잭션 처리 시스템, 운영체제, 데이터베이스 관리 시스템 등
                • 300KLOC 이하의 소프트웨어
                • 컴파일러, 인터프리터와 같은 유틸리티 개발에 적합
              • 내장형 (Embedded mode)
                • 최대형 규모의 트랜잭션 처리 시스템, 운영체제 
                • 300KLOC 이상의 소프트웨어
                • 신호기 제어 시스템, 미사일 유도 시스템, 실시간 처리 시스템 등의 시스템 프로그램 개발에 적합
            • COCOMO 모형의 종류
              • 기본형 cocomo
                • 소프트웨어 크기와 개발유형 만을 이용하여 비용 산정
              • 중간형 cocomo
                • 기본형 공식 + 4가지 특성의 15가지 요인 고려
                • 제품 특성
                • 컴퓨터 특성
                • 개발 요원 특성
                • 프로젝트 특성
              • 발전형 cocomo
                • 중간형 cocomo 보완
                • 개발 공정별로 자세하고 정확하게 노력 산출

          • Putnam 모형
            • 소프트웨어 생명 주기 전 과정동안 사용될 노력의 분포를 가정해주는 모형
            • putnam이 제안
            • 시간에 따른 함수로 표현되는 rayleigh-norden 곡선의 노력 분포도를 기초
            • 대형 프로젝트에 적합
            • 개발 기간이 늘어날수록 프로젝트 적용 인원이 노력이 감소
            • **cf. putnam 모형을 기초로 한 자동화 도구 : SLIM

          • 기능 점수(Functional Point) 모형
            • albrecht이 제안
            • 기능을 증대시키는 요인별로 가중치 부여
            • 요인별 가중치 합산하여 총기능 점수 산출
            • 총 기능 점수와 영향도를 이용하여 기능점수(FP) 구하여, 이를 이용하여 비용 산출
            • 최근에 유용성과 간편성으로 비용 산정 기법 중 좋은 평가 받음
            • **cf. FP 모형을 기초로하여 개발된 자동화 도구 : ESTIMACS