[소프트웨어 개발 방법론] 1탄: 애자일(Agile) 방법론

Infographic depicting the iterative process of software development, including planning, design, requirements, build, review, testing, and deployment stages.

애자일 방법론이란?

애자일 방법론은 소프트웨어 개발 및 프로젝트 관리에서 사용되는 체계적인 접근 방법론이다. 1900년대 초반 제조업에서 시작된 워터폴(폭포수) 방법론의 단점을 보완하기 위해 탄생한 방법론이다. 제조업에서는 설계서를 만들고 공정에 따라 다음 단계로 이동되면서 최종 제품이 만들어진다. 결함이 발생되면 이전 단계에서 수정을 거치게 되어 다음 작업이 보류된다. 애자일 방법론은 변화에 빠르게 대응하고 작동하는 소프트웨어를 위해 구성원 간의 원활한 커뮤니케이션, 계약 자체보다 고객과의 협력을 중시하는 방법론이다. 2000년대 초, 17명의 개발자가 공동 성명을 발표하며 공식 출범하였다.

 

애자일 소프트웨어 개발 선언

우리는 소프트웨어를 개발하고, 또 다른 사람의 개발을 도와주면서 소프트웨어 개발의 더 나은 방법들을 찾아가고 있다.
이 작업을 통해 우리는 다음을 가치 있게 여기게 되었다.

공정과 도구보다 개인과 상호작용을
포괄적인 문서보다 작동하는 소프트웨어를
계약 협상보다 고객과의 협력을
계획을 따르기보다 변화에 대응하기를
가치 있게 여긴다.

이 말은, 왼쪽에 있는 것들도 가치가 있지만, 우리는 오른쪽에 있는 것들에 더 높은 가치를 둔다는 것이다.
- Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler,
James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin
Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas
© 2001, 상기 저자들
이 선언문은 어떤 형태로든 자유로이 복사할 수 있지만, 본 고지와 함께 전문으로서만 가능하다.

A diverse team of professionals standing around a large board, collaborating and discussing various project details and charts.

 

애자일 선언에 입각한 주요 원칙과 가치

고객 만족을 최우선으로: 애자일은 고객의 요구를 이해하고, 그에 맞춰 제품을 개발하는 것을 중요시한다.
작동하는 소프트웨어 우선: 애자일은 일찍이 작동하는 소프트웨어를 개발하여 고객과의 빠른 피드백을 통해 제품을 지속적으로 개선한다.
개인과의 상호작용: 애자일은 팀 내부의 개인 및 팀 간의 원활한 소통과 협력을 강조한다.
변화에 대응: 애자일은 변화에 대한 대응력을 중요시하며, 유연한 계획과 개발 프로세스를 통해 적응한다.  

 

주요 애자일 방법론 종류


스크럼(Scrum): 스크럼은 짧은 개발 주기를 통해 지속적으로 제품을 개발하는 방법론으로, 백로그 관리, 스프린트 계획, 일일 스탠드업 미팅 등을 포함한다.
익스트림 프로그래밍(XP): 익스트림 프로그래밍은 소프트웨어 품질을 향상시키기 위해 페어 프로그래밍, 테스트 주도 개발(TDD) 등의 실천 방법을 강조한다.
칸반(Kanban): 칸반은 작업을 시각화하고 작업 흐름을 관리하는 방법론으로, 작업 별로 칸반 보드를 활용하여 작업 상태를 추적한다.

 

애자일 방법론의 장단점

장점

빠른 피드백을 통한 제품 품질 향상 : 워터폴의 경우 완제품 수준의 기획, 디자인을 거쳐 개발 이후 제품을 릴리즈하게 된다. 하지만 오랜 공수를 들여 제품을 출시했다 하더라도 시장에서 외면받을 수 있으며 이런 경우 회사의 리소스를 낭비한 꼴이 된다. 애자일은 MVP 형태로 제품을 신속하게 출시하여 데이터와 고객 피드백을 기반으로 빠르게 제품을 변화시킬 수 있다.

요구사항 변화에 대응 용이 : 제품을 출시하기 전까지 무수히 많은 의사결정의 번복과 피봇팅이 일어날 수 있다. 보통의 조직은 그러한 변화에 민감하며 코드를 다시 짜야한다거나 지금까지의 작업물이 무용지물이 되는 것에 허탈감을 느낀다. 하지만 애자일 문화가 정착한 조직은 변화에 유연하게 대처하며 더 나은 방향을 위해 기꺼이 받아들일 수 있다.

단점

프로세스 변화에 대한 조직적 저항 : 기존 워터폴 방식을 채택한 제품팀에서는 전혀 다른 프로세스에 대한 의구심 및 저항심이 발생할 수 있다. 애자일 방법론을 통해 업무 효율성 향상, 성공적인 제품 출시 이전까지는 저항심은 계속될 수 있다.

맞지 않은 옷을 입는 경우 : 조직 구조가 수직적이고 탑다운 방식의 업무 지시가 일어나는 조직에서는 워터폴이 적합하다. 유행을 따른답시고 애자일 방식을 무턱대고 채택했다간 체계가 무너지고 개발이 난항에 빠질 수 있다. 

잘못 적용된 사례 : 일각에서는 애자일이 정책도 문서도 없이 작업자들이 임기응변으로 후다닥 개발하면 된다고 착각하는 경우가 많다고 한다. 정책의 누락 시에도 기적의 단어 애자일을 외치며 "이제 정하면 되지 이게 애자일이잖아" 라며 자기 위로를 한다고. 이러한 사례 때문에 아직 국내에서는 애자일이 꿈같은 이야기라는 얘기가 나오는 게 아닌가 싶다.

 

애자일의 적용과 최적화

애자일 방법론은 유연성과 적응성을 통해 다양한 프로젝트에 적용할 수 있다. 그러나 프로젝트의 특성에 따라 적절한 애자일 방법론을 선택하고, 팀의 동료들과의 협력을 강화하며 지속적으로 프로세스를 개선하는 것이 중요하다. 또한 애자일과 워터폴 중 어떤 게 더 낫다고 할 수 없다. 조직마다, 프로젝트마다 더 맞는 방식이 있을 것이다. 다양한 방법론을 시도해 보고 조직에 맞는 방법론을 채택하는 것이 중요하다.