소프트웨어 개발 계획
1. 계획
1.1 계획의 이해
일상에서의 다양한 일을 수행할 때 세우는 계획과 같이 소프트웨어를 개발할 때도 계획을 세워야 한다. 이때 개발 비용, 기간, 자원등을 잘 고려하여 계획을 세우지 않으면 당연히 프로젝트가 실패할 가능성이 높아진다. 하여 우리는 고품질의 소프트웨어를 만들어 내기 위해 계획을 잘 세워야 한다. 하지만 개발 초기 단계에서는 요구사항이나 제약조건등이 명확하지 않아 계획을 세우는데 어려움이 따른다. 하여 선대의 경험을 통해 정립된 다양한 방법과 도구가 등장하였다.
1.2 문제 정의
구현해야 할 시스템의 목표 및 제한조건등을 명확히 이해하고, 무엇을 개발할 지 어디까지 개발할지를 명확히 정하는 단계이다. 문제를 정의하려면 도메인 지식 즉 개발하고자하는 제품/서비스의 산업 영역에 대한 배경지식이 필요하다.
1.3 타당성 분석
개발할 제품/서비스를 정의하고, 구현 방안을 모색하면서, 투자 효울성은 얼마나 되는지, 시장성은 얼마나 큰지, 해당 제품/서비스를 개발하는데 기술적인 어려움은 없는지 개발 과정에서 사용하는 프로그램이나 도구가 법적인 문제는 없는지 계획 단계에서 사전에 검토해야한다. 이를 개발의 가능성 또는 타당성이라 한다. 크게 3가지의 타당성이 존재한다.
1.3.1 경제적 타당성
경제적 타당성은 경영자 입장에서 의사 결정을 하는데 꼭 필요한 요소다. 투자금액 대비 이윤, 투자금 회수 시기 등 해당 제품/서비스의 여러 경제적 요인들을 검토해보는 과정이다.
1.3.2 기술적 타당성
기술적 타당성은 개발자가 사용자의 요구사항대로 제품/서비스를 구현하는데 기술적 어려움은 없는지, 개발인원들의 기술력에 문제가 없는지를 검토하는 과정이다.
1.3.3 법적인 타당성
소프트웨어를 개발할 때 사용하는 여러 도구들에 대한 법적인 문제는 없는지 법적인 타당성을 충분히 검토하는 과정이다. 특히 요즘 시대에는 지적 재산권과 저작권 프로그램 보호법이 강화되었으므로 법적인 타당성을 꼭 확인해야한다.
1.4 개발 비용 산정
1.4.1 개발 비용 산정의 어려움
소프트웨어 개발에 필요한 비용을 예측하는 것은 어려운 일이며 예측의 결과가 어긋나는 경우도 많다. 다른 산업 분야, 예를 들어, 자동차 조립, 반도체 설비 등은 생산에 투입되는 자재와 인력의 평균 능률이 어느정도 정해져 있으므로 비용 산정에 있어서 큰 어려움이 없다.
반면 소프트웨어 개발은 사람(개발자)이 중심이 되고, 개개인의 평균 능률이라는 것이 표준화되어 측정되지 않으므로, 비용산정이 어렵다. 뿐만 아니라 개발 방법에 해당하는 프로세스마저 다양하므로 표준화/자동화가 어렵다.
하여 여기서는 누가 산출해도 거의 동일한 결과를 얻을 수 있는 개발 비용 산정 기법을 크게 3가지로 나누어 설명한다.
1.4.2 소프트웨어 개발 비용에 영향을 주는 요소
1. 프로그래머 자질
2. 소프트웨어 복잡도
3. 소프트웨어 크기
4. 가용 시간
5. 요구되는 신뢰도 수준
6. 기술 수준
1.4.1 비용 산정 기법1: 하향식 산정 기법
하향식 기법은 개발 비용을 과거의 유사 경험이 있는 전문가들의 의견을 바탕으로 회의를 통해 산정하는 기법이다. 이에는 크게 두 가지 기법이 있다. (설명 생략)
1.4.1.1 전문가 판단 기법
1.4.1.2 델파이 기법
1.4.2 비용 산정 기법2: 상향식 산정 기법
상향식 선정 기법은 프로젝트의 세부 작업 단위 별 비용을 산정한 후 전체 비용을 합산하여 산정하는 기법이다. 아래에서 위로 올라가는 형상이므로 상향식이라 이름 지었다.
1.4.2.1 원시 코드라인수 기법(LOC Line of Code)
소프트웨어 각 기능의 원시 코드 라인 수의 비관치, 낙관치, 중간치를 측정하여 이에 가중치를 1:1:4로 주어 산정하는 기법이다.
1M/M은 1명이 1개월간 소프트웨어 개발에 참여하는 시간을 말한다.
개발 비용 = (M/M)/단위 비용
개발 기간 = (M/M)/참여 인원
생산성 = LOC/(M/M)
1.4.2.2 개발 단계별 노력 기법
구현 단계의 코드 라인 수뿐 아니라 요구분석 설계 등의 단계에서도 인력과 자원에 대해 M/M을 기반으로 비용을 산정하는 기법이다.
1.4.3 비용 산정 기법3: 수학적 산정 기법
1.4.3.1 COCOMO 기법
COCOMO는 소프트웨어의 원시 코드 라인 수를 중심으로 비용을 산정하는 기법이다. 다만 이를 모든 소프트웨어에 획일적으로 적용하지 않고, 프로그램의 유형에 따라 가중치를 부여한 뒤 비용을 산정한다.
1.4.3.1.1 가중치 반영하기
l 단순형 프로젝트: 사무용, 업무용 애플리케이션 50KDSI
l 중간형 프로젝트: 일반 업무용 소프트웨어보다 크고 복잡한 운영체제, DBMS와 같은 프로그램이다. 300KDSI
l 내장형 프로젝트: 전자제품과 같이 하드웨어에 직접으로 탑재되는 내장형 소프트웨어다.
1.4.3.1.2 보정계수 반영하기
1.4.3.1.3 총 개발 기간 산정하기
1.4.3.2 COCOMO 2 기법 (a.k.a Putnam)
기존 COCOMO 기법은 개발 초기 단계에서 원시 코드 라인의 수를 정확히 예측하기 어렵다는 단점이 있다. 단계별로 나름의 방법으로 값을 예측한 후 이를 바탕으로 비용을 산정하는 기법이다. 크게 3가지 모델을 제시한다.
1.4.3.2.1 애플리케이션 합성 모델
1.4.3.2.2 초기 설계 모델
1.4.3.2.3 구조 설계 이후 모델
1.4.3.3 기능 점수 산정 방법
기능 점수 방법은 개발자 중심의 물리적 접근 방법이 아닌 시스템 구현에 상ㅇ되는 기술적 요구사항에 초점을 맞춘 것이다. 사용자의 관점에서 개발하려는 기능을 정량화하여 비용을 산정하는 기법이다.
1.5 일정 계획
1.5.1 일정 계획의 시작: 작업 분할 구조도(WBS)
1.5.2 일정 계획 기법1: 네트워크 차트 (PERT/CPM)
1.5.3 일정 계획 기법2: 간트 차트를 이용한 일정표 작성
1.6 위험 분석
위험 관리는 소프트웨어 개발에 방해가 되는 요소를 파악하고, 위험 요소의 발생 확률과 영향도를 평가한 뒤, 분석한 결과에 따라 위험 우선 순위를 정하여 그에 맞게 대책을 세우는 것이다.
1.6.1 위험 관리 절차
1. 위험 요소 식별
2. 위험 분석
3. 위험 계획 수립
4. 위험 감시