[SW 공학] 4주차- 계획 단계 (개발 비용 산정 방법)

안지수·2023년 4월 18일
0
post-custom-banner

-> 이번에는 프로세스의 생명주기 중에서 '계획' 단계를 자세히 알아본다.
-> sw개발의 성패는 비용, 기간, 인력과 같은 자원을 토대로 초기에 계획을 얼마나 잘 세우느냐가 중요
계획 단계에서 해야할 것들을 알아보자.

1. 문제 정의

: 작업의 범위 설정 + 어떤 기능을 필요로 하는 지
-> 배경지식, 경험 중요

2. 타당성 분석

- 경제적 타당성

: 경제적으로 효용 가치가 있는지
-> 투자 효율성과 시장성 검증

- 기술적 타당성

: 얼마나 개발 가능한 지 (회사가 요구하는 기술 가지고 있는지)

- 법적 타당성

: 개발 기능이 법적으로 문제가 없는 지
-> 오픈 소스 사용 시, 어디까지 무료로 사용할 수 있는 지 확인해야 함

3. 개발 비용 산정

: SW는 무형이라 개발 비용 산정 어려움 (근거를 명확하기 제시하기 어려움)

개발 비용에 영향을 주는 6가지 요소

  • 프로그래머 자질
  • 소프트웨어 복잡도
    -> 브룩스의 법칙: 지체되는 개발 프로젝트에 인력을 추가하는 것은 개발을 늦출 뿐이다.
  • 스프트웨어 크기
  • 가용 시간
  • 요구되는 신뢰도 수준
  • 기술 수준: 고급 언어 사용 시 생산성 높아짐

<비용 산정 기법>

😀 하향식 산정 기법

  1. 전문가 판단 기법: 경험이 많은 전문가의 경험에 의존- 신뢰성이 있고 편하지만, 부정확할 수 있음
  2. 델파이 기법: 전문가 판단 기법을 보완/ 여러 전문가가 모여 각자의 의견대로 비용 산정/ 조정자를 둠

😀 상향식 산정 기법

  • 원시 코드 라인 수 LOC 기법: 코드 수에 따라 비용 산정
    (낙관치-코드 가장 적게 생각할 때의 예상 라인 수: 가중치 1 부여
    비관치- 코드 라인 가장 많게 생각할 때 예상 라인 수: 가중치 1부여)
    중간치- 라인 수 보통이라 생각할 때의 예상 라인 수: 가중치 4 부여)

-> "추정 loc: (낙관치+(4*중간치)+비관치)/6"

-> 노력(M/M)= 참여인원 개발기간
-> 개발 비용= 노력
단위비용
-> 개발 기간= 노력 / 참여인원

😀 수학적 산정 기법

-> 체계적으로 비용 산정
-> 얼마나 복잡하느냐에 따라 보정계수
-> 프로젝트 유형에 따라 개발기간 산정

  1. cocomo 기법
    : 라인 수에 따른 개발의 크기 측정하여(loc)-단순,중간,내장 sw의 종류에 따라 각 비용 산정 공식에 대입
  • 개발 노력(pm) = a*(KDSI)^b (소프트웨어 개발에 필요한 인력)

    -> SW 종류에 따른 가중치 값(a, b)
    sw종류:
  1. 단순형 프로젝트: 복잡도와 난이도가 비교적 높지 않은 업무용 소프트웨어 (50KDSI 이하)
  2. 중간형 프로젝트: EX 데이터베이스 관리 프로그램 (300KDSI 이하)
  3. 내장형(임베디드형) 프로젝트: 하드웨어와 밀접하게 관련있는 소프트웨어 (3000KDSI 이상)

@ 보정 계수 반영하기 (노력 조정 수치 반영)

-> 노력 조정 수치가 반영된 PM

  • 개발 기간(TDEV) = c * (PM)^d

  • 적정 투입 인원(FPS) = PM/TDEV

  • 인적 비용(COST) = PM * 1인당 월평균 급여

