소프트웨어 개발 프로젝트 관리를 위한 agile software development의 개발 방법론의 하나이다. 개발 후, 소프트웨어의 유지보수에서도 사용될 수 있다.
초기 SW의 개발은 waterfall 방식, 즉 초기 단계에서 모든 계획을 다 작성하고 그것을 기반으로 개발, 테스트를 순차적으로 진행하는 하나의 큰 process로 이루어졌다.
반면에 최근 사용되는 agile 방식은 1주~4주간의 짧은 간격을 주기로 하나의 기능에 대한 계획/개발/테스트/완료의 process를 완성하는 형식으로 이루어지며,이러한 각각의 process는 스프린트(sprint)라고 부른다.
스크럼은 특정 언어나 방법론에 의존적이지 않아, 어떤 프로젝트에도 적용 시킬 수 있다.
scrum은 다음의 일련의 순서를 따른다.
사용자 또는 다른 stakeholders의 요구사항을 수집하여 구현해야 할 기능들을 story로 작성한다. 사용자 관점에서 작성되어야 하므로, 사용자가 이해할 수 있는 용어를 사용하여 작성하는것이 포인트다 (개발용어 남발금지).
해당 스프린트 주기에서 주어진 기능을 구현하기 위해 필요한 task list를 나열하고, 각각의 task 공수를 산정허여 멤버를 할당 한다. 이 단계에서 sprint backlog가 완성되고, 팀원들은 이에 따라 스프린트 주기 동안 개발을 진행하게 된다.
backlog들은 더 세부적으로 TO-DOs, DOING, DONE 으로 나누어 관리를 하게 된다. 이 때, Trello와 같은 Kanban 형식의 application을 사용할 수 있다 (포스트잇도 가능). 프로젝트를 진행하면서 수정/추가/삭제 해야할 부분이 생기면 반영할 수 있다.
매일 오전에 팀원 전원이 모여 10분정도 stand up 미팅을 진행하여, 개발 상황을 팀원들에게 공유 한다.
크게 3가지, 어제 한일/오늘 할일/문제점을 이야기(check-in) 한다. 문제점을 이야기 할 때는, 개발에서 어려운 부분이나 이슈 뿐만 아니라, 자신의 건강 상태나 신변에 관련된 일도 공유 할 수 있다. 포인트는 스프린트 진행에 걸림돌이 될 수 있는 부분은 사전에 팀원들과 공유하는 것이다.
스프린트 주기 동안 개발한 산출물을 팀원들이 돌아가면서 회고한다. 소스코드를 공유하면서 진행하여, 팀원들과 세세하게 개선사항들을 살펴보는 기회가 된다.
스프린트의 전체적인 회고를 한다. 산출물 뿐만 아니라 진행 방식과 같은 부분을 돌아보면서 개선점을 찾아 다음 sprint에 반영하도록 한다.