2014.12.18

ITWorld 용어풀이 | 애자일 개발

신수정 기자 | ITWorld
애자일(Agile)은 '민첩한', '생각이 재빠른, 기민한' 이라는 사전적인 의미를 갖고 있습니다. 애자일 개발(Agile development) 역시 이와 크게 다르지 않습니다. 애자일 개발은 변화에 신속하고 유연하게 대응하는 개발 방법론을 가리키는 말입니다.



애자일 개발은 소프트웨어의 개발 방법론 중 하나로, 과거 형식주의적 절차에 얽매였던 비효율적인 소프트웨어 개발 관습을 타파하기 위한 방안으로 제시된 것입니다.

폭포수 모델(Waterfall model)이나 계획 기반 개발(Plan-driven development)과 같은 전통적인 개발 방법들은 철저한 사전 계획 단계와 절차 기반으로 진행되었습니다. 특히, 폭포수 모델은 폭포에서 물이 위에서 아래로 떨어지는 것처럼 설계, 구현/코딩, 통합, 디버깅, 설치 등 개발 과정 하나하나를 정확하게 밟아 프로젝트를 진행하는 방식입니다.

이처럼 폭포수 모델은 충분한 설계 과정과 철저한 문서화 과정이 없다면 소프트웨어 프로젝트에 어려움이 따른다는 전제 하에 매우 정형화된 개발을 강조합니다. 계획 기반 개발도 마찬가지 입니다. 소프트웨어 개발을 좀 더 효율적으로, 계획적으로 하기 위해 사전 기획 단계를 철저하게 하는 것입니다.

하지만 이러한 절차적인 개발 방식을 그대로 따르는 것은 매우 어렵습니다. 예를 들어, 많은 경우 고객은 개발팀에게 애초에 계획된 것과는 다른 요구를 추가하곤 합니다. 이처럼 수정 사항이 빈번하게 발생할 경우, 전통적인 개발 방법을 고수한다면 변동사항이 생길 때마다 처음으로 돌아가야 하는 문제가 생깁니다. 비효율적인데다, 시간과 노력이 지나치게 많이 들게 되는 것입니다.

이러한 문제를 해결하고자 등장한 것이 바로 애자일 방법론입니다. 애자일 방법은 계획이나 문서가 아닌, 실질적인 코딩 작업을 더 중요시합니다. 폭포수 방법론이 ‘백년대계’라면 애자일은 ‘임기응변’에 가깝다고 할 수 있습니다. 변화가 일어날 때마다 민첩하게 고객의 요구를 반영한 프로토타입을 만들고 다시 의견을 반영해 수정하는 것을 반복하며 개발을 진행하는 것입니다.

애자일 방법론의 대표적인 것으로는 익스트림 프로그래밍(Extreme Programming)과 스크럼(Scrum)이 있습니다.

익스트림 프로그래밍 의 목적은 고객의 요구를 ‘빠른 시간’ 내에 완벽하게 전달하는 것입니다. 특히, 자주 바뀌는 고객의 요구 사항에 빠르게 대처하기 위해 고객과 개발자 사이의 원활한 소통을 강조합니다. 애자일에서는 이러한 ‘소통’을 ‘프로토타입(prototype)’과 동일시합니다. 프로토타입이란 최종 결과물이 아닌 그 이전의 미완성 작품으로, 고객의 의견이 반영될 때마다 최종 결과물에 가까운 것으로 거듭합니다. 익스트림 프로그래밍 는 적은 인원의 개발 프로젝트에서 선호됩니다. 왜냐하면 XP의 가장 큰 특징인 ‘테스트 코드 기반의 개발’은 프로토타입 작성에 있어 코딩과 디버깅 작업을 동시에 진행할 수 있기 때문입니다. 
한편, 스크럼은 특정 언어나 방법론에 의존적이지 않다는 특징을 갖고 있습니다. 팀의 창조성, 역동성, 그리고 자율성을 강조하는 스크럼은 개발 주기를 30일 정도로 조절하며 주기가 끝날 때마다 실제 결과물을 창출하는 것을 골자로 합니다. 

이러한 애자일 방법론은 최근에는 소프트웨어 개발뿐만 아니라 디자인이나 경영 등 다양한 분야에 적용되는 추세입니다.  


