프로젝트 개발에 적합한 방법론을 무엇일까? 다양한 방법론이 있지만 가장 널리 알려진 waterfall, agile, lean의 장단점 및 언제 사용하는 것이 좋은지(특징) 알아봤다.
waterfall 폭포수라는 의미에서 알 수 있듯이 워터폴 방법론은 각 작업이 폭포처럼 위에서 아래로 떨어지는 단계별 개발 방법론이다. 아래 단계가 순차적으로 진행되고 이전 단계가 끝나면 다음 단계로 떨어지는 방식이다.
요구사항 정의(설계) > 디자인 > 개발 > 테스트 > 배포
애자일 방법론이 등장하기 전 소프트웨어 개발 뿐 아니라 자동차, 선박 등 보편적으로 사용되던 프레임워크로 대기업에서는 아직도 워터폴 방법론을 쓸 수 있지만 스타트업이나 프로젝트 효율을 생각할 때는 유연하게 대처하기 어려워 요즘은 거의 사용하지 않는 것 같다.
+ 체계화된 문서를 바탕으로 안정적으로 진행할 수 있다.
+ 각각의 단계가 완료된 후 다음 단계로 진행하기 때문에 리스크가 적다.
+ 팀 규모에 상관없이 따르기 쉽다.
+ 요구사항이 정의되어 있어 실행하기 수월하고 목표를 자주 변경하지 않아도 된다.
+ 초기에 필요 예산과 자원이 확정되기 때문에 예상결과와 리스크 통제가 쉽다.
- 요구사항 분석과 타당성 검토에 많은 시간이 소요된다.
- 협업의 경우 각각 개별 방안에 의해 진행된다.
- 고객과의 의사소통이 적다.
- 목표물이 후반부에 가야 가시화 된다.
- 개발 요구사항이 초기에 정해져 변경이 자유롭지 못하다.
애자일은 1970년대 윌리엄 로이스가 대형 소프트웨어 시스템 개발에 관해 제출한 논문에서 처음 증장했고 스프린트(sprint)라는 짧고 점진적인 개발 주기로 구성된 프로젝트 관리 방법론이다.
애자일 방법론은 4가지 기본 가치와 12가지 원칙에 바탕을 두고 있으며, 반복적이며 사람 중심적인 개발 방식을 취한다.
계획 > 설계 > 개발 > 테스팅 > 배포 > 피드백
애자일(Ailge)의 뜻은 민첩한이란 의미를 가져 애자일 방법론은 일정한 주기를 갖고 제품을 빠르게 출시해 고객의 요구사항, 변화된 환경에 맞게 요구를 더 하고 수정해나가는 탄력적이다.
+ 개발 과정이 빠르면서 유연하다. ★
+ 짧고 반복적인 스프린트로 구성되어있고 품질에 초점을 맞춰 결함을 빠르게 식별할 수 있다.
+ 여러 소규모 팀들이 개발 과정 상의 여러 과제를 각각 할당받아 처리한다.
+ 짧은 반복 과정을 거치므로 필요 시 개발과정 중 신속하게 제품 변경을 할 수 있다.
+ 계획 세우기에 과도한 시간과 비용을 투입하지 않는다.
+ 민첩하면서 효과적인 의사결정이 이루어지고 정보가 모두에게 높은 수준으로 공유된다.
- 빠른 반복 작업에 익숙한 숙련된 사람이 필요
- 수많은 변경사항이 있을 수 있어 번거로움 발생 가능
- 팀원이 자립성이 없거나 잘 조직되어 있지 않는 경우 애자일 방법론은 문제가 발생 할 수 있다.
추가로 '나는 애자일하게 일한다!' 라는 문구를 많이 보았는데 무슨 의미일까?
린 소프트웨어 개발 방법론은 도요타의 프로세스를 S/W 개발에 적용한 방법론으로 애자일 방법론과 비슷한듯 달라 어떤 차이가 있는지 알아봤다. 린 개발 방식은 개발 방법론이라기보다 린스타트업 이란 단어도 익숙하듯이 사고방식이라고 생각하는 것이 적합하다(Leat Thinking).
린은 낭비를 발견하고 제거하여 고객에게 가치를 빠르게 제공할 수 있을지에 생각한다. 린 방법론의 특징은 품질 기법 SW 개발 프로세스를 적용해 낭비요소 제거 7가지 개발원칙을 준수한다.
린에서 대표적인 낭비 요소
Transportation, Inventory, Motion, Waiting, Over Production, Over Processing, Defects/Rework
린 스타트업 프로세스 개념
아이디어 > 가설 > 설계 > 테스트 > 판단 (pivot으로 아이디어 단계로 돌아갈 수 있음: 가설 폐기) > 출시
(공통) 요구 사항의 변화를 적극적으로 수용
(공통) 제품을 고객에게 빠르게 전달해 고객 가치와 만족도를 높이는데 목적
(차이) 애자일은 개인 별 또는 팀 간 고객과 협업하고 빠른 개발을 수행하는 것에 초점(고객과 협업)
(차이) 린은 고객의 관점에서 전체 프로세스 상 낭비를 제거해 고객 가치를 높이는 것에 우선(전적으로 고객 관점)
린은 스크럼(scrum) 칸반(kanban)과도 비교되는데 다음 글에 알아본다.