애자일(Agile)

소프트웨어 개발 방법에 있어서 아무런 계획이 없는 개발 방법과 계획이 지나치게 많은 개발 방법들 사이에서 타협점을 찾고자 하는 방법론이다.(위키백과)

전통적인 개발 프로세스과 단점

기존의 전통적인 개발 프로세스(Waterfall과 같은) 기법들은 요구 사항 분석, 설계, 구현, 검증, 유지보수 등의 단계들을 통해 이루어지게 된다. 이러한 모델은 프로세스가 이해하기 쉽고 간결한 구조로 되어 있고 언뜻 모범적인 답안을 내놓을 수 있을 것 같지만, 이러한 모델들에는 한계가 있다. 대표적으로 폭포수 모델로 예시를 들면 구현 단계 중 발생하는 요구 사항의 변경이 어렵고, 한번의 요구분석과 설계로 완벽할 수 없다는 점 등이 있다.

애자일의 등장

글의 가장 위에 애자일을 설명하는 바와 같이 “아무런 계획이 없는 개발 방법과 계획이 지나치게 많은 개발 방법들”에 대하여 해결책으로 애자일이 등장하게 된다. 애자일 개발 프로세스는 한번에 모든 것들을 완벽하게 라는 개념을 뒤집어 SW개발 프로세스를 빠르고 더 자주 반복함으로써 더 나은 소프트웨어 개발을 만들어간다.

애자일이 추구하는 가치

(이미지 참조 : http://agilemanifesto.org/iso/ko/manifesto.html)

애자일 개발 12가지 원칙

  • 우리의 최우선 순위는, 가치 있는 소프트웨어를 일찍 그리고 지속적으로 전달해서 고객을 만족시키는 것이다.
  • 비록 개발의 후반부일지라도 요구사항 변경을 환영하라. 애자일 프로세스들은 변화를 활용해 고객의 경쟁력에 도움이 되게 한다.
  • 작동하는 소프트웨어를 자주 전달하라. 두어 주에서 두어 개월의 간격으로 하되 더 짧은 기간을 선호하라.
  • 비즈니스 쪽의 사람들과 개발자들은 프로젝트 전체에 걸쳐 날마다 함께 일해야 한다.
  • 동기가 부여된 개인들 중심으로 프로젝트를 구성하라. 그들이 필요로 하는 환경과 지원을 주고 그들이 일을 끝내리라고 신뢰하라.
  • 개발팀으로, 또 개발팀 내부에서 정보를 전하는 가장 효율적이고 효과적인 방법은 면대면 대화이다.
  • 작동하는 소프트웨어가 진척의 주된 척도이다.
  • 애자일 프로세스들은 지속 가능한 개발을 장려한다. 스폰서, 개발자, 사용자는 일정한 속도를 계속 유지할 수 있어야 한다.
  • 기술적 탁월성과 좋은 설계에 대한 지속적 관심이 기민함을 높인다.
  • 단순함은 필수적이다.
  • 최고의 아키텍처, 요구사항, 설계는 자기 조직적인 팀에서 나온다.
  • 팀은 정기적으로 어떻게 해야 더 효과적이 될지 고민하고, 이에 따라 팀의 행동을 조율하고 조정한다.

Reference