프로젝트를 관리하는 목적은 작업 수행에 필요한 여러 가지 자원, 인력, 비용, 기술 등을 효과적으로 사용하여 프로젝트의 목표를 달성하기 위함이다. 프로젝트 관리는 “계획”, “조직”, “모니터링”, “조정”의 네 가지 활동으로 이루어진다. 각 활동은 프로젝트의 진행에 따라 순차적으로 이뤄진다.
프로젝트 시작 (Project Start)
프로젝트의 첫 작업은 목표를 세우고 가치와 치스크를 이해하는 일이다. 프로젝트를 시작할지 말지를 결정하는 요인은 다음과 같다.
- `프로젝트가 제공할 가치`: 프로젝트에 의해 창출되는 가치와 프로젝트의 결과물이 얼마나 지속 가능한지를 말한다.
- `프로젝트와 연관된 리스크`: 자원의 가용성, 타이밍, 기술적 어려움 등을 말한다.
가치와 리스크는 정확하게 평가하기는 쉽지 않지만 정량적으로 측정할 수 있기에 프로젝트 시작 전 가치 분석과 리스크 파악이 제대로 되어야 한다.
프로젝트 가치
프로젝트에 의하여 창출되는 직접/간접 가치는 프로젝트의 긍정적/부정적 결과를 측정하여 나타낼 수 있다. 그리고 프로젝트가 지속 가능하고 결과물이 오랫동안 사용될 능력을 말하는 “지속 가능성”도 중요한 프로젝트 가치이다.
프로젝트의 가치를 평가하는 방법은 다음과 같다.
- `투자 회수 기간`: 투자금과 같은 금액을 벌어들이는데 걸리는 시간
- `ROI(Return of Investment)`: 총 비용에 대한 연간 평균 이익률
- `순수 현재 가치`: 현재 투자금과 미래 수익금을 현재 가치로 비교하는 방법
- `평가표`: 금액적인 요소 이외에 기술, 품질, 시간 여유, 인력 등을 고려하여 점수화하는 방법
- `SWOT`: 프로젝트의 강점(Strength), 약점(Week), 기회 요인(Opportunity), 위험(Threat)을 파악하여 타당성을 이해하는 방법
프로젝트 리스크
프로젝트는 일정 기간 동안 인력, 재정, 기술적 자원이 필요한데 이에 따르는 리스크를 대비하기 위해 프로젝트의 자원 요구를 미리 확인해야 한다. 고려해야 할 위험 요인은 다음과 같다.
- 현재 자원 사용량과 가용성
- 예상 자원 사용량과 가용성
- 프로젝트의 우선순위 및 중요도
- 기술적 어려움 및 불확정성
타당성 분석
타당성 분석은 프로젝트를 공식적으로 인정하고 기관의 목표와 연결시키는 문서로, 프로젝트의 선택에 기초가 되는 문서이다. 타당성 분석에 포함되어야 할 내용은 다음과 같다.
- SOW(Statement of Work): 프로젝트가 성취되어야 할 일
- 비지니스 목표(가치): 프로젝트의 결과물
- 예산: 비용과 수익의 요약
- 프로젝트 일정: 대략적인 일정
- 프로젝트 리스크: 위험 요소
- 대안: 구축, 구매 등의 방법
- 평가: 프로젝트 가치에 대한 평가 결과
프로젝트 계획 (Project Planning)
프로젝트 시작되고 가장 먼저 하는 작업은 “프로젝트 계획”이다. 초기 프로젝트 계획 단계에서는 다음의 세 가지 사항에 대하여 계획한다.
- `목표 설정`: 프로젝트의 특성은 무엇이며, 누가 자원을 제공하며, 누가 사용할 것인지 정한다.
- `일정 정의`: 프로젝트 작업의 진행 스케줄과 할당할 자원을 정한다.
- `비용 추정`: 프로젝트를 완성시키기 위해 필요한 비용을 추정한다.
일정을 계획할 때는 다음과 같은 순서를 따른다.
- 프로젝트의 목표와 요구를 정하고 문제의 범위를 정한다.
- 문제를 작업 스케줄 관점으로 이해하기 위해 WBS 분석을 진행한다
- 작업의 의존관계를 파악하고 자원 할당을 고려하여 일정을 정한다.
목표 설정
프로젝트 목표에는 프로젝트에서 다루어야 할 모든 작업이 포함되어야 하고 범위 밖의 작업이 포함되면 안 된다. 프로젝트 범위를 문서로 정리할 때는 다음 세 가지 내용이 포함되어야 한다.
- `프로젝트 목표 및 요구`: 프로젝트에서 달성하여야 할 목표, 수행되어야 할 기본 작업(WBS), 산출해야 할 결과물, 승인 조건
- `가정과 제약조건`: 프로젝트가 성공하기 위해 만족해야 할 조건
- `산출물과 점검 일정`: 프로젝트에서 정해진 일정에 산출해야 할 결과물
프로젝트 범위
소프트웨어 프로젝트 계획은 대상 업무나 문제의 범위(Scope)를 정하는 것으로부터 시작된다. 현재 상황을 잘 파악하고 구현될 시스템의 목표 및 제약 조건 등을 정의해야 한다. 이때, 문제의 범위는 사용자의 입장에서 작성하는 것이 중요하다. 문제의 범위를 정의하기 위해서 문제의 배경과 응용 분야를 잘 이해하는 것이 좋다.
WBS (Work Breakdown Structure)
프로젝트의 목표를 스케줄 관점으로 이해하기 위해서는 WBS 분석이 필요하다. WBS는 개발 팀이 프로젝트 목표를 달성하고 결과물을 산출하기 위해 수행하여야 할 작업을 계층적으로 분할한 것이다.
소작업에 대한 소요 일정이 예측되어야 전체 프로젝트의 일정을 계획할 수 있기에 WBS를 작성한다. WBS 작성을 통해 프로젝트 진행에서 일어나는 모든 작업을 찾아내고 각 작업을 필요에 따라 더 자세한 소작업으로 분류할 수 있다. 이때, 가장 하위의 단위 작업은 프로젝트 단위 조직이 책임져야 할 규모의 목표가 되어야 한다.
WBS는 프로젝트에서 수행할 작업을 정의하는데 효과적이고 모니터링할 때 유용하다. WBS는 프로젝트 스케줄링 작업의 입력이 된다.
스케줄링
스케줄링이란 빠른 기간 내에 프로젝트를 완성할 수 있도록 작업의 순서를 최적화하는 일이다. 프로젝트 목표가 설정되면 WBS를 기초로 하여 일정을 정의하는 것이다. 스케줄링 결과는 간트 차트로 표현되는데, 다음의 작업들이 필요하다.
- 작업 사이의 의존 관계 파악
- CPM 방법을 이용한 여유 시간 계산
- 소요 자원의 할당
작업 의존 관계
작업을 수행하는 순서는 논리적으로 정해져 있다. 작업 사이의 의존 관계에는 강한 관계와 약한 관계가 있다.
- `강한 의존 관계`: 코딩을 다 한 이후에 테스팅할 수 있거나, 계약이 끝나야 코딩을 시작할 수 있는 관계이다. 강한 의존 관계를 제거하려면 재작업 비용이 든다.
- `약한 의존 관계`: 순서에 따라 다른 계획이 가능한 관계이다. 사용할 수 있는 자원과 수준에 다라 다른 순서로 진행 가능하다.
CPM 네트워크
CPM(Critical Path Method) 네트워크는 노드와 간선으로 구성된 네트워크로, 노드는 작업, 간선은 작업 사이의 의존 관계를 나타낸다. CPM 네트워크의 박스에는 작업의 시작일과 완성일을 표시한다.
CPM 네트워크는 프로젝트 완성에 필요한 작업을 나열하고 작업에 필요한 소요 기간을 예측하는데 사용한다. 이를 위해 작업의 선후 관계를 결정해야 한다. CPM 네트워크를 통해 전체 프로젝트의 최소 소요 기간을 구한다.
임계 경로와 여유 시간 계산
임계 경로(Critical Path)란 소요 기간이 가장 긴 경로로, 경로 상에 있는 어떤 작업이라도 늦추어지면 전체 프로젝트가 지연된다는 것을 말한다. CPM 네트워크를 이용하여 각 작업의 여유 기간(Slack Time)을 구할 수 있는데, 다음의 식을 이용하여 구할 수 있다.
$$TS = TL (Latest \ Start \ Time) - TE(Earliest \ Start \ Time)$$
자원 할당과 간트 차트
간트 차트(Gantt Chart)란 각 작업에 대한 여유 시간을 구하고 작업 별로 시작과 종료 기간을 수평 막대로 표현한 것이다.
프로젝트 진행을 위해서 일정 계획에는 필요한 자원을 할당하게 되는데, 소프트웨어 개발 시 필요한 자원은 크게 세 가지로 나누어진다.
- `인력`: 주어진 작업을 수행할 인원과 투입률
- `장비`: 주어진 작업을 수행할 때 필요한 도구나 하드웨어 및 소프트웨어
- `재료`: 주어진 작업을 수행할 때 필요한 소모품이나 자료