본문 바로가기

Archived(IT)/배경지식_CSE

애자일(Agile) 방법론

애자일 방법론이 등장하게 된 배경은 SW의 불확실성에 기인한다.

기존의 폭포수(Waterfall) 방식에서는 계획을 통해 각 단계가 마무리되면 다음 단계로 넘어간다. 이러한 개발 방식은 현실적으로 끊임없이 수정을 요하는 SW의 불확실성에 대한 대처가 힘들었다. 이전 단계로 돌아가는 과정에 있어 많은 비용이 발생하고 또한 다음 단계에 대한 고려 없이 이전 단계를 마무리 짓는다는 것 자체가 현실적으로 맞지 않았다. 

[워터폴 모델 도식화, 출처. http://slidehunter.com/]

 

그래서 등장하게 된 것이 Agile(애자일) 방법론이다. 날렵한, 민첩한이라는 뜻을 지는 Agile에서 알 수 있듯이 개발 과정에서 빠르고 유연하게 대처한다. 정의는 다음과 같다.

 

"애자일 방법론은 소프트웨어 개발 방법에 있어서 아무런 계획이 없는 개발 방법과 계획이 지나치게 많은 개발 방법들 사이에서 타협점을 찾고자 하는 방법론이다. 계획이 없는 방법론의 경우, 앞으로의 일을 예측하기 힘들고 효율적이지 못하다는 점에서 취약점을 가지고 있으며, 계획에 너무 의존하는 경우는 그 형식적인 절차를 따르는데 필요한 시간과 비용을 무시할 수 없으며, 전체적인 개발의 흐름 자체를 느리게 하는 단점을 가지고 있다.

그렇기 때문에 애자일 방법론에서 택한, 그리고 다른 고전적인 방법론, 예를 들면 폭포수 모델 또는 나선 모형과 구별되는 가장 큰 차이점은 less document-oriented, 즉 문서를 통한 개발 방법이 아니라, code-oriented, 실질적인 코딩을 통한 방법론이라는 점이다.

그러므로 애자일 개발 방법론은 계획을 통해서 주도해 나갔던 과거의 방법론과는 다르게 앞을 예측하며 개발을 하지 않고, 일정한 주기를 가지고 끊임없이 프로토 타입을 만들어내며 그때 그때 필요한 요구를 더하고 수정하여 하나의 커다란 소프트웨어를 개발해 나가는 adaptive style 이라고 할 수 있다.

애자일 개발 프로세스란 어느 특정 개발 방법론을 가리키는 말은 아니고 "애자일(Agile=기민한, 좋은것을 빠르고 낭비없게 만드는 것) 개발을 가능하게 해 주는 다양한 방법론 전체를 일컫는 말이다. 예전에는 애자일 개발 프로세스는 "경량(Lightweight)" 프로세스로 불렸다. 익스트림 프로그래밍 (XP:eXtreme Programming)이 애자일 개발 프로세스의 대표적인 방법이라 볼 수 있다"

 

개발 과정에서 협력피드백을 핵심 요소로 꼽는다.

개발 과정에 프로토타입을 개발하고 사용자도 참여를 하여 끊임없이 테스트하고 발전시킨다.

스크럼이라는 점진적 개발 방식을 활용하는데, 스프린트라는 개발 주기를 통해 끊임없이 발전시킨다.

[ 애자일 모델 도식화, 출처. http://slidehunter.com/ ]

 

'Archived(IT) > 배경지식_CSE' 카테고리의 다른 글

STL 라이브러리_ 자료형  (0) 2019.11.17
트랜잭션과 스케줄  (0) 2019.11.07
TCP / UDP  (0) 2019.11.04
메모리 단편화(페이징, 세그먼테이션)  (0) 2019.11.01
정렬 알고리즘  (0) 2019.11.01