[CS] 애자일(Agile) 방법론

찐새·2022년 12월 8일
0

CS

목록 보기
1/3
post-thumbnail

개발 공부를 하면서 구글링하거나 서적을 찾다 보면 종종 애자일이라는 단어가 보였다. 개인적으로는 게임에서나 보던 용어(Agility, 민첩)였는데, 친숙함과 별개로 무슨 뜻인지 전혀 알 수가 없었다. 물론 알고 싶은 마음도 없었다. 그러나 실무자들이 신경 쓰는 단어인 것을 보니 궁금증이 일었다. 그 김에 열심히 구글링한 결과를 정리해 본다.

애자일(Agile)이란?


소프트웨어 개발방법론 중 하나로, 2001년 Agile 선언문에 의해 용어가 탄생했다. 배경에는 폭포수(Waterfall) 모델과 같은 기존의 개발 방법론이 소프트웨어 개발 방식에는 맞지 않아, 이를 해결하고자 고안되었다.

애자일 선언문에서 지향하는 바는 다음과 같다:

  • 공정과 도구보다 개인과 상호작용
  • 포괄적인 문서보다 작동하는 소프트웨어
  • 계약 협상보다 고객과의 협력
  • 계획을 따르기보다 변화에 대응하기

정리하자면, 요구가 들어오면 바로 바로 개발에 착수하고, 요구가 변경되면 즉시 피드백하여 다시 개발에 착수하는 방식이라고 이해했다.

애자일 프레임워크


애자일 방법론으로 개발하는 프로세스를 애자일 프레임워크라고 하며, 대표적인 방법으로는 스크럼(Scrum), 칸반(Kanban), XP(eXteam Programming)이 있다.

스크럼(Scrum)

일정 주기 동안 실제 제품을 만들면서 개발을 진행하는 점진적 방법론이다.

scrum process
출처: https://commons.wikimedia.org/wiki/File:Scrum_process.svg

위키 백과의 용어 풀이는 다음과 같다.

  • 제품 백로그(Product Backlog)
    • 개발할 제품에 대한 요구 사항 목록
  • 스프린트(Sprint)
    • 반복적인 개발 주기 (회사에서 정하는 이터레이션이 개발 주기가 된다. 계획 회의부터 제품 리뷰가 진행되는 날짜 까지의 기간이 1스프린트 이다)
  • 스프린트 계획 회의(Sprint Planning Meeting)
    • 스프린트 목표와 스프린트 백로그를 계획하는 회의
  • 스프린트 백로그(Sprint Backlog)
    • 각각의 스프린트 목표에 도달하기 위해 필요한 작업 목록
  • 일일 스크럼 회의(Daily Scrum Meeting)
    • 날마다 진행되는 미팅 (어제 한일, 오늘 할일, 장애 현상 등을 공유)
  • 실행 가능한 제품(shippable product) 개발
    • 스프린트의 결과로써 나오는 실행 가능한 제품

진행도는

  1. 제품에서 요구하는 기능과 우선순위를 제품 백로그로 정한다.
  2. PO가 정한 제품의 우선순위에서 어디까지 작업을 할지 팀과 조율 한다. 조율하여 선정된 제품 백로그가 이번 스프린트의 목표가 된다.
  3. 스프린트 목표를 구현 가능 하도록 팀에서 스프린트 백로그를 작성한 뒤 작업을 할당한다.
  4. 스프린트를 진행하는 동안, 매일 정해진 장소와 시간에 모든 개발 팀원이 참여하는 일일 스크럼 회의를 가진다.
  5. 매회의 스프린트가 종료할 때마다, 스프린트 리뷰 미팅을 통해 만들어진 제품을 학습하고 이해 한다.
  6. 제품의 학습과 이해가 끝나면, 스프린트 회고를 통해 팀의 개발 프로세스에 대한 개선의 시간을 갖는다.
  7. 스프린트 기간 중 다음 스프린트를 준비 하기 위해 PO와 필요 인원이 모여 백로그를 준비하는 시간을 갖는다.

