본문 바로가기

스터디/R&D

개발방법론 - 애자일(Agile)

[ 애자일이란? ] 

애자일은 문서작업 및 설계에 집중하던 개발 방식에서 벗어나 좀 더 프로그래밍에 집중하는 개발 방법론이다. 애자일(Agile)이란 단어는 '날렵한','민첩한'이란 뜻을 가진 형용사이다. 애자일 개발 방식도 그 본래 의미를 따른다. 정해진 계획만 따르기보다 개발 주기 혹은 소프트웨어 개발 환경에 유연하게 대처하는 방식을 뜻한다.

애자일 개발 방식은 2000년대 초에 대두됐다. 1990년대에는 주로 많은 인원의 개발자가 오랜 기간 동안 소프트웨어를 개발하곤 했다. 예를 들어 항공기 제어 시스템을 개발하기 위해선 여러 회사나 기관에 있는 사람들이 모였고, 10년 이상 개발에 투자했다. 철저히 계획을 세우고, 해당 계획을 구체적으로 명시한 방대한 문서 작업도 뒤따랏다. 멀리 떨어져 있는 사람이 오랜 기간 동안 함께 개발 작업을 하려면 언제 어디서나 일관된 기준을 볼 수 있어야 했기 때문이다. 이같은 과거 개발 방식은 대형 소프트웨어 개발 프로젝트엔 적합할지 몰라도, 소규모 프로젝트에는 오히려 개발을 더디게 만드는 걸림돌로 작용했다.

2001년 2월, 변화의 움직임을 싹텄다. 17명의 소프트웨어 개발자가 '애자일 연합'을 결성해 좀 더 빠르고 유연한 개발 방식을 논의하기 시작한 것이다. 이들은 애자일 소프트웨어 개발이 무엇인지 정의하고, 애자일 소프트웨어 개발을 장려하기 위한 여러 활동을 시작했다. 당시 애자일 연합에서 선언한 내용은 다음과 같다.

애자일 개발 방식은 계획과 개발, 출시와 같은 개발 주기가 여러 번 반복되며, 개발 환경에 맞게 요구사항이 추가되거나 변경된다. 결과적으로 애자일 소프트웨어 개발은 고객에게 좀 더 빨리 결과물을 내놓을 수 있고, 고객의 피드백에 민첩하게 반응할 수 있다. 

애자일 방식은 사람을 앞세운 점에서도 주목받았다. 소프트웨어는 계획하면 무조건 만들어지는 것이 아니다. 인력이나 예산, 개발 환경과 다양한 외부 조건에 영향을 받는다. 애자일 방식은 개발 환경을 고려해 고객과 개발자를 중심에 뒀다. 고객이 개발 프로세스에 적극 참여해 자업 우선순위를 정하고 개발 과정을 평가하기도 한다. 계획에 집중하고 이를 강요하기보다는 개발자 능력에 따라 개발 환경이 유연하게 변경될 수 있도록 했다. 

[ 다른 개발 방법 ]


소프트웨어 개발의 각 단계를 나타내는 라이프 사이클(Lifecycle) 모델로 대표적인 폭포수 모델(Waterfall model)은 소프트웨어 개발의 각 단계를 구분했고, 각 단계에서 해야 하는 일을 명확히 했습니다. 하지만 개발 과정을 단순하게 나타내는 단점이 있고, 이전 단계에서 한 일에 대한 오류가 나중 단계에서 밝혀질 경우 이를 바로 잡기 위한 작업을 나타내지 못하는 문제가 있습니다.

나선형 모델은 전체 시스템이 갖춰야 할 특성을 단계별로 나누어, 각 단계별로 폭포수 모델에서 제시한 것과 비슷한 단계들을 밟아 조금씩 시스템의 완성도를 높여가는 방식의 소프트웨어 개발 과정을 그리고 있습니다. 나선을 따라 한 바퀴 돌 때마다 이전 단계에서 미흡했던 부분을 보완할 수 있고, 개발 일정을 모두 마쳤을 때에만 구현된 소프트웨어를 볼 수 있었던 폭포수모델과는 달리, 각 바퀴를 돌 때마다 부분적으로 완성된 시스템을 볼 수 있다는 장점이다.


[ 세부적인 애자일 방법론 ]

익스트림 프로그래밍(XP;)

1996년 켄트백(Kent Back)과 워드 커닝험(Ward Cunningham)은 함께 다임러 크라이슬러 프로젝트를 진행하면서 새로운 소프트웨어 개발 방법을 정리하게 되는데, 그것이 XP 방법론입니다. XP는 고객이 원하는 소프트웨어를 고객이 원하는 시기에 제공하는 것을 목표로 하며, 프로젝트 막바지에도 나올 수 있는 요구사항 변경에 더욱 잘 대처할 수 있도록 합니다. 

소프트웨어 프로젝트를 개선하기 위해 켄트 백이 제시한 네가지 요소

1. 의사소통(Communication) : 고객 및 동료 개발자들과 의사소통을 잘해야 합니다.

2. 단순성(simplicity) : 개발 중인 시스템을 최대한 빨리 고객한테 보여줌으로써 고객들이 원하는 변경 사항을 빨리 도출 할 수 있어야 합니다.

3. 피드백(feedback) : 개발하는 소프트웨어에 대해 개발 첫 날부터 유닛 테스트를 통해 피드백을 받습니다.

4. 용기(courage) : XP 개발자들은 이러한 기초 위에서 요구사항이 계속 바뀌더라도 용감하게 나아갈 수 있어야 합니다.

http://www.iwiz.pe.kr/bbs/zboard.php?id=tools&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&select_arrange=hit&desc=desc&no=16


'스터디 > R&D' 카테고리의 다른 글

대량메일 발송 결과  (0) 2018.09.07
리눅스 sendMail 대량메일 설정  (0) 2018.08.27