데일리 미션/미션

애자일 개발 방법론

pipiiiiii 2024. 9. 29. 23:28

애자일 개발

소프트웨어 개발 방법론 중 하나로 '반복적이고 점진적인 개발 방법'을 통해 개발을 진행하는 것을 특징으로 한다.

간단하게 말하면 프로그래밍에 집중하여 개발 환경에 따라 유연하게 소프트웨어를 개발하는 형식을 말한다. 

 

최초 애자일은 계획과 문서에 따른 개발 방식보다 유연한 소프트웨어 개발을 목표로 하는 '애자일 개발 방식'을 칭하는 말로 사용되었으나, 최근 들어 단순히 소프트웨어 개발 용어가 아니라 조직이나 기업을 변화하는 환경에 따라 유연하게 경영하는 방식으로 개념이 확장되고 있다. 

 

애자일 개발 방식

'기획 - 개발 - 출시' 혹은 '분석 - 설계 - 개발'로 구성된 짧은 주기의 사이클이 반복되는 형식으로 해당 프로세스를 통해 시장 변화에 유연하게 대처하는 것이 특징이다. 

 

애자일 개발 방법론

애자일 개발 방법론은 1990년대 중반 중량 폭포수 소프트웨어 개발 방법론에 반대하면서 시작되었고, 2001년 소프트웨어 개발자 17명이 '애자일 소프트웨어 개발 선언'을 발표하면서 본격화되었다. 

 

애자일 선언문에는 애자일 개발의 네 가지 주요 가치와 열두 가지 원칙이 있는데 사람 위주의 상호작용, 소프트웨어, 고객과의 협력, 변화에 대한 대응을 강조하고 있다.  

 

특징

  1. 반복적인 개발
    짧은 개발 주기를 가지고 작은 단위의 작업을 반복한다. 
    반복하면서 초기에 가치 있는 기능을 제공하고, 지속적인 개선과 변경을 통해 소프트웨어를 발전시킨다. 

  2. 협업과 자기 조직화
    다양한 역할의 구성원들로 팀을 이룬다. 
    각 구성원들은 서로 협력하고 의사소통하여 문제를 해결한다. 
    팀은 자기조직화되어 작업을 계획하고, 우선순위를 정하며, 문제를 해결하는 데 필요한 결정을 내리는데 이를 통해 팀 내부의 의사소통과 협업이 강화되고 업무 효율성과 창의성이 증가한다. 

  3. 우선순위와 가치 중심 
    가장 중요한 요구사항부터 작업을 시작하고, 지속적인 고객 피드백을 수용하여 제품을 개선하고 가치를 제공한다.
    사용자의 요구를 빠르게 반영하고 가치 있는 소프트웨어를 제공함으로써 고객 만족도를 높인다.

  4. 변화에 대한 수용
    변화를 수용하고 적극적으로 대응한다.
    요구사항이나 환경이 변경되면 유연하게 계획을 조정하고 개발 방향을 변경할 수 있다. 

  5. 지속적인 테스트와 통합
    품질을 유지하기 위해 지속적인 테스트와 코드 통합을 수행한다. 
    단위 테스트와 자동화된 테스트 도구를 활용하여 버그를 조기에 발견하고 수정한다. 이를 통해 소프트웨어의 안정성과신뢰성을 높이고, 품질 관리를 지속적으로 수행할 수 있다. 

장단점

  • 장점
    • 빠른 시장진입
      빠른 개발과 배포를 통해 제품을 빠르게 시장에 출시할 수 있다. 그로 인해 경쟁력을 유지하고 신속한 피드백을 받을 수 있다.

    • 고객 만족도 향상
      애자일 방법론은 고객의 요구에 직접적으로 초점을 맞춘다. 지속적인 고객 피드백을 수용하고 요구 사항을 유연하게 반영함으로 고객 만족도를 향상할 수 있다.

    • 위험 감소
      개발 초기부터 작은 주기로 제품을 개발하고 테스트하기 때문에, 잠재적인 위험과 문제를 조기에 발견하고 대응할 수 있다.

    • 팀 협업 강화
      팀 내 협업과 의사소통을 강조한다. 자기 조직화된 팀이 작업을 계획하고 우선순위를 정하며 문제를 해결하는데 필요한 결정을 내릴 수 있다.  
  • 단점
    • 적응력 요구
      빠른 변화와 유연성을 요구하기 때문에 조직의 적응력을 요구한다. 

    • 팀원 역량 관리
      팀원들이 자기조직화되어 작업을 수행하므로, 팀원들의 역량과 관리가 중요하다. 
      적절한 역할 분담과 업무 조정, 팀원 간의 협업과 의사소통을 관리해야 한다.  

    • 프로젝트의 복잡성과 규모
      작은 규모의 프로젝트나 중간 규모의 프로젝트에 적합하다. 
      대규모 프로젝트나 복잡한 시스템의 경우에는 다른 개발 방법론을 선택하거나 애자일 방법론을 조정해야 한다. 

    • 고객과의 협업
      고객의 참여와 피드백을 수용하고, 요구사항의 우선순위를 조정해 반영해야 한다. 이를 위해 원활한 의사소통과협업을 구축해야 한다.    

 

