Agile 개발방법론

방혁·2024년 7월 11일

개발방법론

목록 보기
1/1
post-thumbnail

Agile의 정의

  • 사전적 의미 "신속한", "날렵한", "기민한"이라는 뜻을 가짐
  • SW방법론의 내포적 의미, 짧은 주기의 개발 단위를 반복하여 프로젝트를 완성해 가는 것 !
  • 어떻게 반복하라는 것인가? => 스프린트 단위로 디자인(기획) -> 개발 -> 테스트 반복

Agile 방법론의 특징

  • 고객과 개발자의 지속적인 소통으로 변화하는 요구사항을 신속하게 반영 가능
  • 개인 보다는 팀의 목적을 우선시 하며, 고객의 의견을 가장 높은 가치로 둔다.
  • 팀원들의 주기적인 회의 및 제품 시현을 통해 잠재적인 버그 수정과 미흡한 기능 추가 기능
  • 프로젝트를 진행하면서 고객으로부터 즉각적인 피드백을 통한 수정, 보완 가능
  • 팀원들의 주도적이며 자발적인 개발 문화로 프로그램 전체의 품질 향상에 기여 가능

애자일 개발의 등장 배경

폭포수 개발론

가장 오래된 SW 개발론

  • 각 작업이 마치 폭포수가 내려가듯이 작업 절차가 진행됨
  • 한 단계가 마무리 되기 전 다음 단계로 진행이 되지 못함
  • 속도가 느리고 유연하지 못하다는 단점을 지님
  • 요구사항이 바뀌거나 수정하려면 다시 맨 처음부터 수정해야하는 불편함이 존재.

=> 따라서 Agile이 등장하게 되었다.

폭포수 개발론 vs. Agile 방법론

워터폴 방법론애자일 방법론
요구사항초기 단계에서 명확하게 파악지속적으로 요구사항을 반영
특징요구사항 분석 및 문서화에 시간이 오래 소요될 수 있음, 고객의 요구사항이나 피드백에 대한 대응이 느림문제 해결을 위해 팀원들 간 소통과 협업이 중요
적합한 경우요구 사항이 매우 디테일하고 명확한 프로젝트, 변화가 적고 유동성이 낮은 프로젝트사용자의 피드백을 수집하고, 빠르게 개선이 필요한 경우, 요구사항이 변경되거나 문제 발생이 잦은 프로젝트

Agile의 장,단점

Agile의 장점

  • 프로젝트의 계획에 걸리는 시간을 최소화 가능
  • 반복적인 테스트로 잠정적인 버그를 쉽고 빠르게 개선 가능
  • 계획 변경이나 기능 추가에 유연함
  • 고객의 요구사항에 대한 즉각적인 피드백에 유연하며 프로토타입 모델을 빠르게 출시 가능
  • 빠듯한 출시 일정에 비교적 빠르게 제품 출시 가능

Agile의 단점

  • 확정되지 않은 계획 및 잦은 요구 사항 변경으로 인한 반복적인 유지보수 작업이 많음
  • 고객의 요구사항 및 계획이 크게 변경 될 경우 모델 자체가 무너질 수 있음
  • 팀 중심의 개발으로 인한 공통 작업의 리소스 투입이 많음 (회의, 로그 등)
  • 반복적인 업무로 개발 속도는 빠를 수 있으나 번아웃 현상이 쉽게 올 수 있음
  • 확정되지 않은 계획으로 인해 개발 진행에 대한 정확한 이해 부족 발생 가능

Agile 프레임워크

최소 기능 제품 (Minimum Viable Product)

고객이 원하는 제품의 최소한의 기능을 정의

  • 최소 비용으로 빠르게 만드는 핵심기능만을 담은 제품
  • 수익성 판단을 위한 시간과 비용 절감측면에서 매우 효율적
  • 사업 리스크 최소화 - 실패하더라도 괜찮아 !

스프린트 (Sprint)

애자일에서의 스프린트 정의

  • 팀이 일정량의 작업을 완료하기 위해 정해진 짧은 기간
  • 기업에서 보통 2주 정도의 기간으로 시작
  • 스프린트 계획 회의 - 스프린트 기간동안 해야할 일들을 정리하고 달성하기 위한 방법 회의

스크럼 (Scrum)

정해진 스프린트 내에 실제 행해져야 하는 개발 업무

  • 제품 백로그 작성 : 고객 및 프로젝트 이해관계자들의 의견을 취합하고 업무의 우선순위를 매기는 작업
  • 스프린트 백로그 작성 : 스프린트 내에 각 팀원들이 해야 할 업무의 리스트를 만드는 작업
  • 데일리 스크럼 미팅 : 만들어진 리스트를 바탕으로 매일 진행한 업무를 보고하고 공유하는 작업
  • 개발 및 테스트 : 팀원들이 실제 맡은 영역을 개발, 테스트 하는 작업
  • 스프린트 리뷰 및 회고 : 스프린트 내에 만들어진 결과물을 통해 장,단점을 분석하고 더 나은 방향으로 개선하는 작업

테스트 주도 개발 (Test Driven Development)

모든 개발이 아닌 테스트 주도적 개발

  • 모든 것을 만들고 예측하기에는 시간이 부족
  • 실제 필요한 기능만 만들고 그 기능이 제대로 동작하는 지 코드 기반으로 테스트
  • 잘 동작하는 것이 확인되면 코드 리팩토링 및 모듈화

테스트 주도적 개발에 도움이 되는 툴

  • 생성형 AI를 이용한 특정 기능의 코드를 빠르게 구현한 후 모듈화
  • Copliot등의 코드 자동생성Tool을 이용하여 기능 구현 코드를 쉽게 학

데브옵스 (Dev + Ops)

개발과 운영을 동시에 하자

  • 개발 + 운영의 합성어
  • 새로운 소프트웨어 기능 개선, 버그 수정 시 바로 배포함으로서 빠른 피드백 가능
  • 지속적 통합 및 연속 배포(CI/CD) 구축

정리 및 요약

  • 애자일 방법론은 스프린트 단위로 디자인 -> 개발 -> 테스트를 반복하는 작업
  • 폭포수 개발론과 애자일 개발론은 각자 적용되는 프로젝트의 상황과 성격이 다를 수 있으며 반드시 한 개발론의 정답이 정해진 것은 아니다.
  • 애자일 방법론은 고객의 피드백에 효과적으로 유연하고 대응할 수 잇지만, 반복적인 유지 보수 작업 발생과 번아웃 현상이 나타날 수 있다.
  • 애자일 프레임 워크에는 MVP, Sprint, Scrum, TDdD, DevOps, CI / CD 등이 있으며 이들을 바탕으로 애자일 작업이 이루어진다.
profile
반갑습니다 👋

0개의 댓글