전공 공부/소프트웨어공학

[소프트웨어공학] 애자일 (Agile) 모델

Yujin Chang 2024. 10. 17. 17:10

정의

문서작업 및 설계에 집중하던 개발 방식에서 벗어나, 좀 더 프로그래밍에 집중하는 개발 방법론.

정해진 계획만 따르기보다, 개발 주기 혹은 소프트웨어 개발 환경에 따라 유연하게 대처하는 방식. 계획과 개발, 출시와 같은 개발 주기가 여러 번 반복되며, 개발 환경에 맞게 요구사항이 추가되거나 변경됨.

결과적으로 고객에게 좀 더 빨리 결과물을 내놓을 수 있고, 고객의 피드백에 민첩하게 반응할 수 있음. 기능은 비즈니스 가치 순서대로 구현하며, 일정은 주로 범위를 조절하며 관리함.

4대 선언

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

12가지 원칙

  1. 가치 있는 소프트웨어를 조기에 지속적으로 제공함으로써 고객을 만족시키는 것을 최고 우선순위로 한다.
  2. 개발 작업 후반부일지라도 요구사항 변경을 기꺼이 수용한다. 애자일 프로세스는 변화를 활용해 고객의 경쟁력에 도움이 되게 한다.
  3. 2주에서 2개월 주기로 작동하는 소프트웨어를 자주 제공하되, 더 짧은 시간 단위를 선호한다.
  4. 프로젝트 전반에 걸쳐 비즈니스 담당자들과 개발자들이 매일 함께 작업해야 한다.
  5. 동기가 부여된 개인들을 중심으로 프로젝트를 구성한다. 구성원들이 필요로 하는 환경과 지원을 제공하고, 담당 업무를 완수할 것임을 신뢰한다.
  6. 개발팀에 그리고 팀 내부에서 가장 효과적, 효율적으로 정보를 전달하는 방법은 대면 대화이다.
  7. 작동하는 소프트웨어가 진처의 주된 척도이다.
  8. 애자일 프로세스는 지속 가능한 개발을 장려한다. 스폰서와 개발자, 사용자들이 일정한 속도를 계속 유지할 수 있어야 한다.
  9. 기술적 탁월성과 좋은 설계에 대한 지속적인 관심으로 기민함을 향상시킨다.
  10. 단순성 - 아직 하지 않은 작업량을 최대한 세분화하는 기술 - 은 필수적이다.
  11. 최고의 아키텍처, 요구사항 및 설계는 자율구성팀에서 비롯된다.
  12. 팀은 정기적으로 더 효과적인 방법을 찾아서 반영한 다음, 그에 따라 업무 활동을 조율하고 조정한다.

장점

  • 유연성: 변화에 신속하게 대응 가능
  • 고객 만족도 향상: 지속적인 피드백 반영
  • 빠른 출시: 반복적 개발로 제품 조기 출시
  • 팀워크 강화: 협업과 소통 증진
  • 위험 감소: 정기적 검토로 문제 조기 발견

단점

  • 불명확한 최종 결과물: 초기 계획의 모호성
  • 문서화 부족: 지식 전달의 어려움
  • 시간 및 리소스 관리의 어려움
  • 이해관계자 참여 부담: 지속적 참여 필요
  • 대규모 프로젝트에 적용 어려움

vs 워터폴

  1. 접근 방식: 워터폴은 순차적, 애자일은 반복적
  2. 유연성: 워터폴은 경직, 애자일은 유연
  3. 고객 참여: 워터폴은 제한적, 애자일은 지속적
  4. 문서화: 워터폴은 상세, 애자일은 간소화
  5. 프로젝트 규모: 워터폴은 대규모에 적합, 애자일은 중소규모에 유리