지난 게시글에서 애자일 모형(Agile Model)의 대표적인 개발 모형에 스크럼(Scrum), XP(eXtreme Programming), 칸반(Kanban), Lean, 기능 중심 개발(FDD)이 있는 것을 보았다. 이 중 스크럼 기법과 XP 기법이 어떤 것이고 어떠한 과정을 가지고 있는지, 어떤 식으로 실천되는지에 대해 알아보려고 한다.
스크럼 기법과 XP 기법의 정의
먼저 스크럼 기법에서 스크럼이란 럭비에서 반칙으로 인해 경기가 중단되었을 때 양 팀의 선수가 럭비공을 가운데 둔 상태로 상대팀을 밀치기 위해 대치하고 있는 대형을 일컫는 용어이다. 따라서 팀의 중요성을 강조하는 용어라고 할 수 있으며 여기서 착안한 스크럼 기법은 개인이 아닌 팀을 중심으로 하는 기법이다. 팀원 스스로가 구성한 스크럼 팀을 중심으로 개발 작업에 대한 모든 사항을 스스로 해결해 나가며 개발의 효율성을 높이는 개발 방법이다. 팀 구성원으로는 제품 책임자(Product Owner), 스크럼 마스터(Scrum Master), 개발팀(Development Team)이 있으며 제품 책임자는 요구사항에 우선순위를 부여해 주는 주체이며 소프트웨어 개발 의뢰자, 개발자, 사용자로 구성된 이해관계자들 사이에서 개발될 제품에 관한 이해도가 가장 높으면서 책임지고 의사를 결정할 수 있는 사람으로 선정한다. 스크럼 마스터는 스크럼 팀이 스크럼 방법을 잘 수행할 수 있도록 팀을 가이드해주는 역할이며 개발팀의 경우 이 둘을 제외한 나머지 팀원으로 직접 개발을 수행한다. XP 기법은 고객이 제시하는 요구사항에 대한 유연한 대응을 위해 고객의 참여도와 개발 과정의 반복을 아주 극대화하여 개발의 생산성을 향상하는 방법이다. 때문에 짧지만 반복적인 개발 주기를 가지며 설계가 단순하지만 고객의 적극적인 참여가 이루어지면서 소프트웨어의 개발이 빠르게 이루어지도록 하는 것을 목적으로 한다. 부분적인 기능 완료를 뜻하는 릴리즈의 기간이 짧게 반복되고 이는 요구사항을 직접 눈으로 볼 수 있기 때문에 고객의 입장에서 가시성이 높아진다. 5가지 핵심 가치로는 의사소통(Communication), 단순성(Simplicity), 용기(Courage), 존중(Respect), 피드백(Feedback)이 있다.
두 기법의 개발 프로세스
먼저 스크럼의 개발 프로세스를 살펴보면 첫 번째로 스프린트 계획 회의 (Sprint Planning Metting) 을 진행한다. 이는 제품 개발의 요구사항을 우선순위에 따라 목록으로 정리해 둔 제품 백로그 중에서 이번 스프린트에 어떤 작업을 수행할지에 대해 단기 일정을 수립하는 회의이다. 회의 후 스프린트(Sprint) 과정을 거치게 된다. 이 과정은 실제 개발 작업을 진행하는 단계로 보통 2~4주 정도의 기간 내로 진행한다. 다음 단계는 일일 스크럼 회의(Daily Scrum Metting)이다. 이 단계에서는 모든 팀원들이 매일 정해진 시간에 약 15분 동안 회의를 하게 되는데 이때 회의 주제는 진행 상황이 된다. 또한 남은 작업 시간을 소멸 차트에 표시한다. 네 번째 단계는 스프린트 검토 회의(Sprint Review)이다. 이때는 테스트를 진행하게 되는데 부분 또는 전체의 완성된 제품이 요구사항에 맞게 잘 수행되고 있는지 확인한다. 마지막으로 스프린트 회고(Sprint Retrospective) 단계에서는 팀이 정해둔 규칙을 잘 준수하고 있는지 여부와 개선점을 확인하고 기록하는 과정을 거친다. XP의 프로세스는 4단계를 거친다. 우선 릴리즈 계획을 수립한다(Release Planning). 이 단계에서는 일정을 수립하는데 이 때 부분 혹은 전체적인 개발의 완료 시점을 확인한다. 여기서 몇 개의 스토리가 적용되면서 기능이 부분적으로 완성된 제품을 제공하는 것을 릴리즈라고 한다. 다음 단계는 이터레이션(Iteration)으로 주기라고도 한다. 이때는 실제 개발 작업을 진행하는데 보통 1~3주의 기간으로 진행한다. 승인 검사 단계(Accesptance Test)는 인수 테스트라고도 하며 이때 부분적으로 완료된 제품을 테스트한다. 마지막으로 소규모 릴리즈(Small Release) 단계를 거치게 되는데 이 단계에서는 요구사항에 대한 유연한 대응을 위해 릴리즈의 규모를 축소하는 것을 의미한다.
XP의 주요 실천 방법
XP의 주요 실천 방법에는 7가지가 있다. 첫 번째 방법은 짝 프로그래밍(Pair Programming)이다. 이 방법은 혼자 프로그래밍을 하는 것이 아니라 다른 사람과 함께 개발을 진행하여 개발에 대한 책임을 공동으로 나누어 가지는 환경을 조성하게 된다. 공동 코드 소유(Collective Ownership) 방식은 개발한 코드에 대한 권한 및 책임을 공동으로 소유하는 방법이다. 테스트 주도 개발(Test-Driven Development)은 개발자가 실제로 코드를 작성하기 전 테스트 케이스를 우선적으로 작성하는 방식으로 이 때 개발자는 자신이 무엇을 해야 하는지에 대해 정확히 파악할 수 있다. 테스트가 주도적인 기능이 되기 때문에 이를 지속적으로 진행할 수 있게 하기 위해 자동화 테스팅 도구인 구조, 프레임워크를 사용한다. 전체 팀(Whole Team)은 역할과 책임에 대한 내용이다. 개발에 참여하는 모든 구성원들이 각자 맡은 역할에 대한 책임을 가져야 한다는 것이다. 계속적인 통합(Continuous Integration)은 모듈 단위로 작업되어 개발된 코드들을 하나의 작업이 마무리 되는 시점에 지속적으로 통합해야 한다는 것이다. 리팩토링(Refactoring)은 프로그램의 기능에는 변경이 없지만 시스템을 재구성하는 방법이다. 이는 프로그램을 좀 더 쉽게 이해할 수 있도록 수정하는 과정을 거쳐 추후에 수정 사항이 생길 경우 빠르게 개발할 수 있게 하기 위함이다. 마지막으로 소규모 릴리즈(Small Release) 방법은 릴리즈 기간을 짧게 반복하여 고객이 요구하는 사항들이 변화되어도 신속하게 대응할 수 있도록 하는 방법이다.
댓글