개발공부/CS

[CS] 애자일 방법론

sohee! 2024. 7. 16. 23:10

개발을 하다 보면 '애자일'이라는 단어를 자주 맞닥뜨리게 된다. 현재 많은 IT 조직들에서, 많은 프로젝트들에서 애자일 방법론을 이용해 개발을 하고 있기 때문이다! 

나도 Zira를 이용하며 스프린트 단위로 프로젝트를 관리하는 애자일 방법론을 사용해 프로젝트를 진행해 보기도 했지만, 정확한 용어를 알고 쓰고 싶어서 애자일 방법론이 무엇인지, 다른 방법들과는 어떤 차이점이 있는지 정리하며 공부해보고자 쓰는 글이다-! ✨


💡애자일(Agile) 방법론이란?

[배경]

소프트웨어 개발방법론 중 하나로, 2001년 Agile 선언문에 의해 용어가 탄생했다. 배경에는 폭포수(Waterfall) 모델과 같은 기존의 개발 방법론이 소프트웨어 개발 방식에는 맞지 않아, 이를 해결하고자 고안되었다.

현재 많은 IT 조직 개발 환경은 애자일 방법론의 영향을 받았고, 실천하고 있다.

[정의]

애자일(Agile)은 ‘기민한, 민첩한’이라는 뜻을 가진 영어단어로,

애자일 방법론이란 일정한 주기를 가지고 빠르게 제품을 출시하여 고객의 요구사항, 변화된 환경에 맞게 요구를 더하고 수정해나가는 탄력적인 방법을 말한다. 

  • 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론이다.
  • 개발시간이 짧고 신속하며 폭포수 방법론에 대비되는 방법론으로 개발과 함께 즉시 피드백을 받아 유동적으로 개발할 수 있다.

 


 

애자일 선언문

  • 공정과 도구보다 개인과 상호작용
  • 포괄적인 문서보다 작동하는 소프트웨어
  • 계약 협상보다 고객과의 협력
  • 계획을 따르기보다 변화에 대응하기

🌊 폭포수(Waterfall) 방법과의 차이점

앞서, 애자일 방법론이 나오게 된 배경이 폭포수(Waterfall) 모델과 같은 기존의 방법론들이 IT 분야의 개발 방식과는 맞지 않아서라고 했는데, 그럼 폭포수 방법과 차이점을 비교해서 특징을 살펴보면 애자일 방법론에 대해 더 잘 알 수 있을것이다.

 

폭포수(Waterfall) 방법

  • 개발 생명 주기를 '폭포수'가 내려오는 것처럼 순차적으로 일련의 단계로 나누어 개발하는 방법
  • 각 단계는 이전 단계의 결과물을 입력으로 받아 다음 단계의 결과물을 출력하는 구조를 가지고 있다. 원칙적으로 완료된 단계(이전 단계)로 돌아갈 수 없다.
  • 요구사항 분석 -> 설계 -> 개발 -> 테스트 -> 유지보수 단계

 

⚡️ 폭포수 vs 애자일

 https ://hanseul-lee.github.io/2020/11/29/20-11-29-Agile/

분류 폭포수 방법론(Waterfall Methodology) 애자일 방법론(Agile Methodology)
개요 계획 중심, 선형적인 개발 방법 반복적이고 점진적인 개발 방법
프로세스 단계별로 엄격하게 분리된 개발 단계 반복적인 개발 단계
요구사항 초기에 명확하게 정의하고 변경 어려움 유연하게 대처 가능
테스트 개발 완료 후 테스트 개발 초기부터 테스트
방향성 예측 가능한 방향성 변경 가능한 방향성
비용 변경 및 오류 수정 비용이 높음 초기 비용이 낮으나 유지보수 비용 높음
적용 분야 큰 규모의 프로젝트 중간, 작은 규모의 프로젝트
장점 명확한 계획과 예측 가능성, 문서화 용이성 요구사항 변경 대처 용이, 고객 요구사항 반영
단점 변경 어려움, 유연성 부족, 반응성 떨어짐 계획 변경 어려움, 초기 비용 낮지 않음

 

 

💡 차이점: 수행 단계의 반복

  • 폭포수 방법론: 하나의 단계를 완료하면 이전 단계로 돌아갈 수 없다. 폭포수처럼 아래로 흐를 수만 있다!
  • 애자일 방법론: 일정한 주기를 가지고 반복해나가면서 수정, 보완을 지속한다!

 

💻 애자일 방법론의 종류

애자일 방법론의 종류로는 대표적으로 스크럼(Scrum), 칸반(Kanban), XP(eXteam Programming)이 있다.


☑️ 애자일 방법론의 장/단점

⭕️ 장점

  • 프로젝트 계획에 걸리는 시간을 최소화할 수 있다.
  • 점진적으로 테스트할 수 있어서 버그를 쉽고 빠르게 발견할 수 있다.
  • 계획 혹은 기능에 대한 수정과 변경에 유연하다.
  • 고객 요구사항에 대한 즉각적인 피드백에 유연하며 프로토타입 모델을 빠르게 출시할 수 있다.
  • 빠듯한 기한의 프로젝트를 빠르게 출시할 수 있다.

❌ 단점

  • 확정되지 않은 계획 및 요구사항으로 인한 반복적인 유지보수 작업이 많다.
  • 고객의 요구사항 및 계획이 크게 변경될 경우 모델이 무너질 수 있다.
  • 개인이 아닌 팀이 중심이 되다 보니 공통으로 해야 할 작업들이 많을 수 있다. (회의, 로그 등)
  • 반복적인 업무로 속도는 빠를 수 있으나 미흡한 기능들에 대한 대처가 필요하다.
  • 확정되지 않은 계획으로 개발 진행 시 이해하지 못하고 진행하는 부분이 많을 수 있다.

📌 참고 링크

 

애자일과 워터폴 방법론 비교 | 정의, 차이, 장단점, 적합한 조직 - 코드스테이츠 공식 블로그

애자일 방법론의 출발은 소프트웨어 개발 방식이었지만 이제는 제품 개발을 넘어 하나의 일하는 방식, 워크플로우로 자리 잡았습니다. 대표적인 프로덕트 개발 방법론인 애자일 방법론을 소개

www.codestates.com

 

 

[CS] 애자일(Agile) 방법론

요구가 들어오면 바로 바로 개발에 착수하고, 요구가 변경되면 즉시 피드백하여 다시 개발에 착수하는 방식

velog.io

 

 

💡 '애자일(Agile) 방법론' 이란? - feat. TDD

개발에 대한 공부를 시작하면서 종종 보였던 단어, 'Agile' 뭔지는 모르겠지만 '애자일 방식으로..' '애자일 조직..' '애자일에 기반하여....''애자일...''애ㅈ...' 아무튼 엄청 많이 언급되는 단어였다

velog.io