종류

  • 스크럼
    • 애자일 방법론을 구체적으로 실행하는 데 사용되는 가장 널리 채택된 프레임 워크 중 하나다. 
    • 프로젝트를 진행하는 데 있어서 유연성과 적응성을 강조하는 방법론이다. 
      작은 팀으로 구성되어 각 팀원이 적극적으로 참여하여 프로젝트를 진행하는 방식을 취하며, 개발 주기를 일정 기간으로 나누어 주기마다 일정한 목표를 설정하고 그 목표를 달성하도록 팀원들이 협력하여 일하는 방식을 취한다. 
    • 스크럼의 수행 과정
      일정 기간 동안 프로젝트를 진행하는 '스프린트'라는 주기를 사용한다.

      '스프린트'는 2주에서 4주의 짧은 주기로 나누고, 스크럼 마스터, 제품 책임자, 개발팀으로 구성된 스크럼 팀을 짠다. 

      스크럼 마스터는 팀이 스크럼 방법론을 효과적으로 실행할 수 있도록 지원하는 역할이다.
      제품 책임자는 제품의 비전과 요구 사항을 정의하고 우선순위를 결정하는 역할이다.
      개발팀은 실제 제품 개발 작업을 수행한다. 

      스프린트 진행은
      스프린트마다 목표를 설정하고 해당 목표를 달성하기 위해 백로그에서 우선순위에 따라 선정하여 진행한다. 
      스프린트 중에는 매일 스탠드업 미팅을 진행하여 진행 상황과 문제를 공유한다. 
      스프린트가 끝나면 해당 스프린트에서 개발한 제품의 작동 여부를 검증한다.  

  • 익스트림 프로그래밍
    • 개발자 중심의 방법론을 의미한다. 
      고객과 개발자가 함께 일하며 고객이 원하는 기능을 우선순위에 따라 작은 단위로 나누어 개발한다. 
    • 기존의 전통적인 소프트웨어 개발 방법론이랑 다르게 빠르고 유연한 반복 개발 방식을 중심으로 한다. 
    • 페어 프로그래밍, 테스트 주도 개발, 지속적인 통합, 단순한 설계, 적극적인 리펙토링 등을 통해 높은 소프트웨어 품질을 만든다. 
       
  • 칸반
    • 개발 과정에서 사용되는 '시각적인 작업 관리 도구'다. 
      개발 과정에서 발생하는 작업들이 카드 형태로 시각적 표시되어 있고 작업의 진행 상황을 실시간으로 파악할 수 있다는 특성이 있다.   

      칸반은 칸반 보드로 물리적 보드(화이트보드 내의 구성), 디지털 보드(JIRA, Trello, Redmine 등)를 이용하여 운영한다. 

   

 

 

워터폴 개발 방식

워터폴 개발 방식은 애자일 개발 방식과 항상 비교되는 개념이다. 

 

워터폴의 프로세스는 요구분석 - 설계 - 디자인 - 코딩 - 개발 순으로 이름에서 유추할 수 있듯 폭포처럼 아래로 이어지는 개발 방식을 보여준다. 

워터폴 방식은 긴 프로세스를 가져 짧은 사이클을 계속해서 반복하는 애자일 방식과 확연히 다르다는 것을 알 수 있다. 

 

장단점

장점으로는 개별 단계가 명확히 구분되어 순차적으로 진행된다는 점으로 각 단계에 대한 명확한 책임과 정형화된 접근 방식으로 프로젝트를 진행하기 때문에 기술적인 리스크를 최소화할 수 있다. 또한, 대규모 프로젝트에 적합하다는 평가를 받고 있다. 

 

단점으로는 고객과의 커뮤니케이션이 어렵다는 점과 유연성이 부족하다는 점이다. 

처음부터 끝까지의 단계가 긴 프로세스 때문에 고객의 요구 사항이 잘 반영되었는지 파악하기 어렵고, 중간에 변경 사항이 발생하면 지나온 단계를 거슬러가기 힘들어 수정이 어렵다. 

 

 

애자일과 워터폴 비교

장점

  • 애자일
    • 개발 과정이 빠르고 유연하다.
    • 짧고 반복적인 스프린트로 구성되어 빠르게 결함 식별 및 수정이 가능하다. 
    • 소규모 팀들이 여러 과제를 각각 할당받아 처리가 가능하다.
    • 개발 과정 중에 신속하게 제품 변강이 가능하다
  • 워터폴
    • 팀 규모와 상관없이 따르기 쉽다. 
    • 개발 주기가 정해져 있어 새로운 프로젝트를 안정적으로 시작할 수 있다.
    • 요구 사항이 정의되어 있어 실행하기가 수월하며, 목표를 자주 변경하지 않아도 된다.
    • 필요한 예산과 자원이 초기에 확정되어 예상 결과와 리스크를 통제하기 쉽다.  

 

단점

  • 애자일
    • 빠른 반복 작업에 익숙한 숙련된 사람이 필요하다.
    • 수많은 변경 사항이 있을 수 있어 번거로울 수 있다. 
  • 워터폴
    • 개발 속도가 느리며 유연성이 떨어진다.
    • 개발 요구 사항이 초기에 정해지기 때문에 변경이 자유롭지 못하다. 

 

적합한 조직

  • 애자일
    • 고품질의 결과물과 지속적 개선에 초점을 맞춘 조직
    • 크고 복잡한 회사들이 프로세스를 간소화함으로써 변화에 신속 대응하고자 할 때
    • 결과물에 대해 빠른 피드백이 필요한 팀
  • 워터폴
    • 순차적인 프로젝트 타임라인, 사전 확정 예산이 필요한 팀
    • 개발상의 변경이나 리스크에 덜 민감한 팀
    • 요구 사항이 간단한 팀
    • 프로젝트 타임라인이 긴 팀

 

 

 

 

 

참고 자료