3.소프트웨어 공학 계획
1. 계획의 이해
계획
계획의 역할
- 계획을 제대로 세우지 않고 수행하는 소프트웨어 개발은 일정 지연, 비용 초과, 품질 저하라는 결과를 낳게 됨
계획의 중요성
- 소프트웨어 개발의 성패는 비용, 기간, 인력과 같은 자원을 토대로 초기에 얼마나 계획을 잘 세우느냐에 달려있음
2. 문제 정의
문제 정의
문제 정의
- 문제를 정의하려면 개발하고자 하는 영역의 배경 지식이 필요
- 유사한 프로젝트를 개발한 경험이 있는 분석가가 참여하는 것이 도움이 됨
- 문제를 파악하기 위해 현재 운영 중인 시스템을 사용해, 실무 담당자와 면담해 자료를 수집한 후 면밀히 분석해보는 것이 필요
3. 타당성 분석
경제적 타당성
- 경영자 입장에서 의사결정을 하는 데 매우 중요한 요소
- 시장 분석을 통해 시장성을 확인
- 경제적 타당성 분석으로 투자 효율성과 시장성을 검증한 후 개발 여부를 판단
기술적 타당성
- 사용자가 요구하는 프로젝트가 최신 기술이 필요하다면 기술적 타당성을 먼저 검토
- 요구하는 기술을 회사가 가지고 있는지 확인
- 부족하다면 필요한 기술을 갖고 있는 소프트웨어 개발자를 채용하거나 외주 개발로 해결
법적 타당성
- 오픈소스는 소프트웨어 개발에서 분쟁 발생 소지가 높음
- 소프트웨어 개발에서 오픈소스를 사용하는 것은 비용 절감 측면에서 매우 효율적
- 오픈소스는 원시 코드가 개방되어 있다는 것이지 아무렇게나 가져다 사용할 수 있는 것은 아님
- 법적인 문제가 발생하지 않으려면 오픈소스를 사용 할 때 어디까지 무료로 사용할 수 있는지 확인해야 함
4. 개발 비용 산정
개발 비용 산정의 어려움
-
조립 컴퓨터 가격, 전자 제품 가격, 건축비 등은 어느 정도 근거가 명확해 소비자도 인정하기가 쉬움
- 소프트웨어 가격은 근거를 명확히 제시하기 어려우니 사용자도 받아들이기가 쉽지 않음
- 개발 프로세스가 다양하기 때문에 표준화나 자동화가 어려워 개발 프로세스에 따라 생산성이나 품질이 서로 다를 수 있음
개발 비용에 영향을 주는 요소
프로그래머 자질
- 초급 프로그래머와 경험이 많은 프로그래머의 생산성에는 큰 차이가 있음
소프트웨어 복잡도
- 브룩스의 법칙: “애플리케이션을 개발하는 것보다 유틸리티를 개발하는 것이 세 배 어렵고, 유틸리티를 개발하는 것보다. 시스템 프로그램을 개발하는 것이 세 배 어렵다”
소프트웨어 크기
- 개발하려는 소프트웨어의 규모가 크면 개발 인력과 개발 기간도 늘고 복잡도도 더 커짐
가용 시간
- 관리자의 잘못된 생각 중 하나가 개발 기간을 단축하려면 인력과 자원을 늘리면 된다는 것 보엠: “정상적인 계획에서 최대 75%가 줄일 수 있는 한계”
요구되는 신뢰도 수준
- 사고나 오류 발생 시 재산에 큰 손실을 끼치거나, 인명 피해가 발생할 수 있는 소프트웨어들은 개발 시 높은 신뢰도를 요구
기술 수준
- 소프트웨어 개발 시 고급 언어를 사용하면 저수준 언어를 사용할 때보다 프로그래머의 생산성이 5~10배 높아짐
5. 비용 산정 기법1 (하향식 선정 기법)
비용 산정 기법: 하향식
전문가 판단 기법
- 경험이 많은 여러 전문가가 프로젝트를 수행하는 데 비용이 어느 정도 들어가는지 평가한 금액을 개발 비용으로 산정
- 경험이 많은 전문가가 판단 을 내린 만큼 신뢰성이 있고 편리하다는 장점
- 짧은 시간에 개발비를 산정하거나 입찰에 응해야 하는 경우 많이 사용
- 수학적 계산에 의해 산정하지 않고 경험에만 의존할 경우 부정확할 수 있음
델파이 기법
- 전문가의 경험을 중요시해 비용을 산정하는 것은 같으나 전문가들의 편견이나 분위기에 영향을 받지 않도록 조정자를 둠
- 여러 전문가가 모여 각자의 의견대로 비용을 산정 후 결과를 공유하고 의견을 조율하여 개발 비용을 산정
①조정자는 전문가가 모여 비용 산정을 하는 회의에서 간사 역할을 수행
②전문가는 비용을 산정할 수 있는 자료를 충분히 검토하고, 필요하다면 의견을 나눌 수 있음
③전문가 각자가 비용을 산정한다. 이때 계산된 결과를 조정자에게 익명으로 제출
④조정자는 각 전문가가 제출한 자료를 요약 정리
- 조정자는 각 전문가가 제출한 자료에서 산정 내용에 차이가 크면 이 문제를 해결하기 위해 회의를 소집
- 전문가는 다시 익명으로 비용 산정 작업을 실시
6. 비용 산정 기법2 (상향식 산정 기법)
비용 산정 기법: 상향식
원시 코드 라인 수 기법
- 소프트웨어 각 기능의 원시 코드 라인 수 LOC의 비관치, 낙관치, 중간치를 측정해서 예측치를 구하고 이를 이용해 노력, 개발 비용, 개발 기간, 생산성 등의 비용을 산정하는 기법
예제
- 소프트웨어 개발 기간은 1년(12개월)이다. 5명의 개발자가 12개월 동안, 7명의 개발자가 5개월 동안 참여한다면 이 소프트웨어 개발의 노력M/M이 얼마인가?
- 풀이:
(5명x12개월) + (7명x5개월) = 60M/M + 35M/M = 95M/M
- 풀이:
- LOC 기법에 의해 예측한 총 라인이 50,000라인이고, 개발자가 10명 참여한다. 그리고 개발자들이 월평균 500라인을 코딩한다면 개발 기간을 얼마나 되는가?
- 노력^M/M =
원시 코드 라인 수 / (1인당 월평균 생산 코드 라인 수) = 50,000 라인 / 500라인 = 100M/M
- 개발 기간 =
(M/M)/참여 인원 = 100(M/M)/10명 = 10개월
- 노력^M/M =
개발 단계별 노력 기법
- 각 기능을 구현하는데 필요한 M/M을 소프트웨어 개발 생명주기의 각 단계에 적용해 단계별로 산정
댓글남기기