3 분 소요

1. 계획의 이해

계획

계획의 역할

  • 계획을 제대로 세우지 않고 수행하는 소프트웨어 개발은 일정 지연, 비용 초과, 품질 저하라는 결과를 낳게 됨

계획의 중요성

  • 소프트웨어 개발의 성패는 비용, 기간, 인력과 같은 자원을 토대로 초기에 얼마나 계획을 잘 세우느냐에 달려있음

2. 문제 정의

문제 정의

문제 정의

  • 문제를 정의하려면 개발하고자 하는 영역의 배경 지식이 필요
  • 유사한 프로젝트를 개발한 경험이 있는 분석가가 참여하는 것이 도움이 됨
  • 문제를 파악하기 위해 현재 운영 중인 시스템을 사용해, 실무 담당자와 면담해 자료를 수집한 후 면밀히 분석해보는 것이 필요

3. 타당성 분석

경제적 타당성

  • 경영자 입장에서 의사결정을 하는 데 매우 중요한 요소
  • 시장 분석을 통해 시장성을 확인
  • 경제적 타당성 분석으로 투자 효율성과 시장성을 검증한 후 개발 여부를 판단

기술적 타당성

  • 사용자가 요구하는 프로젝트가 최신 기술이 필요하다면 기술적 타당성을 먼저 검토
  • 요구하는 기술을 회사가 가지고 있는지 확인
  • 부족하다면 필요한 기술을 갖고 있는 소프트웨어 개발자를 채용하거나 외주 개발로 해결

법적 타당성

  • 오픈소스는 소프트웨어 개발에서 분쟁 발생 소지가 높음
  • 소프트웨어 개발에서 오픈소스를 사용하는 것은 비용 절감 측면에서 매우 효율적
  • 오픈소스는 원시 코드가 개방되어 있다는 것이지 아무렇게나 가져다 사용할 수 있는 것은 아님
  • 법적인 문제가 발생하지 않으려면 오픈소스를 사용 할 때 어디까지 무료로 사용할 수 있는지 확인해야 함

4. 개발 비용 산정

개발 비용 산정의 어려움

  • 조립 컴퓨터 가격, 전자 제품 가격, 건축비 등은 어느 정도 근거가 명확해 소비자도 인정하기가 쉬움

  • 소프트웨어 가격은 근거를 명확히 제시하기 어려우니 사용자도 받아들이기가 쉽지 않음
  • 개발 프로세스가 다양하기 때문에 표준화나 자동화가 어려워 개발 프로세스에 따라 생산성이나 품질이 서로 다를 수 있음

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

프로그래머 자질

  • 초급 프로그래머와 경험이 많은 프로그래머의 생산성에는 큰 차이가 있음

소프트웨어 복잡도

  • 브룩스의 법칙: “애플리케이션을 개발하는 것보다 유틸리티를 개발하는 것이 세 배 어렵고, 유틸리티를 개발하는 것보다. 시스템 프로그램을 개발하는 것이 세 배 어렵다”

소프트웨어 크기

  • 개발하려는 소프트웨어의 규모가 크면 개발 인력과 개발 기간도 늘고 복잡도도 더 커짐

가용 시간

  • 관리자의 잘못된 생각 중 하나가 개발 기간을 단축하려면 인력과 자원을 늘리면 된다는 것 보엠: “정상적인 계획에서 최대 75%가 줄일 수 있는 한계”

요구되는 신뢰도 수준

  • 사고나 오류 발생 시 재산에 큰 손실을 끼치거나, 인명 피해가 발생할 수 있는 소프트웨어들은 개발 시 높은 신뢰도를 요구

기술 수준

  • 소프트웨어 개발 시 고급 언어를 사용하면 저수준 언어를 사용할 때보다 프로그래머의 생산성이 5~10배 높아짐

5. 비용 산정 기법1 (하향식 선정 기법)

비용 산정 기법: 하향식

전문가 판단 기법

  • 경험이 많은 여러 전문가가 프로젝트를 수행하는 데 비용이 어느 정도 들어가는지 평가한 금액을 개발 비용으로 산정
  • 경험이 많은 전문가가 판단 을 내린 만큼 신뢰성이 있고 편리하다는 장점
  • 짧은 시간에 개발비를 산정하거나 입찰에 응해야 하는 경우 많이 사용
  • 수학적 계산에 의해 산정하지 않고 경험에만 의존할 경우 부정확할 수 있음

델파이 기법

  • 전문가의 경험을 중요시해 비용을 산정하는 것은 같으나 전문가들의 편견이나 분위기에 영향을 받지 않도록 조정자를 둠
  • 여러 전문가가 모여 각자의 의견대로 비용을 산정 후 결과를 공유하고 의견을 조율하여 개발 비용을 산정 ①조정자는 전문가가 모여 비용 산정을 하는 회의에서 간사 역할을 수행 ②전문가는 비용을 산정할 수 있는 자료를 충분히 검토하고, 필요하다면 의견을 나눌 수 있음 ③전문가 각자가 비용을 산정한다. 이때 계산된 결과를 조정자에게 익명으로 제출 ④조정자는 각 전문가가 제출한 자료를 요약 정리
    • 조정자는 각 전문가가 제출한 자료에서 산정 내용에 차이가 크면 이 문제를 해결하기 위해 회의를 소집
    • 전문가는 다시 익명으로 비용 산정 작업을 실시

delfi

6. 비용 산정 기법2 (상향식 산정 기법)

비용 산정 기법: 상향식

원시 코드 라인 수 기법

  • 소프트웨어 각 기능의 원시 코드 라인 수 LOC의 비관치, 낙관치, 중간치를 측정해서 예측치를 구하고 이를 이용해 노력, 개발 비용, 개발 기간, 생산성 등의 비용을 산정하는 기법

예제

  1. 소프트웨어 개발 기간은 1년(12개월)이다. 5명의 개발자가 12개월 동안, 7명의 개발자가 5개월 동안 참여한다면 이 소프트웨어 개발의 노력M/M이 얼마인가?
    1. 풀이: (5명x12개월) + (7명x5개월) = 60M/M + 35M/M = 95M/M
  2. LOC 기법에 의해 예측한 총 라인이 50,000라인이고, 개발자가 10명 참여한다. 그리고 개발자들이 월평균 500라인을 코딩한다면 개발 기간을 얼마나 되는가?
    1. 노력^M/M = 원시 코드 라인 수 / (1인당 월평균 생산 코드 라인 수) = 50,000 라인 / 500라인 = 100M/M
    2. 개발 기간 = (M/M)/참여 인원 = 100(M/M)/10명 = 10개월

개발 단계별 노력 기법

  • 각 기능을 구현하는데 필요한 M/M을 소프트웨어 개발 생명주기의 각 단계에 적용해 단계별로 산정

댓글남기기