애자일(Agile), 스크럼 - 프로그램에 집중한 유연한 개방방식

애자일(Agile)

  • 소프트웨어를 배우는 사람이라면 이미 '애자일'(Agile)이라는 단어가 익숙할 테다. 애자일은 문서작업 및 설계에 집중하던 개발 방식에서 벗어나 좀 더 프로그래밍에 집중하는 개발 방법론이다. 애자일(Agile)이란 단어는 '날렵한', '민첩한'이란 뜻을 가진 형용사다. 애자일 개발 방식도 그 본래 의미를 따른다. 정해진 계획만 따르기보다, 개발 주기 혹은 소프트웨어 개발 환경에 따라 유연하게 대처하는 방식을 뜻한다. 애자일 개발 방식은 2000년대 초에 대두됐다. 1990년대에는 주로 많은 인원의 개발자가 오랜 기간 동안 소프트웨어를 개발하곤 했다. 예를 들어 항공기 제어 시스템을 개발하기 위해선 여러 회사나 기관에 있는 사람들이 모였고, 10년 이상 개발에 투자했다. 철저히 계획을 세우고, 해당 계획을 구체적으로 명시한 방대한 문서 작업도 뒤따랐다. 멀리 떨어져 있는 사람이 오랜 기간 동안 함께 개발 작업을 하려면 언제 어디서나 일관된 기준을 볼 수 있어야 했기 때문이다. 이같은 과거 개발 방식은 대형 소프트웨어 개발 프로젝트엔 적합할지 몰라도, 소규모 프로젝트에는 오히려 개발을 더디게 만드는 걸림돌로 작용했다. 2001년 2월, 변화의 움직임이 싹텄다. 17명의 소프트웨어 개발자가 '애자일 연합'을 결성해 좀 더 빠르고 유연한 개발 방식을 논의하기 시작한 것이다. 이들은 애자일 소프트웨어 개발이 무엇인지 정의하고, 애자일 소프트웨어 개발을 장려하기 위한 여러 활동을 시작했다. 당시 애자일 연합에서 선언한 내용은 다음과 같다.
  • 애자일 소프트웨어 개발 선언
    우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을 도와주면서 소프트웨어 개발의 더 나은 방법들을 찾아가고 있다.
    이 작업을 통해 우리는 다음을 가치 있게 여기게 되었다.
    공정과 도구보다 개인과 상호작용을 포관적인 문서봐 작동하는 소프트웨어를 계약 협상보다 변화에 대흥하기를
    가치 있게 여긴다. 이 말은, 왼쪽에 있는 것들도 가치가 있지만, 우리는 오른쪽에 있는 것들에 높은 가치를 둔다는 것이다.
  • 애자일 개발 방식은 계획과 개발, 출시와 같은 개발 주기가 여러 번 반복되며, 개발 환경에 맞게 요구사항이 추가되거나 변경된다. 결과적으로 애자일 소프트웨어 개발은 고객에게 좀 더 빨리 결과물을 내놓을 수 있고, 고객의 피드백에 민첩하게 반응할 수 있다. 애자일 방식은 사람을 앞세운 점에서도 주목받았다. 소프트웨어는 계획하면 무조건 만들어지는 것이 아니다. 인력이나 예산, 개발 환경과 다양한 외부 조건에 영향을 받는다. 애자일 방식은 개발 환경을 고려해 고객과 개발자를 중심에 뒀다. 고객이 개발 프로세스에 적극 참여해 작업 우선순위를 정하고 개발 과정을 평가하기도 한다. 계획에 집중하고 이를 강요하기보다는 개발자 능력에 따라 개발 환경이 유연하게 변경될 수 있도록 했다.

'익스트림 프로그래밍'과 '스크럼'

  • 애자일 방식은 소프트웨어 개발 방법론으로 쓰이지만, 그 자체가 독립된 개념으로 사용되기도 한다. 본래 형용사 의미를 활용해 '좀 더 가볍고 기민한 작업'을 이르는 표현으로 확장된 셈이다. 그래서 소프트웨어 개발에 집중한 세부적인 애자일 방법론이 따로 존재 한다. '익스트림 프로그래밍'과 '스크럼', '크리스탈 패밀리', '피처 드리븐 개발' 등이 여기에 포함된다. 2000년대 초반 성공 사례가 알려지면서 애자일 가치관을 사용한 여러 개발 방식이 생겨났다. 이 가운데 익스트림 프로그래밍은 애자일 개발 방법론을 널리 보급시킨 주역으로 꼽힌다. 줄여서 'XP'로 표현하기도 하는데, 애자일 선언에 참여한 켄트 백이 만들었다. 익스트림 프로그래밍은 소통과 단순함을 중요한 가치로 여기며, 고객의 요구사항이 자주 바뀌는 프로젝트에 자주 쓰인다. 소규모 개발팀이 진행하기 좋은 개발 방식으로 꼽히는데, 테스트 코드 중심으로 개발이 이뤄지는 것이 특징이다. 스크럼 역시 애자일 가치관을 잘 활용한 개발 방법이다. 스크럼은 보통 30일 단위로 개발 주기를 잡는데, 특정 언어나 방법론을 고집하지 않아 넓은 범위에서 응용되고 있다. 스크럼 개발 방식은 '스프린트'라는 용어를 따로 쓴다. 여기서 스프린트란 반복되는 개발 주기를 말한다. 특정 기간 동안 이루고 싶은 목표와 필요 작업을 명시하는 작업이 곧 스프린트 작업이다. 이와 별도로 '스프린트 백로그'는 특정 기간 동안 필요한 구체적인 작업 목록을 일컫는다.

skill list