2014.12.18

ITWorld 용어풀이 | 애자일 개발

신수정 기자 | ITWorld
애자일(Agile)은 '민첩한', '생각이 재빠른, 기민한' 이라는 사전적인 의미를 갖고 있습니다. 애자일 개발(Agile development) 역시 이와 크게 다르지 않습니다. 애자일 개발은 변화에 신속하고 유연하게 대응하는 개발 방법론을 가리키는 말입니다.



애자일 개발은 소프트웨어의 개발 방법론 중 하나로, 과거 형식주의적 절차에 얽매였던 비효율적인 소프트웨어 개발 관습을 타파하기 위한 방안으로 제시된 것입니다.

폭포수 모델(Waterfall model)이나 계획 기반 개발(Plan-driven development)과 같은 전통적인 개발 방법들은 철저한 사전 계획 단계와 절차 기반으로 진행되었습니다. 특히, 폭포수 모델은 폭포에서 물이 위에서 아래로 떨어지는 것처럼 설계, 구현/코딩, 통합, 디버깅, 설치 등 개발 과정 하나하나를 정확하게 밟아 프로젝트를 진행하는 방식입니다.

이처럼 폭포수 모델은 충분한 설계 과정과 철저한 문서화 과정이 없다면 소프트웨어 프로젝트에 어려움이 따른다는 전제 하에 매우 정형화된 개발을 강조합니다. 계획 기반 개발도 마찬가지 입니다. 소프트웨어 개발을 좀 더 효율적으로, 계획적으로 하기 위해 사전 기획 단계를 철저하게 하는 것입니다.

하지만 이러한 절차적인 개발 방식을 그대로 따르는 것은 매우 어렵습니다. 예를 들어, 많은 경우 고객은 개발팀에게 애초에 계획된 것과는 다른 요구를 추가하곤 합니다. 이처럼 수정 사항이 빈번하게 발생할 경우, 전통적인 개발 방법을 고수한다면 변동사항이 생길 때마다 처음으로 돌아가야 하는 문제가 생깁니다. 비효율적인데다, 시간과 노력이 지나치게 많이 들게 되는 것입니다.

이러한 문제를 해결하고자 등장한 것이 바로 애자일 방법론입니다. 애자일 방법은 계획이나 문서가 아닌, 실질적인 코딩 작업을 더 중요시합니다. 폭포수 방법론이 ‘백년대계’라면 애자일은 ‘임기응변’에 가깝다고 할 수 있습니다. 변화가 일어날 때마다 민첩하게 고객의 요구를 반영한 프로토타입을 만들고 다시 의견을 반영해 수정하는 것을 반복하며 개발을 진행하는 것입니다.

애자일 방법론의 대표적인 것으로는 익스트림 프로그래밍(Extreme Programming)과 스크럼(Scrum)이 있습니다.

익스트림 프로그래밍 의 목적은 고객의 요구를 ‘빠른 시간’ 내에 완벽하게 전달하는 것입니다. 특히, 자주 바뀌는 고객의 요구 사항에 빠르게 대처하기 위해 고객과 개발자 사이의 원활한 소통을 강조합니다. 애자일에서는 이러한 ‘소통’을 ‘프로토타입(prototype)’과 동일시합니다. 프로토타입이란 최종 결과물이 아닌 그 이전의 미완성 작품으로, 고객의 의견이 반영될 때마다 최종 결과물에 가까운 것으로 거듭합니다. 익스트림 프로그래밍 는 적은 인원의 개발 프로젝트에서 선호됩니다. 왜냐하면 XP의 가장 큰 특징인 ‘테스트 코드 기반의 개발’은 프로토타입 작성에 있어 코딩과 디버깅 작업을 동시에 진행할 수 있기 때문입니다. 
한편, 스크럼은 특정 언어나 방법론에 의존적이지 않다는 특징을 갖고 있습니다. 팀의 창조성, 역동성, 그리고 자율성을 강조하는 스크럼은 개발 주기를 30일 정도로 조절하며 주기가 끝날 때마다 실제 결과물을 창출하는 것을 골자로 합니다. 

이러한 애자일 방법론은 최근에는 소프트웨어 개발뿐만 아니라 디자인이나 경영 등 다양한 분야에 적용되는 추세입니다.  


X