효과적인 프로젝트 관리를 위해 프로젝트 관리 방법론에 대해 알아보자.
프로젝트 관리란?
https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8_%EA%B4%80%EB%A6%AC
프로젝트의 성공적인 완성을 위해 움직이는 활동을 말한다.
프로젝트를 구성하는 각각의 활동계획입안, 일정표 작성 및 진척 관리를 포함한다.
프로젝트 관리 방법론
https://blog.sphinfo.com/index.php/2020/12/16/best-pm-methodologies/
프로젝트 관리 방법론에는 크게 3가지가 있다.
폭포수(Waterfall), 애자일, 그리고 하이브리드
- 폭포수(Waterfall)
- 애자일 (Agile)
- 하이브리드 (Waterfall + Agile)
프로젝트 관리 방법론을 이용하면 아래와 같은 장점이 있다.
- 명확성: 프로젝트 관리 방법론의 주요 장점 중 하나는 프로젝트에 명확성을 제공한다는 것이다. 역할이 투명하게 정의되므로 의사 결정 프로세스를 개선하고 책임을 보장할 수 있다. 누가 무엇을 책임지고 있는지가 불투명하면 이는 바로 지연과 혼란으로 이어진다.
- 가시성: 모든 프로젝트 관리 방법론은 프로젝트를 모니터링하고 제어하는 프로세스를 구현할 수 있다. 프로젝트를 모니터링하면 프로젝트 진행 상황과 다음에 수행해야 할 작업을 쉽게 파악할 수 있다. 또한 프로젝트 계획을 통해 일이 제대로 진행되고 있지 않은지 확인하고, 프로젝트를 다시 원점으로 돌릴 수도 있다. 작업량을 점검하여 누가 가장 효율적으로 일을 하고 있는지, 누가 일을 과도하게 하고 있는지도 파악하기 쉽다.
- 효율성: 테스트를 거친 프로젝트 관리 방법론을 따르면 프로젝트 시작 단계를 가속화하고 전체 프로젝트 일정 및 예산을 줄일 수 있다. 다른 프로젝트에서 배운 교훈도 적용할 수 있어, 프로젝트의 성공 가능성을 높일 수 있다.
폭포수 (Waterfall)
프로젝트의 각 단계에서 이전 단계가 끝나면 다음 단계를 수행하는 선형적이고 순차적인 방법이다.
프로젝트 시작부터 요구사항이 확실할 때 유리하고, 중요한 리소스를 제한적으로 이용할 수 있을 때 좋다.
폭포수 방법은 전통적인 개발 방법론으로
요구분석 -> 기획 -> 디자인 -> 개발 -> 테스트 -> 출시
의 순서대로 진행한다.
애자일 (Agile)
프로젝트 시작 시 요구사항을 정의할 수 없는 경우를 위한 방법이다.
프로젝트 팀과 클라이언트는 프로젝트 라이프사이클 전체에 걸쳐 협력하여 프로젝트 결과물의 범위를 지속적으로 조정한다.
애자일 방법은 유연성을 제공하며 불확실하거나 변화에 대해 신속히 대응해야하는 경우에 유리하다.
애자일 방법론에 대해서 좀 더 알아보자.
4가지 주요 특성
- 개인과 개인 간의 상호작용이 프로세스 및 툴보다 우선
- 작동하는 소프트웨어가 포괄적인 문서보다 우선
- 고객과의 협업이 계약 협상보다 우선
- 변화에 대응하는 것이 계획을 따르는 것보다 우선
애자일 프래임워크
Scrum, Kanban, XP(eXtreme Programming)
Scrum
오늘날 사용 중인 가장 대표적인 애자일 프래임워크이다.
Scrum은 스프린트라는 일정 기간 내에 완료할 수 있는 작업으로 업무를 분할하는 소규모 팀을 위해 설계된 작업 관리 프래임워크이다.
Scrum은 변하지 않는 역할, 책임 및 모임을 따른다. 예를 들어 스프린트 계획, 데일리 스탠드 업, 스프린트 데모 및 스프린트 회고와 같은 각 스프린트에 구조를 제공하는 4가지 의식을 요구한다. 각 스프린트 동안 팀은 작업 게시판이나 번 다운 차트와 같은 게시물을 사용하여 진행 상황을 보여주고 점진적 피드백을 받는다.
주요 특징
- 개발 주기는 1 ~ 4주 정도로 하고 개발 주기마다 실제 동작할 수 있는 결과를 제공해야한다.
- 개발 주기마다 적용할 기능이나 개선에 대한 목록을 제공해야한다.
- 항상 팀을 우선으로 생각해야한다.
장점
- 투명성과 프로젝트 가시성 향상
- 팀 책임성 증대
- 비용 절감 효과 증대
Scrum Process
- Product Backlog : 고객이 요청한 제품의 요구사항 들을 명세한다.
- Sprint Planning : Product Backlog를 우선순위에 따라 그룹 짓는다. Product Backlog를 수행하기 위한 자세한 사항들을 구체화시키고 향후 수행할 스프린트들에 분배 한다.
- Sprint Backlog : 특정 스프린트를 시작할 때 무엇을 해야할 지 결정하고 진행상황들을 표시한다.
- Sprint : 정해진 주기에 따라 개발을 진행하고 리뷰하는 하나의 개발 Cycle단위 이다. Scrum은 이러한 Sprint들을 수 없이 반복한다. Scrum Methodology를 적용하기 위한 환경 구축 등 개발환경에 대한 것들은 Sprint'0'에서 완료하고 이후의 Sprint들에서 Scrum을 적용한다.
- Sprint들을 반복하고 고객이 만족할만한 결과가 이루어졌을 때 배포한다.
Tools and Tethods in Scrum
- 스크럼 보드 : 스크럼 작업 보드로 Sprint Backlog를 시각화할 수 있는 보드이다. 전통적으로는 화이트보드, 포스트잇을 이용한 방법이 있고 소프트웨어로도 존재한다. 스크럼 보드는 일반적으로 수행할 작업 / 진행중인 작업 / 완료 의 세가지 범주로 나뉜다. 스크럼 팀은 전체 sprint동안 보드를 업데이트 해야한다.
- 사용자 스토리 : 고객의 관점에서 소프트웨어의 기능을 설명하는 문서. 사용자의 유형, 원하는 내용 및 원하는 이유 등이 포함된다.
- 번 다운 차트 : 모든 수행된 작업을 나타낸다. 남은 작업, 이상적인 진행률 등의 차트로 계획에 따라 일이 진행되지 않는 경우 팀에 경고하고 의사 결정에 영향을 준다.
Kanban
Kanban은 시각적 표시 또는 시각적 카드 의 일본어이다. Agile을 구현하는데 사용되는 시각적 프레임워크로서 시점 및 수행을 보여준다. 현재 시스템에 대한 작고 점진적인 변경을 권장하며 특정 설정이나 절차가 필요하지 않다.
기본 원칙
- 워크플로우 시각화 : 모든 작업을 표시함으로써 초기 문제를 식별하고 협업을 돕는다.
- 진행중인 작업 제한(Work-in-Process, WIP) : 작업 진행 제한은 워크 플로우에 대한 최소 및 최대 작업량을 결정한다. WIP에 제한을 두면 속도와 유연성을 높이고 작업 우선순위를 낮출 수 있다.
- 흐름을 관리하고 향상함 : 칸반 보드전반에 걸친 작업 흐름을 모니터링 하고 개선해야한다.
- 명시적 프로세스 정책 : 모든 사람들은 어떻게 작동하는지, 실제로 행해진 것이 무엇인지를 이해해야한다.
- 지속적으로 개선됨 : 칸반은 작고 지속적인 변경을 권장한다. 칸반 시스템이 갖추어지면 팀은 문제를 식별하고 이해하고 개선을 제안할 수 있다. 팀은 흐름 추적, 주기 시간 특정 및 작업 품질 향상을 통해 효율성을 측정한다.
장점
- 유연성 향상 : 칸반은 진화하는 유동적인 모델이다. 설정된 기간이 없으며 새로운 정보가 들어올 때 우선순위가 재평가 된다.
- 낭비 감소 : 칸반은 낭비를 줄이고 팀이 불필요한 작업을 하거나 시간을 낭비하지 않도록 한다.
- 이해하기 쉬움: 칸반의 시각적 특성은 매우 직관적이고 배우기 쉽다. 팀은 완전히 새로운 방법론을 배울필요가 없으며 칸반을 다른 시스템 위에 쉽게 구현할 수 있다.
- 전달 흐름 개선 : 칸반 팀은 고객에게 작업 흐름을 최적화 한다.
- 사이클 시간 최소화 : 사이클 시간은 팀 작업 흐름을 통해 작업을 이동하는 데 걸리는 시간이다. 칸반 프로젝트에서 전체 팀은 작업이 프로세스를 통해 신속하고 성공적으로 진행되도록 보장한다.
단점
- 일정 예상 어려움 : 칸반 보드의 열을 단계별로 표시되며 각 단계와 관련된 시간대가 없으므로 단계가 얼마나 오래 지속될 수 있는지 실제로 알 수 없다.
XP(eXtreme Programming)
애자일 방법론중 하나로 고객에게 최고의 가치를 가장 빨리 목표를 갖고 있는 방법이다.
소프트웨어 개발에서 기능성과 품질 역시 중요하지만, 개발 속도 또한 중요한 요소이다. XP는 개발 속도를 목표로 잡고 진행한다.
XP는 소프트웨어에 요구되는 기능과 특성을 얻기 위해 고객과 개발자 사이에 밀접한 협업이 강조되고 고객이 원하는 요구들을 지속적으로 피드백 한다.
사용자 스토리
XP의 경우 방대한 양의 문서를 줄이기 위해 사용자 스토리라는 방법을 사용하는데 이는 사용자가 원하는 구체적인 요구사항을 모두 적는것이 아니라 고객이 원하는 요구사항을 짧은 글로 표현해 놓은 것이다.
좋은 사용자 스토리
- 독립적이다
- 협상 가능하다
- 사용자와 고객에게 가치 있다.
- 추정 가능하다
- 작다
- 테스트가 가능하다
XP는 애자일 기법의 기본 원리를 따르며 점진적인 개발, 작고 빈번한 릴리즈, 단순한 설계, 리팩토링, 고객의 전적인 참여를 통해서 빠른 소프트웨어 개발을 목표로 한다.
개발 프로세스
- 사용자 스토리 : 사용자가 원하는 시스템의 기능을 작고 간단한 시나리오로 표현한다.
- 릴리즈 계획 수립 : 릴리즈란 사용할 수 있는 시스템을 고객에게 제공하는 것인데 이 단계에서는 시스템 개발이 완료되는 시점과 이를 완수하기 위한 일정을 계획한다.
- 이터레이션 : 릴리즈 계획에 따라 시스템을 구현하기 위해 프로젝트의 일정을 더 작고 상세하게 분할하고 이 단위를 이터레이션이라고 부른다. 이는 대부분 1~3주의 기간으로 이루어진다.
- 작은 릴리즈 : 작고 빈번한 릴리즈를 통해 반복적으로 고객에게 결과물을 전달하고 평가 받는다.
https://www.productplan.com/glossary/agile-framework/
https://looma1116.tistory.com/2