기존의 무겁고 규범적인 개발방법론에서 탈피하여 가벼운 방법론을 지향하며 등장한 소프트웨어 개발 방법론
‘애자일 연합(Agile Aliance)’에서 2001년 1월 발표한 ‘애자일 선언문(Agile Manifesto)’을 바탕으로 애자일 소프트웨어 개발의 기초 원칙과 정신이 세워지며 구체화된 경량 방법론(Lightweight Methods)

종류 및 특징

애자일 선언문 이후 공통적으로 ‘신뢰성 높은 소프트웨어를 빨리 개발하자’라는 가치를 공유하며 다양한 애자일 개발 방법이 나타납니다. 이 중에서 세계적으로 가장 많이 사용되는 애자일 방법론은 스크럼과 익스트림 프로그래밍(XP)입니다. 애자일 소프트웨어 개발은 반복점진적(Iterative & Incremental) 개발을 기본으로 이를 효과적으로 진행하기 위해 자기조직화(Self-Organizing)나 교차기능팀(Cross-functional Teams)등의 기법들을 활용합니다.

  • 스크럼(Scrum) : 켄 슈와버, 제프 서덜랜드
  • 익스트림 프로그래밍(eXtreme Programing, XP) : 켄트 벡, 에릭 감마
  • 린(Lean) 소프트웨어 개발방법론 : 메리 포펜딕, 톰 포펜딕
  • 적응형 소프트웨어 개발 방법론(Adaptive Software Development, ASD) : 짐 하이스미스
  • 기능 주도 개발방법론(Feature Driven Development, FDD) : 피터 코드, 제프 드루카
  • 동적 시스템 개발 방법론(Dynamic Systems Development Method, DSDM) : 데인 포크너
  • 크리스탈 패밀리(Crystal Family) : 앨리스테어 코번
  • 애자일 UP(Agile Unified Process, AUP) : 스콧 앰블러

스크럼(Scrum)

개요 : 추정 및 조정 기반의 경험적 관리기법의 대표적인 형태인 프로젝트 관리를 위한 애자일 방법론. 

역할

  • 제품 책임자(Product Owner) : 제품 백로그(Product Backlog) 작성, 우선순위 조정하거나 새로운 항목을 추가하는 일 관리
  • 스크럼 마스터(Scrum Master) : 스크럼의 원칙과 가치를 지키면서 스크럼 팀이 개발을 진행할 수 있도록 지원함
  • 스크럼 팀(Scrum Team) : 5~9명으로 구성됨, 하나의 스프린트 기간 동안 구현해야 할 기능을 사용자 스토리로 도출하고 이를 구현함

산출물

  • 제품 백로그(Product Backlog) : 제품에 담고자 하는 기능의 우선순위를 정리한 목록, 제품 책임자가 우선순위 결정
    (여기에 정의된 기능을 사용자 스토리라고 하며 사용자 업무량에 대한 추정은 스토리 포인트라 불리는 기준을 이용함
  • 스프린트 백로그(Sprint Backlog) : 하나의 스프린트 동안 개발할 목록
  • 소멸차트(Brundown Chart) : 개발을 완료하기까지 남은 작업량을 보여주는 그래프

프로세스


XP(eXtreme Programming)

개요 : 1990년대 후반 켄트 벡을 중심으로 여러 엔지니어들이 프로젝트를 진행하며 얻었던 교훈을 기반으로 효과적이라 생각되는 개발 기법을 모아 만든 하나의 방법론

가치

  • 의사소통 : 팀이 발전적인 방향으로 존속하는데 있어서 가장 중요한 가치
  • 용기 : SW 개발 시 커다란 미지의 두려움에 마주할 때 필요한 가치(모르는 것을 모른다고 말하는 용기, 먼저 도움을 주거나 요청할 수 있는 용기 등)
  • 피드백 : SW 개발 및 의사소통의 핵심으로 지속적이고 빠른 피드백을 통해 의사소통과 좋은 분위기를 이어갈 수 있음
  • 단순함 : 복잡한 방식으로 개발하는 것이 아닌 간결하고 단순하게 개발하여 어려움을 해소하고자 함
  • 존중 : 위의 모든 가치를 추구하는 과정에서 유지되어야 하는 가치

기본 실천법

  • 함께 앉기 : 개발 팀 전체가 들어가기에 충분한 공간 확보
  • 전체 팀 : 프로젝트 성공을 위해 필요한 기술과 시야가 있는 사람들을 모두 팀에 포함할 필요있음
  • 정보를 제공하는 작업 공간 : 작업 공간을 작업에 대한 것으로 채움
  • 활기찬 작업 : 생산적으로 일하고 일의 활력을 유지할 수 있는 정도만 일함
  • 짝 프로그래밍 : SW를 두 사람이 한 대의 컴퓨터에서 작성함
  • 스토리 : 고객에게 가치를 줄 수 있는 최소한의 기능을 단위로 해서 계획함
  • 일주일별 또는 분기별 주기 : 한번에 일주일 또는 분기 분량의 일을 계획함
  • 여유 : 비교적 급하지 않고 포기할 수 있는 업무를 계획에 포함함
  • 10분 빌드 : 10분 만에 자동으로 전체 시스템을 빌드하고 모든 테스트를 돌림
  • 지속적인 통합 : 변경한 것을 2,3시간 만에 통합하고 테스트함
  • 테스트 우선 프로그래밍 : 코드 변경 전 자동화된 테스트를 먼저 작성함
  • 점진적인 설계 : 시스템 설계 매일 투자함

프로세스

* 출처 : 애자일 초심자를 위한 애자일 SW 개발 101, 소프트웨어공학센터