5.소프트웨어 공학 계획 (일정계획&위험분석)
8. 일정 계획
일정 계획의 이해
일정 계획
- 소프트웨어를 개발하기 위해 어떤 작업이 필요한지 찾은 후, 이를 진행할 순서를 결정하거나 주어진 개발 기간에 소작업의 개발 기간 및 그들 간의 순서, 필요한 자원 등과 같은 일정을 계획하는 것
일정 계획의 시작: 작업 분할 구조도(WBS)
WBS
- 프로젝트 목표를 달성하는 데 필요한 활동과 업무를 세분화하는 작업
- 작업 패키지: 계층 구조에서 최하위에 있는 항목, 해당 업무의 담당자를 할당할 수 있을 정도로 작게 나눔
WBS의 용도와 장점
- 사용자와 개발자의 의사소통 도구로 사용
- 프로젝트 업무 내역을 가시화할 수 있어 관리가 용이
- 프로젝트 팀원의 책임과 역할이 분명
- 필요 인력과 일정 계획을 세우는 데 기초로 활용
- 개발비 산정 시 기초로 활용
- 성과 측정 및 조정 시 기준선으로 활용할 수 있음
일정 계획 기법 1: 네트워크 차트
네트워크 차트(PERT/CPM)
네트워크 차트의 개요
- WBS의 작업 순서, 소요 기간 등을 네트워크 형태의 그래프로 표현한 후 일의 중요도와 일정 관리를 명확히 하는 데 사용
- 전체 작업 일정을 세분화해 지연을 사전에 예방할 수 있고, 개발 기간 단축에 활용해 일정을 효율적으로 관리할 수 있음
- 유사성과 상호 장단점 때문에 PERT/CPM이라 해 두 기법을 혼합한 방법을 사용하기도 함
PERT (Program Evaluation and Review Technique)
- 프로그램을 평가하고 검토하는 프로젝트 관리 기법
- 프로젝트 진행 상황을 통계적인 방법으로 파악하고 이를 통해 일정 계획 및 통제를 할 수 있도록 고안
CPM (Critical Path Method)
- 미 듀퐁사에서 화학 처리 공장의 건설 계획을 조직적으로 추진하기 위해 개발
- 건설 공사와 같이 단위 작업이 확정적 소요 시간을 갖는 프로젝트인 경우에 적합
CPM 작업 과정
- CPM으로 네트워크를 그리려면 학사관리 애플리케이션을 수행하는 데 필요한 작업, 선행 작업, 작업의 소요 기간이 필요
CPM 작업 과정
① CPM 네트워크를 그림
- 노드와 간선을 이용해 초기의 CPM 네트워크를 그림
- 노드는 작업을, 간선은 작업들 간의 선후 의존 관계를 나타냄
② ES값을 구함
- ES: 가능한 빨리 시작할 수 있는 시간으로, 선행 작업이 완료되었을 때 해당 작업을 시작할 수 있는 가장 빠른 시점
- ES 값을 구할 때는 맨 앞(작업 A)에서 끝 방향으로 가며 계산
- ES에서 주의할 부분은 두 작업이 합류하는 지점의 작업 시작 시간은 두 작업이 모두 완전히 끝났을 때
③ EF값을 구함
- EF: 가장 빠른 시작 시간(ES)으로 시작했을 때의 가장 빠른 완료 시간(ES+작업 소요 시간)
④ LS값을 구함
- LS: 어떤 작업을 늦어도 시작해야 하는 시간, 즉 가장 늦게 시작할 수 있는 시간
- 맨 뒤(작업 M)에서 앞(작업 A) 방향으로 계산
- 두 지점으로 갈라지는 곳에서는 다음 작업의 시작 시간에 영향을 주지 않고 시작할 수 있는 시간을 찾아 기입
⑤ LF값을 구함
- LF: 가장 늦게 시작할 수 있는 시간(LF)에 시작해 작업을 완료한 시간(LS+작업 소요 시간)
⑥ ST값을 구함
- ST: 여유 시간, 각 작업에서 ‘가장 늦게 시작하는 시간’에서 ‘가장 빨리 시작하는 시간’을 빼면 구할 수 있음
- 전체 작업 시간을 줄이고 싶을 때는 여유 시간이 존재하는 작업의 시간을 줄이면 됨
⑦ 임계 경로를 구함
- 임계 경로: 여유 시간이 없는 경로(예시에서는 경로 ‘A-B-D-E-H-K-L-M’가 임계 경로)
- 임계 경로에는 여유 시간이 없으므로 모든 일정 계획은 임계 경로에 좌우됨
- 임계 경로에서 벗어난 활동을 수행하는 데 걸리는 시간이 한도 내에서 늦춰지거나 당겨 질 경우에는 전체 프로젝트 완료 시간에 변화가 없음
일정 계획 기법 2: 간트 차트를 이용한 일정표 작성
간트 차트
- 프로젝트 일정 관리를 위한 바 형태의 도구
- 프로젝트의 주요 활동을 파악한 후, 각 활동의 일정을 시작하는 시점과 끝나는 시점을 연결한 막대 모양으로 표시
- 전체 일정을 한눈에 볼 수 있음
9. 위험 분석
위험 분석의 이해
예시) 겨울철 눈에 대비
위험 예방
- 내일 자동차로 출근하거나 여행을 계획했다면 오늘 일기예보를 듣고 교통수단을 결정
- 여행 계획을 세웠다면 아쉽지만 며칠 미루는 것
도구를 사용한 위험 예방
- 폭설이 예상되지만 자동차로 출근할 수밖에 없거나, 모처럼 계획한 가족 여행을 미루기 어려울 경우가 있음
- 스노타이어나 체인 등을 사용해 위험을 최소화
위험 예방을 위한 도구 준비
- 여행을 떠날 때는 눈이 오지 않았지만 자동차 여행 중에 갑자기 폭설을 만날 수도 있음
- 비상사태에 대비해 자동차 트렁크에 체인을 넣어 두거나 미끄럼을 방지할 수 있는 타이어 스프레이를 준비
위험 관리 절차
위험 관리
- 소프트웨어 개발에 방해가 되는 요소를 파악(위험 요소 식별)
- 위험 요소의 발생 확률과 영향도를 평가(위험 분석)
- 분석한 결과에 따라 위험 우선순위를 정해 그에 맞게 대책을 설립
위험 요소 식별
- 발생 가능한 위험 요소에 대해 브레인스토밍해서 도출하는 방법
- 이전에 유사한 프로젝트를 진행했을 때 발생한 위험 요소를 참조하는 방법
- 대표적인 위험요소로는 개발자들의 이직, 요구사항의 변경 등
위험 분석
위험 발생 가능성의 척도
- ‘매우 낮음(<10%), 낮음(10~25%), 보통(25~50%), 높음 (50~75%), 매우 높음(>75%)’ 등급으로 분류
- 프로젝트 진행 중 ‘위험 발생 확률이 80%를 초과하면 상, 30~80%이면 중, 30% 미만이면 하’와 같이 세 단계로 분류
영향력
- 재앙, 심각함, 해결 가능함, 경미함 등으로 분류
- 비용 과 일정이 20%를 초과하면 상, 5~20%이면 중, 5% 미만이면 하’로 분류
도출된 위험 요소에 대한 가능성과 영향력을 등급으로 나타냈다면 이를 이용해 어떤 위험이 가장 중요한지 순위를 정함
위험 계획 수립
- 위험 계획 수립은 식별된 위험 요소의 위험을 관리하기 위해 전략을 찾는 과정
- 이 과정에서는 특히 위험을 처리하 는 위험 대응 방안을 잘 세워야 함
위험 감시
- 식별된 위험 요소의 발생 확률과 변화 등을 관리
- 예측한 위험 요소가 실제로 얼마나 발생했는지, 위험 대응 방안이 실제로 위험이 발생했을 때 적절했는지 등을 평가
- 앞으로 유사한 프로젝트를 진행할 때 참고할 수 있도록 개발사 내의 데이터베이스에 기록해 놓아야 함
댓글남기기