스크럼(Scrum)
팀을 중심으로 개발의 효율성을 높이는 방법
- 팀원 스스로가 스크럼 팀을 구성하고, 개발 작업에 관련된 모든 것ㄷ을 스스로 해결 한다.
- 제품 책임자, 스크럼 마스터, 개발팀으로 구성
역할 소개
제품 책임자 (Product Owner)
- 개발될 제품의 이해도가 높고, 요구사항을 책임지고 의사 결정할 사람
- 요구사항이 담긴 백로그를 작성하고 우선순위를 선정
- 팀원이 백로그에 스토리를 추가할 수는 있어도, 우선순위를 선정하진 못함
< 백로그(Backlog) >
: 제품 개발에 필요한 모든 요구사항을 우선순위에 맞게 나열한 목록
스크럼 마스터 (Scrum Master)
- 스크럼 팀이 스크럼을 잘 수행 할 수 있도록 객관적인 시각에서 조언하는 사람
- 일일 스크럼 회의를 주관하여 진행 사항 검토, 장애요소 공론화 등을 수행
개발팀 (Development Team)
- PO, SM을 제외한 모든 팀원으로 개발자 외에 디자이너,테스터도 포함
- 최대 7~8명이 1팀으로 구성됨
진행 과정
1. 스프린트 계획 회의
- 백로그 중 이번 스프린트에서 수행할 작업을 대상으로 단기 일정 수립
- 요구사항을 Task로 나누고 스프린트 백로그를 작성
2. 스프린트
- 실제 개발을 진행하는 과정으로 2~4 주 기간에 진행
3. 일일 스크럼 회의
- SM 주관으로 모든 팀원이 매일 짧게 회의를 통해 진행 사항을 점검하고 남은 작업시간은 소멸차트에 기록
4. 스프린트 검토 회의
- 만든 결과물이 요구사항에 부합되는지 사용자가 포함된 참석자 앞에서 테스팅
- 스프린트의 한 주당 한 시간 내에 진행
- PO는 개선할 사항에 대한 피드백을 정리 후 백로그를 업데이트
5. 스프린트 회고
- 스프린트 주기를 돌아 보며 개선 사항을 확인 후 기록
- 해당 스프린트가 끝난 시점이나 일정 주기에 맞춰 진행
XP (eXtreme Programming)
수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정 반복을 극대화 하여 생산성을 향상 시키는 방법
- 짧고 반복적인 개발 주기, 단순한 설계, 고객의 적극적 참여를 통해 빠르게 개발하는 목적
- 릴리즈 기반을 짧게 반복하며 고객의 요구사항 반영에 대한 가시성을 높임
- 릴리즈 테스트마다 고객을 참여 시킴으로 요구한 기능이 제대로 작동하는 지 고객이 직접 확인 가능
- 소규모 프로젝트에 효과적
핵심 가치
- 의사소통
- 단순성
- 용기
- 존중
- 피드백
개발 프로세스

사용자 스토리
- 고객의 요구사항을 간단한 시나리오로 표현
- 기능 단위 구성으로 필요 시 간단한 테스트 사항 추가
릴리즈 계획 수립
- 몇 개의 스토리가 적용되어 부분적으로 기능이 완료된 제품을 제공(릴리즈)
- 부분 혹은 전체의 개발 완료 시점에 대한 일정 수립
스파이크
- 요구사항의 신뢰성을 높이고 기술 문제에 대한 위험을 감소시키기 위해 만드는 간단한 별도의 프로그램
- 처리할 문제 이외 다른 조건은 모두 무시한다
주기
- 하나의 릴리즈를 더 세분화 한 단위
- 일번적으로 1~3주의 기간 진행
- 새로운 스토리가 작성 될 수 있다.
승인 검사
- 하나의 주기 안에서 계획된 릴리즈 단위의 부분 완료 제품이 구현 되면 수행
소규모 릴리즈
- 릴리즈를 소규모로 하게 되면, 고객의 요구사항에 더욱 유연하게 대처 할 수 있다.
XP의 주요 실천 방법
Pair programming
Collective Ownership
- 개발 코드에 대한 권한과 책임을 공동으로 소유
Test-driven Development
- 실제 코드를 작성 하기 전에 테스트 케이스를 먼저 작성함
- 테스트가 지속적으로 진행될 수 있도록 자동화된 테스팅 도구 사용
Whole team
- 개발에 참여하는 모든 구성원은 각자 자신의 역할이 있고 그 역할에 책임을 지님
Continuous integration
- 모듈 단위로 나눠서 개발된 코드들은 하나의 작업이 마무리될 때마다 지속적으로 통합
Design improvement
- 프로그램 기능의 변경 없이 단순화 유연성 강화 등을 통해 시스템을 재구성
Samll Releases
- 릴리즈 기간을 짧게 반복하여 고객의 요구 변화에 신속하게 대응