[Plan] Agile 방법론
Agile 방법론
Agile Manifesto (핵심 가치)
공정과 도구보다 개인과의 상호작용
포괄적인 문서보다 작동하는 소프트웨어
계약 협상보다 고객과의 협력
계획을 따르기보다 변화에 대응하기
Agile 원칙 (요약)
- 개발 후반부라도 요구사항 변경 수용
- 짧은 주기(2주~2개월)로 작동하는 소프트웨어 전달
- 비즈니스 관계자와 개발자의 협력 중시
- 개발 팀 내부 효율적 소통 = 면대면 대화
- 진척 척도 = 작동하는 소프트웨어
- 지속 가능한 개발 속도 유지
- 기술적 탁월성과 좋은 설계에 대한 관심
- 단순성(안 하는 일의 양 극대화)
- 자기 조직적인 팀 구성
- 정기적으로 회고하여 효과성 개선
👉 12 Principles of Agile Software
Agile Software Development
- 유연성, 협업, 고객 만족을 중시하는 SW 개발 방법론
- Agile Manifesto에 기반
- 반복적(iterative) & 점진적(incremental) 접근법
- 빠르고 자주 작동하는 제품을 제공하는 것을 강조
Agile 개발 사이클
- Meet
- Plan
- Design
- Develop
- Test
- Evaluate
→ 6에서 다시 1로 순환하는 구조
Agile Practices
- Scrum: 짧은 반복 주기(sprint), 매일 stand-up, product backlog 관리
- Kanban: 보드 기반 시각적 관리 (작업 카드/스티키 노트 활용)
- CI (지속적 통합): 코드 변경 사항을 공유 저장소에 자주 병합 → 충돌을 조기 식별 및 해결
- TDD (테스트 주도 개발): 코드 작성 전 자동화 테스트를 먼저 작성 → 요구사항 충족 검증 & 결함 최소화
- Pair Programming (쌍 프로그래밍): 두 개발자가 함께 작업 → 코드 품질 향상, 지식 공유, 결함 감소
📌 참고: GeeksforGeeks - Agile Software Development
Waterfall 모델 (워터폴)
Agile 이전에 가장 널리 쓰였던 전통적 SW 개발 방법론.
각 단계가 순차적(one-way)으로 진행되어 이전 단계로 돌아가기 어렵다.
Waterfall 개발 단계
- 요구사항 분석 (Requirements)
- 설계 (Design)
- 구현 (Implementation)
- 테스트 (Verification)
- 배포 & 유지보수 (Maintenance)
특징
- 명확한 문서화와 단계별 산출물 중시
- 프로젝트 초기에 요구사항을 최대한 완벽히 정의해야 함
- 변경 사항 반영이 어렵고 비용이 큼
- 안정성과 예측성은 뛰어나지만 유연성은 낮음
Agile vs Waterfall 비교
| 구분 | Agile | Waterfall |
|---|---|---|
| 개발 방식 | 반복적·점진적 (Iterative & Incremental) | 순차적 (Sequential) |
| 요구사항 변경 | 수용 가능, 유연함 | 초기 정의 고정, 변경 비용 큼 |
| 결과물 전달 | 짧은 주기(2주~2개월)마다 작동 SW 제공 | 최종 단계에서 한 번에 제공 |
| 고객 참여 | 지속적 협력 | 초기 요구사항 정의 후 제한적 참여 |
| 문서화 | 최소한, 작동하는 SW 중심 | 문서화와 절차 중시 |
| 위험 관리 | 초기부터 지속적 피드백 | 후반에 문제 발견 가능성 ↑ |