안녕하세요, 서비스 기획자 완두콩입니다.
오늘은, 애자일 방법론의 유형에 대해 공부해보겠습니다.
크게 3가지 알아볼거예요! XP, 스크럼(SCRUM), 린(LEAN) 입니다.
먼저, 애자일 방법론에 대해 잘 모르시는 분들을 위해 간략하게 설명드리자면, '기획-디자인-퍼블-개발-테스트-유지보수' 의 절차를 반복 수행하며, 사람을 중심으로 변화에 유연하게 대처하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있도록 하는 방법론입니다. 폭포수 모델의 대비되는 개념이죠! 이럼에도 이해가 잘 안된다 싶으면 저의 이전 글을 한 번 읽어보세요!
XP(eXtreme Programming)이란, 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론으로, 1~3주의 반복(Iteration) 개발 주기를 가지며, 5가지 가치와 12개의 실천 항목이 존재합니다. 아래 정리해볼게요!
- XP의 5가지 가치
1. 용기(Courage) : 용기를 가지고 자신감 있게 개발(코드를 작성하기 전에 테스트, 빠르게 피드백, 테스트에 부합하지 못하는 코드를 리팩토링할 수 있는 용기)
2. 단순성(Simplicity) : 필요한 것만 하고 그 이상의 것들은 하지 않음
3. 의사소통(Communication) : 개발자, 관리자, 고객 간의 원활한 소통
4. 피드백(Feedback) : 의사소통에 대한 빠른 피드백
5. 존중(Respect) : 팀원 간의 상호 존중
- XP의 12가지 기본 원리
1. 짝 프로그래밍(Pair Programming) : 개발자 둘이서 짝으로 코딩하는 원리
2. 공동 코드 소유(Collective Ownership) : 시스템에 있는 코드는 누구든지 언제라도 수정 가능하다는 원리
3. 지속적인 통합(CI; Continuous Integration) : 매일 여러 번씩 소프트웨어를 통합하고 빌드해야 한다는 원리
4. 계획 세우기(Planning Process) : 고객이 요구하는 비즈니스 가치를 정의하고, 개발자가 필요한 것은 무엇이며 어떤 부분에서 지연될 수 있는지를 알려주어야 한다는 원리
5. 작은 릴리즈(Small Release) : 작은 시스템을 먼저 만들고, 짧은 단위로 업데이트한다는 원리
6. 메타포어(Metaphor) : 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자간의 의사소통을 원활하게 한다는 원리
7. 간단한 디자인(Simple Design) : 현재의 요구사항에 적합한 가장 단순한 시스템을 설계한다는 원리
8. 테스트 기반 개발(TDD; Test Driven Develop) : 작성해야 하는 프로그램에 대한 테스트를 먼저 수행하고 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성한다는 원리
9. 리팩토링(Refactoring) : 프로그램의 기능을 바꾸지 않으면서 중복제거, 단순화 등을 위해 시스템을 재구성한다는 원리
10. 40시간 작업(40-Hour Work) : 개발자가 피곤으로 인해 실수하지 않도록 이주일에 40시간 이상을 일하지 말아야 한다는 원리
11. 고객 상주(On Site Customer) : 개발자들의 질문에 즉각 대답해 줄 수 있는 고객을 프로젝트에 풀타임으로 상주시켜야 한다는 원리
12. 코드 표준(Coding Standard) : 효과적인 공동 작업을 위해서는 모든 코드에 대한 코딩 표준을 정의해야 한다는 원리
스크럼(SCRUM)은 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론입니다. 스크럼에서 사용되는 용어들을 간략히 정리해볼게요!
- 백로그(Backlog) : 제품과 프로젝트에 대한 요구사항
- 스프린트(Spring) : 2~4주의 짧은 개발 기간으로 반복적 수행으로 개발품질 향상
- 스크럼 미팅(Scrum Meeting) : 매일 15분 정도 미팅으로 To-Do List 계획 수립, 데일리 미팅(Daily Meeting)이라고도 함
- 스크럼 마스터(Scrum Master) : 프로젝트 리더, 스크럼 수행 시 문제를 인지 및 해결하는 사람
- 스프린트 회고(Sprint Retrospcetive) : 스프린트 주기를 되돌아보며 정해놓은 규칙 준수 여부, 개선점 등을 확인 및 기록, 해당 스프린트가 끝난 시점이나 일정 주기로 시행
- 번 다운 차트(Burn Down Chart) : 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트, 백로그는 보통 수직축에 위치하며 시간은 수평축에 위치
린(LEAN)은 도요타의 린 시스템 품질 기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론을 말합니다. 주로, JIT(Just In Time), 칸반(Kanban) 보드를 사용합니다. 또한 7가지 원칙(낭비제거, 품질 내제화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화)을 중요시합니다.
이처럼, 애자일 방법론에 대한 유형을 3가지 알아보았는데요! 실제로, 프로젝트를 진행하면서 사용하는 방법론에 이러한 3가지 유형을 대입해서 사용하면 정말 효율적인 프로젝트 관리를 할 수 있습니다. 꼭 각각에 맞는 방법을 사용한다기보다는, 프로젝트에 필요한 부분을 저 3가지 유형에서 잘 추출하여 적용시켜보면 될 거 같아요!!
감사합니다.