본문 바로가기
Study-Note/정보처리기사

[소프트웨어공학] 애자일 방법론(Agile Development)

by Ji-u 2024. 10. 23.

 

정의

고객 요구 변화에 빠르게 대응하고 소프트웨어의 품질을 지속적으로 개선하는 데 강점을 가진 소프트웨어 개발 방법론

 

애자일 방법론의 핵심 개념

- 반복적, 점진적 개발
      1. 전체 프로젝트를 여러 개의 작은 반복 주기(Sprint 또는 Iteration)로 나누어 개발
      2. 반복적 개발을 통해 프로젝트 초기의 요구사항 변경에도 유연하게 대처
- 고객과의 협력
      1. 요구사항을 적극적으로 반영, 지속적인 피드백 반영
      2. 고객과의 긴밀한 협력으로 최종 제품이 고객의 기대에 부합하게 됨
- 적응적 계획
      1. 상황에 맞게 유연하게 변경
      2. 계획은 각 스프린트 마다 조정, 단기 목표를 설정하여 계획을 세움
- 작동하는 소프트웨어
      1. 문서화보다 작동하는 소프트웨어를 우선시 함
      2. 빠르게 배포하고 자주 개선하는 방식을 통해 품질을 높임
- 팀의 자율성과 협업
      1. 자율적인 팀 구성과 상호 협력 강조
      2. 팀 내에서 매일 소통하며, 스프린트마다 회고를 통해 작업 방식 개선

 

애자일 4대 가치 (Agile Manifesto)

1. 프로세스와 도구보다 사람과 상호작용을 더 중시한다
2. 포괄적인 문서화보다 작동하는 소프트웨어를 더 중시하다
3. 계약 협상보다 고객과의 협력을 더 중시한다
4. 계획을 따르는 것보다 변화에 대응하는 것을 더 중시한다

 

 


애자일 12가지 원칙

- 고객 만족을 위해 지속적으로 소프트웨어를 제공한다.
- 변경 요구는 언제든지 환영하며, 고객의 경쟁 우위를 위해 받아들인다.
- 짧은 주기로 자주 소프트웨어를 배포한다.
- 비즈니스 담당자와 개발자는 프로젝트 전체에서 긴밀히 협력해야 한다.
- 프로젝트는 동기 부여된 사람들을 중심으로 구성되어야 한다.
- 직접적인 대화가 가장 효과적인 커뮤니케이션 방법이다.
- 작동하는 소프트웨어가 진척도를 측정하는 가장 중요한 척도이다.
- 애자일 프로세스는 지속 가능한 개발을 촉진한다.
- 기술적 우수성좋은 설계에 지속적으로 집중한다.
- 최소한의 작업량으로 최대의 결과를 도출한다.
- 팀은 자율적으로 개선하는 과정에서 최적화된 성과를 낸다.
- 팀은 정기적으로 회고를 통해 작업 방식을 개선한다.

 

 


애자일 방법론의 대표적인 기법

- 스크럼(Scrum)
      1. 짧은 주기의 스프린트를 통해 작업을 나누고 각 스프린트의 목표를 달성하는 방식
      2. 스크럼 마스터, 프로덕트 오너, 개발 팀 등의 역할이 명확하게 정의
      3. 매일 짧은 데일리 스크럼을 통해 진행 상황을 점검, 스프린트 회고를 통해 작업을 개선
- XP(Extreme Programming)
      1. TDD와 페어 프로그래밍을 강조하는 기법
      2. 짤븡ㄴ 주기로 피드백을 받아 소프트웨어 품질을 높이고, 지속적인 테스트와 리팩토링을 통해 코드 품질을 개선
- 칸반(Kanban)
      1. 비주얼 작업 관리 도구로 작업의 흐름을 시각화하여 작업의 진행 상황과 병목을 파악
      2. 작업 항목을 보드에 나열하고 진행 상황에 따라 작업을 옮기며 관리하는 방식
- 스프린트(Sprint)
      1. 2~4주의 짧은 개발 기간

- 번 다운 차트(Burn Down Chart)
      1. 백로그 대비 시간을 그래픽적으로 표현한 차트
- 백로그(Backlog)
      1. 제품과 프로젝트에 대한 요구사항
- 스크럼 미팅
      1. 매일 15분 정도 미팅


장점

- 유연성
- 빠른 피드백
- 고객 만족
- 위험 관리
- 팀워크 증대

 

 

단점

- 규모가 큰 프로젝트에는 적용이 어려움
- 고객의 적극적인 참여가 필요
- 문서화 부족