칸반(Kanban)

적시 개발(Just in time)을 지원하는 개발방법론이다.

kanban consept
출처: http://ko.infomngproeng.wikidok.net/wp-d/5f8692795f53ace221e29cd5/View#wk_cTitle1283

구성 요소는 다음과 같다.

  • 칸반보드
    • 프로세스를 기재한 보드와 스토리카드를 이용하여 업무흐름을 제어한다.
  • 프로세스
    • 실제 업무가 이루어 지는 단계 및 업무수행을 통한 산출물 작성
  • 대기행력(Work Queue)
    • 대기행렬, 개발 대기, 테스트 대기, 배포/릴리즈 대기 과정
  • 총주기 시간(Total Cycle Time)
    • 총 작업 수행시간, 개별업무의 Cycle time의 합으로 정해진다.

칸반의 특징은

  1. 워크플로우 가시화: 일을 작게 분할하여 카드에 기록하여 보드에 게시
  2. WIP 제한: Work-in-process 제한하여 동시에 진행될 수 있는 항목 제한
  3. 플로우의 측정: 한 항목을 완료 소요 평균 시간 산정하여 최적화
  4. 매우 적은 규칙을 가지고 있어 스크럼과 같이 사용할 수 있다.

XP(eXteam Programming)

비즈니스 상의 요구가 시시각각 변동이 심한 경우에 적합한 개발 방법이다.

eXteam Programming
출처: https://commons.wikimedia.org/wiki/File:Extreme_Programming.svg

  • Whole Team
    • 모든 프로젝트에 참여하는 팀원들을 가리키며 개개인이 각자의 역할이 있고 그들의 역할의 중요하게 여긴다. 프로젝트의 키를 가지고 있을 뿐만 아니라 요구사항(requirement)을 파악 할 수 있기 때문에 팀원 중 사용자(user)가 가장 중요하다.
  • Planning Game
    • 이번 반복(iteration)에는 어떤 개발 과정을 끝마칠 것인가.
    • 그 이후 개발 반복(iteration)에서는 무엇을 할것인가이다.
  • Customer Tests
    • 반복적으로 커스토머 테스트를 거쳐 잘못 이해하고 있었던 부분에 대해서 수정하며 더욱더 의뢰인 혹은 최종 사용자의 요구에 부합하는 소프트웨어를 만들어 낸다.
  • Small Releases
    • 주기적으로 프로토 타입을 의뢰인에게 보여줌으로써 의뢰인은 제한된 기능을 가지고 있지만 실제로 작동이 되는 데모 모델을 볼 수가 있으며 추가 사항을 요구할 수도 있다.
  • Simple Design
    • 모든 코딩을 가능한 간단하게 할 것을 강조한다.
  • Test-Driven Development
    • 테스트를 기반으로한 개발은 XP에서 가장 중요한 실천 방안중 하나이다. 테스트를 거치고 코딩을 하며 프로젝트를 개발해 나간다.
  • Pair Programming
    • 두 명의 프로그래머가 함께 코딩을 하고 테스트를 통해서 개발을 할 수도 있고, 한명은 코딩을 하고 한명은 Quality Assurance 역할 통해서 테스트에만 집중을 할 수도 있다.

마치며


아직 실무 경험이 없어 이러한 방법론이 무슨 쓸모가 있는지 모르겠다. 궁금증을 해결하려고 검색한 결과를 짜깁기한 터라 정확하지 않을 것이고, 실용성도 없을 것이다. 추후 애자일 방법론을 활용한 개발을 경험한다면 다시 깊게 공부해 정리해야겠다.


참고
위키백과 - 소프트웨어 개발방법론
위키백과 - 애자일 소프트웨어 개발
위키백과 - 스크럼
위키백과 - XP
위키독 - 칸반
Agile이란? - 애자일 개발 방법론에 대해서
애자일 방법론이란?
Agile이란?

profile
프론트엔드 개발자가 되고 싶다

0개의 댓글