2. 기능 점수 산정 방법: 라인 수와 무관하게, 기능이 많고 규모도 크면 복잡도가 높다고 판단 (기능별로 복잡도 적용해서 기능 비용 산정)
: 소프트웨어의 기능을 정량화/ 소프트웨어가 얼마나 복잡한가를 상대적인 점수로 ( 개발 시 비용 산정, 유지보수 비용 산정, 개발 시 필요한 자원 산정)

  • 특징:
    -> 소프트웨어의 규모 측정
    -> 기능적 요구사항이 중심
    -> 요구사항 복잡도 측정
    -> 사용자 관점의 요구 기능을 정량적으로 산정
    -> 소프트웨어 개발 생명주기의 전체 단계에서 사용 가능

  • 기능 점수 산정 방법의 구분
    @ 정규 기능 점수법: 설계 단계 이후에 유용. 기능의 유형별 복잡도를 구해서 정확한 기능 점수 산정
    @ 간이 기능 점수법: 기획 단계에서 유용. 평균 복잡도를 적용해 기능 점수 산정

  • 기능의 구분

  • 간이 기능 점수법을 이용한 기능 점수 산정 방법
    간이기능 점수법: 프로젝트 초기 단계에서 각 기능의 요소를 모르는 경우에 평균 복잡도 가중치를 사용해서 소프트웨어 기능의 크기를 측정 (평균 복잡도- 과거의 소프트웨어 기능 점수 산정 결과 분석을 통해 적용해 복잡도를 계산한 가중치의 평균값)

    -> 기능에 따른 평균 복잡도 가중치

  • 과정

  1. 측정 유형 결정
    @ 개발 프로젝트 기능 점수(개발 규모 측정)
    @ 개선 프로젝트 기능 점수(변경 규모 측정): 변경된 부분의 기능 측정
    @ 애플리케이션 기능 점수(응용 규모 측정): 애플리케이션의 기능을 측정
  2. 측정 범위와 애플리케이션 경계 설정
    : 측정 범위에 포함될 요소의 식별(기능 세분화)/ 대상을 제외한 다른 애플리케이션이나 외부 사용자를 사용자 관점에서 구분한 경계
  3. 데이터 기능 점수 계산
    : 경계를 기준으로 내부 논리 파일, 외부 연계 파일의 개수를 계산해 각각의 평균 복잡도에 따라 데이터 기능 점수 결정
  4. 트랜잭션 기능 점수 계산: 입력, 출력, 조회의 개수로 결정
  5. 미조정 기능 점수 계산: 기능점수+트랜잭션 기능점수
  6. 보정 전 개발 원가 계산
  7. 보정 계수: 프로젝트의 특성에 따라 보정 계수를 반영하여 개발 원가 구함
    @ 규모 보정 계수


    -> 위의 단계대로 간이기능점수법을 이용한 기능 점수 산정 방법 연습하기!!

4. 일정 계획

: 시간 내 작업 완수하도록 계획 세우기

일정 계획의 시작

WBS (Work Breakdown Structure) 작업 분할 구조도: 활동과 업무를 세분화 (해당 업무의 담당자를 할당할 수 있을 정도로 작게 나눔)

  • 용도와 장점:
  1. 사용자과 개발자의 의사소통 도구
  2. 업무 내역 가시화할 수 있어서 관리가 용이
  3. 팀원의 책임과 역할이 분명

일정 계획 기법

  1. 네트워크 차트 (PERT/CPM)
    -> WBS의 작업 순서, 소요 기간 등을 네트워크 형태의 그래프로 표현한 후, 일의 중요도와 일정 관리를 명확히 하는데 사용
  • PERT: 프로젝트를 평가하고 검토하는 프로젝트 관리 기법 - 프로젝트 진행 상황을 통계적인 방법으로 파악
  • CPM: 확정적 소요 시간을 갖는 프로젝트에 적합
    -> 작업, 선행 작업, 작업의 소요 시간 알아야 함
  1. 간트 차트
    : 프로젝트 일정 관리를 위한 바 형태의 도구

5. 위험 분석

: 프로젝트 RISK 관리

위험 관리 절차

  1. 위험 요소 식별
    : sw 개발에 방해가 되는 요소를 파악
    -> 브레인 스토밍, 이전 프로젝트 참조, 대표적인 요구 사항 (개발자들의 이직, 요구사항의 변경)

  2. 위험 분석
    : 위험 요소의 발생 확률과 영향도 평가
    -> 각 위험 요소의 발생 가능성, 영향력 평가

  3. 위험 계획 수립
    : 대응 방안 결정
    -> 위험 대응 방안 잘 세워야 함

  4. 위험 감시
    : 발생 확률, 변화 등을 관리
    : 위험 요소 얼마나 발생 했는지, 대응 방안 적절했는지 평가
    : 유사 프로젝트를 위해 데이터베이스에 기록해둬야 함

⭕ 나의 언어로 정리:
프로세스의 생명 주기 중에, 계획 단계에 대해 자세히 살펴보았다. 계획 단계에서는 총 5가지가 이루어진다. 문제 범위 설정하고 어떤 기능이 들어갈 지 설정하는 문제 정의. 경제적, 기술적, 법적 타당성 분석, 개발 비용 산정, 일정계획(WBS, 간트차트, 네트워크 차트), 위험분석이 있다.
개발 비용 산정 방법은 크게는 3가지로 나눌 수 있다. 첫번째는 G하향식 방법. 전문가 판단기법, 델파이 기법이다. 두번째는 상향식 방법이다. 코드 라인 수에 따라 식에 적용한다. 세번째는 수학적 방법이다. COCOMO방법은 라인수에 따라 구하는 방법이다. 여기에 SW의 종류에 따라 보정계수를 곱할 수 있다. 기능 점수 산정법은 기능에 따라 복잡도에 따라 계산하는 것이다. 그 기능점수 산정법은 이전의 소프트웨어 평균치를 이용하는 간이기능 산정법을 이용해서 구할 수도 있다.

----> 개발 비용 산정법 부분이 어렵다. 이 단원 열심히 복습하고, 식 통해서 구하는 거 연습하자!!

profile
지수의 취준, 개발일기
post-custom-banner

0개의 댓글