애자일 방법론

애자일 방법론

Posted by 동식이 블로그 on June 18, 2019

에자일 개발 실무 기초 워크샵

  • 에자일 소사이어티 특강

에자일 개념 및 도입배경

  • 애자일이란 ?

    • 민첩하고, 기민한게 아니라 비즈니스 환경 변화에 빠르게 대응하는 능력
    • 좀 더 빠르게 많은 일을 하는 것이 아니라 고객 가치를 어떻게 높일 것인지 초점
  • 애자일 개발 주요 특징

    • 프로젝트 초기에 과도학 기획이나 분석을 지양하고 빠르게 시제품을 개발
    • 고객의 반응을 확인하면서 점진적/반복적으로 제품을 개발
    • 제한된 시간 내에 많은 기능을 개발하기보다는 우선순위가 높은 기능에 초점
    • 탐색적 실험과 실패를 용인하는 문화
    • 구성원들의 소통과 협력을 중시하는 소규모 팀 중심의 수평적 개발문화
  • 전통적 방법(폭포수 개발)

    • 요구분석을 거쳐 단계적으로 진행
  • 애자일 개발

    • 제품 출시 및 사용자 요구 수렴이 1차나 2차개발 때 이루어짐
  • 등장배경

    • 시장환경의 빠른 변화로 인하여 요구사항의 불확실성이 높아지고 출시 일정이 점점 짧아짐

      Time to Market, Agility

    • 많은 기능을 가진 제품 개발보다는 창의적 혁신적인 기능을 가진 제품 개발이 중요

      valuable Product, Continuous Innovation

  • 애자일 방법론의 종류

    Dynamic System Development Methods (1944)

    Scrum(1955)Extreme Programming(1996)

    Lean SW Development(2003)

    Design Thinking(2005)

    Kanban(2006)

    Lean Startup(2011)

  • 전통적 SW 개발의 한계

    • 요구사항의 불명확성과 잦은 변경
      • 업무량 증가
    • 프로젝트 후반부에 개발시스템 변경이 대량 발생
    • 정형화된 방법론 적용에 따라 현실에서 불필요한 산출물 발생
    • 제품기획 - 요구분석 - 설계 - 구현 - 통합테스트( 이 단계에서 요구변경 30~70%)
    • 변경원인
      • 요구사항의 불명확성, 사용자 참여 부족
      • 사용자와 개발자의 상호 이해 부족, 비즈니스 상황 변화 등
  • 애자일 프로젝트 방식

    • 우선순위가 높은 요구사항을 기반으로 점진적으로 개발
    • 주기적인 사용자 리뷰를 통하여 피드백을 받고 변화에 적응
    • 고객에게 가치가 없는 산출물은 최소화하고 시스템 개발에 초점

애자일 개발 원리

  • 에자일 개발 선언문(2011)

    • 4개 가치

    Individuals and interactions over processes and tools

    Working software over comprehensive documentation

    Customer collaboration over contract negotiation

    Responding to change over following a plan

    • 12개 원칙

    Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

    Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.

    Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

    Business people and developers must work together daily throughout the project.

    Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.

    The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

    Working software is the primary measure of progress.

    Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

    Continuous attention **to technical excellence and good design **enhances agility.

    Simplicity–the art of maximizing the amount of work not done–is essential.

    The best architectures, requirements, and designs emerge from self-organizing teams.

    At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

참고링크 : http://agilemanifesto.org/

  • 린 스타트업(Lean Startup)
    • 최소한의 요건만을 갖춘 제품을 신속하게 개발해 시장에 출시하고 고객의 피드백을 통해 제품을 개선해 나가는 방법
  • Scrum 개요
    • 요구사항의 불확실성을 관리하기 위하여 만들어진 애자일 프로젝트 관리 방법론
    • 2~4주 단위로 점진적/반복적으로 업무를 수행하고 고객으로부터 피드백을 받음
  • 애자일 프로젝트 일정관리
    • 상위수준 릴리즈 계획
      • 제품 및 서비스를 최종 완료할 때까지 수행해야 할 업무에 대한 전체 일정 계획
    • 상세수준 스프린트(sprint)계획
      • 단위기간(2~4주) 기간 동안에 수행해야 할 __업무 리스트 __
  • 애자일 / 스크럼 프로젝트 프레임 워크
    • 고객 및 이해 관계자의 요구사항을 모아서 릴리즈 계획으로
    • 릴리즈계획 - 스프린트계획 - 데일리 스탠드업 미팅 - 스프린트 리뷰 - 스프린트 회고
    • 릴리즈 계획 - 제품 책임자
      • 제품 백로그
    • 스프린트 계획 - 개발팀
      • 스프린트 백로그
    • 데일리 스탠드업 미팅 - 공동책임, 상호협력
      • 스프린트(2~4주)
    • 스프린트 리뷰
      • 제품 모듈
  • 제품책임자(Product Owner)
    • 역할
      • 제품의 비전을 가지고 고객들과 밀접하게 소통하면서 제품의 가치를 높임
    • 주요활동
      • 제품기능에 대한 식별과 우선순위를 결정함으로써 투자수익률(ROI)를 극대화
      • 사용자 스토리 및 인수테스트 시나리오등을 직접 작성하고 스프린트 결과물을 검토함으로써
  • 팀(Tteam)
    • 역할
      • 젶무 개발에 책임을 지며 출시 가능한 수준의 제품을 고객에게 전달
    • 주요특징
      • 기능 혼합(Cross-functional)팀으로 구성되며 제품 구현에 필요한 모든 업무(분석, 설계 구현, 테스트) 수행
      • 자율권과 책임감을 갖는 팀으로써 스스로 해야 할 일을 결정하고 스프린트에서 수행할 수 있는 업무량을 예측
      • 개발팀 내의 각 개발자들은 특정 기술이나 전문 분야가 있을 수 있지만, 제품에 대한 책임은 개발팀 전체에 있음
  • Scrum Master / Agile Coach
    • 역할
      • 서번트 리더로서 개발팀이 생산적이로 가치 있는 일을 할 수 있도록 최대한 지원
    • 주요 활동
      • 애자일 원리에 따라 개발팀과 제품책임자가 업무를 가치 있게 수행하고 잠재력을 발휘할 수 있도록 코칭(1대1 미팅)
      • 타 부서와의 관계 원활화와 업무수행 장애요인을 제거
      • 개발팀이 자기조직화 할 수 있도록 팀원에게 업무를 할당하지 않으며, 단지 그 과정이 잘 진행 될 수 있도록 촉진
  • User Story 특성
    • Card
      • User Sotry는 보통 포스트잇과 같은 카드에 작성
    • Confirmation
      • 스토리가 완료되었다는 것을 확인 할 수 있는 완료조건(acceptance criteria)기록