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

폭포수 방법론(Waterfall 방법론)

: 각 작업이 폭포처럼 위에서 아래로 떨어지는 단계별 개발 방법론

 

💦 프로세스

  1. 요구사항 정의(설계) : 고객의 문제를 정의하고 요구사항을 문서화하여 정리
  2. 디자인 : 정리한 요구사항을 충족할 수 있는 제품을 설계하는 단계
  3. 개발 : 설계한 내용에 따라 본격적으로 제품을 구현하고 만드는 단계
  4. 테스트 : 만들어진 제품의 기능이 제대로 작동하는지 테스트하는 단계 (배포 전, 문제가 될만한 버그 및 오류 수정)
  5. 배포 : 최종적으로 결과물이 출시가 되고, 사용자에게 소프트웨어가 배포되는 단계

 

💦 장단점

☑️ 장점

  • 단계별로 업무를 분담하기 때문에 맡은 바가 명확함
  • 계획 단계의 문서화로 단계마다 소요되는 시간이나 현재 상황을 추적하고 병목을 파악하기도 쉬움

☑️ 단점

  • 속도가 느리고 유연하지 못함
  • 요구사항대로 기능을 만들었으나 수 개월이 지난 시점에서 시장상황이 변해 더 이상 고객이 그 기능을 필요로 하지 않는 경우도 발생할 수 있음

 

애자일 방법론(Agile 방법론)

 📌 애자일(Agile)은 ‘기민한, 민첩한’이라는 뜻.
  일정한 주기를 가지고 빠르게 제품을 출시하여 고객의 요구사항, 변화된 환경에 맞게 요구를 더 하고, 수정해나가는 탄력적인 방법론을 말함

 

⚙️ 프로세스

  • 짧은 사이클로 제품을 개발하고 테스트하고 피드백을 보완하는 방식인 스크럼(Scrum)을 주로 활용
  • 변화에 수동적으로 대처하기보다 변화를 하나의 고정값으로 전제하여 1~4주 작은 스프린트 단위로 디자인 → 개발 → 테스트를 진행

 

⚙️ 특징

  • 고객과 개발자의 지속적인 소통을 통하여 변화하는 요구사항을 신속하게 수용
  • 개발자 개인의 가치보다는 팀의 목적을 우선시하여 고객의 의견을 가장 우선시 함
  • 팀원들과의 주기적인 회의 및 제품 시현을 통한 방지를 점검
  • 진행하면서 프로그램을 시행해보고 고객으로부터 피드백을 받음
  • 내부 구조 형성을 통한 비용 절감에 힘쓰는 동시에 프로그램 품질 향상을 위해 노력

 

⚙️ 장단점

☑️ 장점

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

☑️ 단점

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

 

⚙️ 주요 애자일 방법론

☑️ Scrum

  • 프로젝트 관리를 위한 상호, 점진적 개발방법론으로 효율적인 협업 방법
  • 고객의 요구사항을 충족시키는 데 초점을 맞추기 위해, 목표를 짧은 주기로 점진적이며 경험적으로 시스템을 지속해서 개발(전달)하는 관리 프레임워크(기법)
  • 소프트웨어 개발 프로젝트들뿐만 아니라 소프트웨어 유지보수 팀이나 일반적인 프로젝트 관리에서도 사용될 수 있음

☑️ XP(eXtreme Programming)

  • 사용자의 요구사항을 한꺼번에 받는 방식이 아닌 반복형 모델의 개발 주기를 극단적으로 짧게 함으로써 프로그래머가 설계, 수현, 시험 활동을 전체 SW개발 기간에 걸쳐 조금씩 자주 시행하도록 하는 방법
  • 짧은 개발주기를 가지며, 프로토타입이 일찍 자주 만들어짐
  • 개발계획이 프로젝트를 진행하는 동안 계속 변화됨

'CS > Software Engineering' 카테고리의 다른 글

[CS] DevOps  (0) 2024.03.04
[CS] MSA(마이크로 서비스 아키텍처)  (0) 2023.12.16
[CS] 함수형 프로그래밍  (0) 2023.12.15
[CS] 객체 지향 프로그래밍  (0) 2023.12.15
[CS] TDD :: 테스트 주도 개발  (1) 2023.12.06