그렇다면 이제 진짜로 일정, 날짜 같은 것을 예측해야겠지?
출시 예정일 같은 것들을 알아야 광고도 찍고 홍보도 하지
그래서 이번엔 스케줄링을 알아보려고 한다.
일정 계획(Scheduling)
개발할 소프트웨어의 규모와 인력 총량이 결정되었으면 이제는 상세한 일정을 잡아야한다.
개발 프로세스를 이루는 소작업들을 파악해서 소작업들의 순서와 일정을 정하는 일, 바로 스케줄링이다.
다시 말해서,
개발 프로세스 모델을 결정하고, 소작업, 산출물, 이정표들을 설정하는 과정이다.
일정계획은 간단하게 4단계라고 말할 수 있다.
1. 작업분해 (Work Breakdown Structure)
2. CPM (Critical Path Method) 네트워크 작성
3. 최소 소요 기간을 구함
4. 간트 (Gannt) 차트 도출
이러한 예측은 프로젝트 진행을 관리하는 토대가 되며, 계획에 따른 진척도나 문제 발생 시 대처할 수 있게 된다.
**이러한 계획은 다음 번에 진행될 비슷한 프로젝트에서 일정 예측의 근거가 된다.
그렇다면 작업 분해라는 것은 어떻게 할까?
작업 분해는 프로젝트 완성에 필요한 모든 일을 계층적으로 나눠놓은 것이다.
즉 WBS( Work Breakdown Structure)라고 하며
밑에 그림처럼 나눠버린다.
WBS의 목적은 프로젝트 진행에서 일어나는 모든 작업을 알기 위함이다.
**작업을 세분화 할 수 있다면 더욱 정확한 예측을 할 수 있다.
++ 세분화 한다면 업무 지시의 단위가 되기 때문에 책임자, 소요 일정 등 유용하게 쓰인다.
CPM( Critical Path Method)란 어떤 것일까?
**그래프를 보고 임계 경로, 최대 빠른 착수일, 늦은 착수일, 여유기간(slack time)을 구할 수 있어야 한다.
CPM이란 방향 가중치 그래프와 완전히 똑같이 생겼다. 노드와 간선으로 이루어져있다.
방향은 일의 선후 의존 관계를 나타내며 가중치는 소요 일정을 나타낸다.
*WBS를 바탕으로 CPM을 작성한다
** WBS로 그래프를 그릴 수 있어야한다 반대도 마찬가지
CPM을 어떻게 활용하냐면
프로젝트를 완료할 수 있는 최소 기간의 산정 // 소작업들에는 선수과정이 있다.
모든 작업을 동시에 시작할 수는 없다
완료 기간을 맞추기 위해서는 각 작업을 언제 시작하고 완료해야 하는지 산정 // 일정을 유연하게 만들 수 있다.
전체 프로젝트가 지연되지 않으려면 어떤 작업에 특히 주의를 기울여야 하는지 알 수 있다.
// 선수 작업이 있기 때문
전체 프로젝트 완료 기간을 단축하기 위해서는 어떤 작업들을 단축하는 것이 가장 경제적인지 알 수 있다.
여기서 중심이 되는 단어가 임계 경로(Critical Path)이다.
임계 경로는 오른쪽 조건을 만족한다. 최대빠른착수일(earliest start time) = 늦은착수일(latest start time)
++계산할 때 F가 15가 되는 이유는 F 선행작업이 A,B인데 큰 값을 골라서 계산해야해서 그렇다.
++ 이건 계산 좀 헷갈릴 수 있는데 계산하는 이유는 여유가 얼마나 있는지 계산할 때 쓴다.
ex E작업은 B가 끝나야 진행할 수 있고 늦은 착수일 55일에서 E(10), J(15)를 빼면 30이 되고 ,15일의 여유기간이 생긴다.
**Earliest Start Time :가능한 빨리 시작할 수 있는 시간으로, 선행 작업이 완료되었을 때 해당작업을 시작할 수 있는 가장 빠른 시점
**Latest Start Time 어떤 작업을 늦어도 시작해야 하는 시간, 즉 가장 늦게 시작할 수 있는 시간
이 시간에 시작하지 않으면(이 시간보다 늦게 시작하면) 총 일정이 지연
++임계 경로에 있는 작업들은 여유가 없다는 말이다
임계 경로를 구할 때는
이런식으로 진행이 된다.
그 다음 간트차트를 알아볼까?
간트(Gannt chart)란
프로젝트를 이루는 소작업들이 언제 시작되고 끝나야 하는지를 한 눈에 볼 수 있도록 만든 일정표다.
전에 했던 것이랑 다를 바 없다고 생각하지만 같은 것도 어떻게 표현하느냐에 따라 달라진다는 것을 얘가 보여준다.
이게 그 간트 차트이다.
**WBS와 CPM을 고려하여 작성하는 것이다.
**흰 부분은 예상 작업 시간
** 까만 부분은 예비시간(slack time) 즉, 저것보다 밀리면 프로젝트 일정 다밀린다는 소리
이를 어디다 써먹느냐?
한 눈에 들어오니까!
자원 배치, 인원 할당, 진척도 관리 등 많은 부분에 쓰인다.
그리고 발표할 때 그래프보다 깔끔해서 비전문가도 보기 좋다
'컴퓨터(Computer Science) > 소프트웨어공학(Software engineering)' 카테고리의 다른 글
프로젝트 계획(6) - 요구 분석(Requirement Analysis) [소프트웨어공학] (0) | 2020.04.17 |
---|---|
프로젝트 계획(5) - 팀 구성, 조직 계획 [소프트웨어공학] (0) | 2020.04.17 |
프로젝트 계획 (3) -기능점수[ 소프트웨어공학] (0) | 2020.04.17 |
프로젝트 계획 (2) - COCOMO [ 소프트웨어공학] (0) | 2020.04.16 |
프로젝트 계획 (1) [ 소프트웨어공학] (0) | 2020.04.16 |