기술공부

[방법론] 소프트웨어 개발 방법론 비교(Agile, Watarfall, Scrum)

봉두두 2022. 4. 16. 17:17
728x90

여러 IT 기업에서 저마다 다른 소프트웨어 개발 방법론을 채택하고 있는데, 그 중 가장 많이 보이는 방법론은 Agile과 Scrum인 것 같다. 현 회사에서는 Agile 방법론을 채택해서 개발을 수행중인데... 사실 제대로 이루어지고 있지는 않은 것 같다.

각 방법론에는 어떤 차이가 있을까? 생산성을 어떻게 효율적으로 높이는걸까? 궁금해졌다. 


소프트웨어 개발 방법론이란?

위키백과에서는 아래와 같이 설명하고 있다.

소프트웨어 개발 방법론은 소프트웨어를 생산하는데에 필요한 프로그래밍 개발 과정들을 정리하고 표준화하여 프로그래머들이 프로그래밍 개발 과정에서 각 개인이 개발과정에서의 일관성을 유지하고 프로그래머들간의 효과적인 협업이 이루어질 수 있도록 돕기 위한 방법론이다.

 

전통적으로 사용되던 방법에는 폭포수 모델(Waterfall), 프로토타이핑(Prototyping), 나선적 모델(Spiral) 등이 있었는데, 1990년 후반 스크럼(Scrum)이 쓰이기 시작하고 애자일(Agile)이 2005년부터 쓰이기 시작했다.

 

폭포수(Waterfall) 방법론

[출처] https://www.mindsmapped.com/waterfall-methodology/

폭포수 방법론은 말그대로 위에서부터 아래로 물이 떨어지듯이 순차적으로 진행하는 것을 말한다. 이전 단계로 다시 거슬러 올라갈 수 없다. 한단계씩 앞으로 진행만 한다. 따라서 다음 단계로 가기 전에 완벽하게 요구사항을 반영하여 개발했다는 것을 전제로 한다.

 

폭포수 방법론의 단계는 상기 그림에서와 같이 5단계로 나누어진다.

요구사항 분석 → 설계 → 구현 → 검증(테스트) → 유지보수

 

각 단계별로 수행하면서 각 과정에 대한 이해가 용이할 수 있다는 장점이 있지만

엄청나게 치명적인 단점이 있다.

전제 자체가 "완벽하게 요구사항을 반영하여 개발했다"이기 때문에, 개발 도중에 요구사항에 대한 유연한 대처가 절대 불가하다는 것이다. 이럴경우 최악의 경우에는 요구사항에 대한 수정사항을 재검토하고 업데이트해서 설계부터 다시 진행을 해야될 수도 있다. (끔찍합니다..!!!!)

 

스크럼(Scrum) 방법론

스크럼은 프로젝트 관리를 위한 상호, 점진적 개발방법론이며, 애자일 소프트웨어 개발 중 하나이다. 소프트웨어 개발 프로젝트를 위하여 고안되었지만 소프트웨어 유지보수팀이나 일반적인 프로젝트/프로그램 관리에서도 적용될 수 있다.

 

 

스크럼의 가치

스크럼은 아래 다섯가지 가치에 중점을 두어 진행이 된다.

  • 확약 : 약속한 것을 확실히 실현
  • 전념 : 확약한 것의 실현에 전념
  • 정직 : 어떤 것이 자신에게 불리해도 숨기지 않음
  • 존중 : 자신과 다른 사람에게 경의를 표함
  • 용기 : 팀 구성원은 자신이 옳은 일을 할 수 있도록 팀원간 갈등과 도전을 통해 작업할 수 있는 용기

 

스크럼의 요소

스크럼은 30일간의 주기로 실제 동작하는 제품을 만들면서 개발을 진행시키지만, 스크럼의 적응도나 진행 상황에 따라서 1주에서 4주의 유연성을 가지고 수행된다.

  • 제품 백로그(Product Backlog) : 개발할 제품에 대한 요구사항 목록
  • 스프린트(Sprint) : 반복적인 개발주기(계획 회의부터 제품 리뷰가 진행되는 날짜까지의 기간이 1 Sprint)
  • 스프린트 계획 회의(Sprint Planning Meeting) : 스프린트 목표와 스프린트 백로그를 계획하는 회의
  • 스프린트 백로그(Sprint Backlog) : 각각의 스프린트 목표에 도달하기 위해 필요한 작업 목록
  • 일일 스크럼 회의(Daily Scrum Meeting) : 날마다 진행되는 미팅(어제한일, 오늘할일, 장애현상 등 공유)
  • 실행 가능한 제품(Shippable Product) 개발 : 스프린트의 결과로서 나오는 실행 가능한 제품

 

역할자

스크럼 진행에 있어서 개발 팀원 외에 아래와 같은 직책(역할)이 정의되어 있다.

  • 제품 책임자(Product Owner) : 스프린트 목표와 백로그등의 결정에 있어 중심이 되는 상위과리자. 제품 백로그를 정의하여 우선순위를 정해줌. PO이더라도 독단적으로 목표를 결정하지 않고 고객과 관리자 및 팀원들이 모여 목표를 정함.
  • 스크럼 마스터(Scrum Master) : 프로젝트 관리자(코치). 일반적인 관리를 수행하는 프로젝트 관리자들과는 달리 팀원을 코칭하고 프로젝트의 문제 상황을 해결하는 역할을 함.

 

이제 상기 요소와 역할에 따라 아래와 같은 순서로 스크럼을 진행한다.

  1. 제품에서 요구하는 기능과 우선순위를 제품 백로그로 정함
  2. PO가 정한 제품의 우선순위에서 어디까지 작업을 할지 팀과 조율함. 이때 조율하여 선정된 제품 백로그가 이번 스프린트의 목표가 됨.
  3. 스프린트 목표를 구현 가능하도록 팀에서 스프린트 백로그를 작성한 뒤 작업을 할당함
  4. 스프린트를 진행하는 동안 매일 정해진 장소와 시간에 모든 개발 팀원이 참여하는 일일 스크럼 회의를 가짐
  5. 매회 스프린트가 종료할 때마다 스프린트 리뷰미팅을 통해 만들어진 제품을 학습하고 이해함
  6. 제품의 학습과 이해가 끝나면 스프린트 회고를 통해 팀의 개발 프로세스에 대한 개선의 시간을 가짐
  7. 스프린트 기간 중 다음 스프린트를 준비하기 위해 PO와 필요 인원이 모여 백로그를 준비하는 시간을 가짐

 

스크럼 개발론은 개발 도중에 요구사항이 변경되었을 경우 해당 요구사항을 반영하기 용이하고, 개발하면서 지속적으로 테스트가 되기 때문에 개발 초기에 버그를 발견하기 용이하다는 장점이 있다.

 

애자일(Agile) 방법론

애자일 방법론은 요구사항이 변화하는 것을 당연한 전제로 두고, 변화하는 요구사항에 민첩하게, 기민하게, 날렵하게 대응하며 개발을 수행하는 방법에 대한 이론이다. 문서에 의존하지 않고 code oriented를 통해 보다 효율적인 개발을 지향하려는 목적으로 탄생했다.

애자일 개발 프로세스란 특정 방법론을 가리키는 것이 아닌 '좋은 것을 빠르고 낭비없게 만드는' 다양한 방법론 전체를 일컫는다. 그 예로서 상기에서 설명했던 Scrum, 익스트림 프로그래밍(XP), 칸반(Kanban)등이 있다.

 

 

Reference

728x90
728x90