애자일 방법론

Daeun·2023년 12월 27일

개발이론

목록 보기
2/2

애자일 방법론이란?

애자일은 일정한 주기를 가진 반복 작업을 통해 실제 작동 가능한 소프트웨어를 개발하여 지속적으로 제공하고 필요 할 때 마다 요구사항을 더하고 수정하는 검토 과정을 거쳐 살을 붙여 나가는 개발 방법론이다.

애자일 방법론의 핵심은 작동하는 소프트웨어의 작은 구성 요소를 신속하게 제공하여 고객의 만족도를 개선하는 것이다.

애자일 방법론의 진행 과정

애자일 방법론은 계획 → 설계(디자인) → 개발(발전) → 테스트 → 검토(피드백) 순으로 반복적으로 진행된다. 계획을 세운 후 다음 단계까지 기다려서 절차대로 진행하는 폭포수 모델과 달리 먼저 진행 후 분석, 시험, 피드백을 통하여 개선하여 나가는 진행 모델이다.

  • 계획 및 분석 : 고객과 사용자가 원하는 바를 파악하여 타당성을 조사하고 SW 기능과 제약조건을 정의하는 명세서 작성, 대상이 되는 문제 영역과 사용자가 원하는 task를 이해하는 단계
  • 설계(디자인) : 기획 의도에 맞는 설계 및 디자인 추가 및 수정하는 단계
  • 개발(발전) : 설계단계에서 만들어진 설계서를 바탕으로 프로그램을 작성, 코딩, 디버깅, 단위/통합테스트 수행
  • 테스트 : 발생할 수 있는 실행 프로그램 오류를 발견, 수정하는 단계
  • 검토(피드백) : 기획 의도를 파악하고 시험 결과와 기획에 따라 수정할 부분을 제시하는 단계

애자일 방법론의 특징

  • 고객과 개발자의 지속적인 소통을 통하여 변화하는 요구사항을 신속하게 수용한다.
  • 개발자 개인의 가치보다는 팀의 목적을 우선시하며 고객의 의견을 가장 우선시한다.
  • 팀원들과의 주기적인 회의 및 제품 시현을 통한 방지를 점검한다.
  • 진행하면서 프로그램을 시행해보고 고객으로부터 피드백을 받는다.
  • 내부 구조 형성을 통한 비용 절감에 힘쓰는 동시에 프로그램 품질 향상을 위해 노력한다.

애자일 프레임 워크

애자일 방법론을 따르는 개발 기법 Scrum, kanban, XP(eXtreme Programming) 등이 존재한다

Scrum

스프린트라는 반복적 개발주기를 지정해 애자일을 실행하는 것을 의미한다. 스프린트는 팀이 일정량의 작업을 완수하도록 정해진 짧은 기간으로 일반적으로 1-4주로 지정 한다. 매회의 스프린트 마다 프로토타입을 생상해 개선하며 고객의 요구를 만족하는 방법이다. 업무의 효율성을 위해 매일 짧은 시간의 스크럼 미팅을 진행하여 각자 당일의 업무와 협업 요청사항을 공유한다.

스크럼의 가장 큰 특징은 마감기한이 정해져 있다는 것이다.

  • 장점
    기한이 정해져 있는 개발 프로세스에 강하고, 짧은 주기의 스프린트를 반복하므로, 문제와 요구사항 변동에 비교적 유연하고 빠르게 대처할 수 있다.

  • 단점
    고객의 요구가 지나치게 큰 폭에서 변동하는 경우에는 전체 프로젝트 관점에서 뚜렷한 진척이나 성과를 얻지 못할 수 있다.

Kanban

프로젝트를 달성하기 위해 필요한 작업 목록을 우선순위와 종속 단계에 따라 나열하고, 팀이 동시에 해결할 수 있는 최대 과제 수를 제한하는 방식으로 실천한다. 이를 위해, 칸반 보드라고 하는 템플릿이 이용되고, 행과 열을 이용해 우선순위와 업무 단계 등을 표시해 프로젝트 진척도를 추적한다.

마감 기한보다, 프로젝트 목적의 정성적 달성, OKR을 중요시 한다.

OKR : Objective Key Results의 약자로, Objective는 프로젝트의 정성적 목표, Key Results는 이를 확인할 수 있는 구체적 수치의 지표를 의미한다.

칸반의 가장 큰 특징은 팀이 소화 할 수 있는 최대 업무 개수를 제한하는 방법으로 팀의 효율성을 추구하는 것이다. (멀티태스킹 지양)

  • 장점
    팀이 중요한 업무에 끊임없이 초점을 맞출 수 있고, 수용 작업량을 체크하면서 팀의 캐퍼시티를 최대한 활용할 수 있다.

  • 단점
    과업 당 마감기한이 없는 경우에는 전체 프로젝트가 늘어질 위험이 있다. 또한 리더나 일일 미팅이 필수로 포함되지 않으므로, 이러한 부분에서 혼란이 야기될 수 있다.

XP(eXtreme Programming)

수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법이다. 짧고 반복적인 개발 주기, 단순한 설계, 고객의 적극적인 참여로 소프트웨어를 빠르게 개발하는 것이 목적으로 릴리즈 테스트 마다 고객을 직접 참여 시켜 고객이 필요한 기능이 제대로 작동하는 지 직접 확인 할 수 있게 하는 개발 방법론이다

개발 테스트 단계에서 고객이 직접 참여하는 것이 가장 큰 특징으로, TDD와 유사한 것이 가장 큰 특징이다.

  • 장점
    문서 작성 최소화로 개발 효율 증가시킬 수 있다. 의사소통과 빠른 피드백을 통한 소프트웨어 품질 향상시킬 수 있다.
  • 단점
    대규모 프로젝트엔 적용이 어렵다. 참여하는 개인의 성향에 따라 프로젝트의 품질 차이가 발생한다.

애자일 소프트웨어 개발 선언

애자일 소프트웨어 개발 선언

참고자료

애자일 방법론
[Agile] Scrum(스크럼) 이해하기
정면 비교: 애자일 스크럼 vs 애자일 칸반
XP(eXtreme Programming) 기법
[Agile] XP란?

profile
어제보다 나은 내가 되자!!

0개의 댓글