바닥코딩

폭포수 vs 애자일 본문

방법론과 DevOps/방법론&협업관리

폭포수 vs 애자일

개발공부개발공부 2022. 9. 5. 22:17

소프트웨어 개발 프로세스

소프트웨어 개발 프로세스는 소프트웨어 제품을 개발하기 위해 필요한 과정 또는 구조를 일컷는 말입니다. 우리가 일반적으로 소프트웨어를 개발할 때의 과정에 대해 생각해보면  어떤 소프트웨어를 만들지 ? , 결정은 했는데 어떤 언어로 개발하지?  업무 분담은 어떻게 해야하지? 다 만들었으니 테스트 해봐야지 ... 등등 여러 과정을 거쳐 개발을 진행할 것 입니다. 

 사실 소프트웨어 개발 프로세스에 어떠한 정답은 없습니다. 소프트웨어를 개발하는 주체가 하는 일련의 과정들이 곧 프로세스이고 모든 소프트웨어는 과정을 거쳐 완성이 되게 됩니다. 

 그렇지만 매번 개발을 진행할때마다  즉흥적인 개발을 하는 것은 모험에 가깝습니다. 특히, 자본과 직결된 회사에서는 더더욱 해당되는 이야기일  것이고요... 이에따라 소프트웨어를 개발함에 있어, 개발팀은 통상적으로 알려지고 검증이 된 여러 개발 프로세스 모델을 채택해 개발하는 것이 중요합니다. 그 중 이번 포스트에서는 가장 많이 채택해서 사용하는 모델인 폭포수(waterfall) 모형과 애자일(Agile) 모형에 대해 알아보려 합니다

 

폭포수(Waterfall) 모형

 

 폭포수 모형 그림을 보면 마치 개발 과정이 위에서 아래로 떨어지는 폭포수 모양처럼 진행이 됩니다. 폭포수 모델은 소프트웨어 개발 과정을 요구분석, 설계, 구현, 테스트 , 유지보수 의 단계로 구분하고, 이를 순차적으로 이어 수행하는 프로세스 모델입니다.

 폭포수 모형은 가장 오래되고 널리 사용된 프로세스 모델입니다. 가끔 오래되고, 널리 사용된 모델이라는 말이 그게 중요해? 하고 간과할 수 있는데,  산출물을 내야하는 개발집단에서 검증이 된 모델이라는 것은 굉장히 중요한 개념입니다. 또한 가장 많이 사용되는 모델이기 때문에  참고할 수 있는 레거시가 많은 모델이기도 하며, 통상적으로 복잡하고 장기간 지속된는  프로젝트에 사용하는 것이 적합합니다.

 그렇지만 모든 프로세스는 단점이 존재합니다. 먼저 폭포수는 각 단계가 다음 시작전에 끝내야 된다는 특징이 있습니다 정형화된 이 구조가 개발을하는데 있어 장점으로 다가올 수 도 있지만 이미 구현 단계가 진행되고 잇는 경우라면  변경된 요구에 대한 변경을 수용하는 것은 어렵습니다. 또한 구현 및 테스트 이전에 단계에서는 프로토타입이 존재하지 않기 때문에 최종 결과가 나오기 전까지는 어떤 결과물이 나올지 예상하기가 어렵고, 클라이언트와의 소통에 어려움이 있을 수 있습니다. 이를 장단점으로 정리해본다면

장점

  • 안정적인 정형황된 구조를 제공한다 
  • 프로세스가 단순하여 팀원모두 쉽게 적용 가능하다 
  • 코드 생성 전 충분한 연구와 분석 단계 시간이 주어진다 

단점

  • 불필요한 다중의 문서를 생상할 가능성이 있다 
  • 프로세스 진행 과정에 있어  변경될 수 있는 내용을 수용할 수 없다 
  • 테스트 작업이 프로젝트 후반에 이루어진다  

로 볼 수 있겠습니다.

애자일 (Agile) 모형

 애자일은 날렵함, 민첩함 이라는 뜻을 가지고 있습니다. 이름처럼 애자일 프로세스는 클라이언트 요구에 민첩하게 대응하고 그떄 그떄 마주하는 문제들을 해결해 가는 특성을 지니고 있습니다

해당 그림에서 보면 애자일 프로세스는 스프린트 라는것이 반복이 되고, 그 스프린트는 테스트의 반복으로 이루어져 있는 것을 확인 할 수 있습니다.  애자일을 이해하기 위해선 먼저 애자일에서 사용되는 용어어 대해 알아야 합니다.

  • 스프린트 :  짧은 기간을 주기로 반복되는 애자일의 특성을 활용하기 위해 피드백을 받고 개발해 고쳐나갈 주기(보통 1~4주)
  • 백로그 : 요구사항 리스트
  • 스프린트 백로그 : 한개의 스프린트에서 개발한 백로그
  • 스크럼 : 애자일을 실천할 수 있는 도구 통상적으로는 스프린트 사이의 회의를 의미

애자일은 스프린트의 반복으로 진행됩니다 예를 들어 개발에 주어진 기간이 1달이라고 했을 때 개발팀은 개발에 필요한 백로그를 정의합니다. 이 백로그를 4번의 스프린트를 통해 개발을 할것이다 ~ 라고 약속이 된다면 총 4번의  1주 단위를 지닌 스프린트를 거쳐 개발은 진행이 됩니다. 개발팀은 각 스프린트마다 발생되는 백로그에 대한 스크럼을 진행하며, 이슈관리를 하고, 그 사이사이 들어오는 클라이언트의 요청에 대한 의사소통을 통해, 산출물을  수정하고 협의하며 이에대한 프로토타입을 작성하게 됩니다.

 애자일의 장점이라고 본다면 프로세스가 가진 유연한 특성입니다. 언제나 어떤 형식에 얽매이지 않고 코딩 테스트 작업을 통해 새로운 프로토타입을 제시할 수 있는 장점이있으며 클라이언트와의 소통이 원할하기 때문에 산출물의 퀄리티가 다른모형들에 비해 좋다고 평가받고 있습니다.

그렇지만 새롭게 반영되는 요구사항에 대한 처리와 신속성을 강조하는 모델인 만큼 흔히 개발자들을 죽이는 방법론이라는 비난을 피하지는 못했습니다. 또한 이 모델이 추구하는 잦은 소통과 미팅은 대형 프로젝트에 적합하지 않고 자칫 팀의 팀워크를 와해할 수 있다는 단점이 있습니다.