애자일 모형의 예시

ddindo·2022년 3월 19일
0

정보처리기사

목록 보기
2/8

스크럼(Scrum)

팀을 중심으로 개발의 효율성을 높이는 방법

  • 팀원 스스로가 스크럼 팀을 구성하고, 개발 작업에 관련된 모든 것ㄷ을 스스로 해결 한다.
  • 제품 책임자, 스크럼 마스터, 개발팀으로 구성

역할 소개

제품 책임자 (Product Owner)

  • 개발될 제품의 이해도가 높고, 요구사항을 책임지고 의사 결정할 사람
  • 요구사항이 담긴 백로그를 작성하고 우선순위를 선정
  • 팀원이 백로그에 스토리를 추가할 수는 있어도, 우선순위를 선정하진 못함
    < 백로그(Backlog) >
    : 제품 개발에 필요한 모든 요구사항을 우선순위에 맞게 나열한 목록

스크럼 마스터 (Scrum Master)

  • 스크럼 팀이 스크럼을 잘 수행 할 수 있도록 객관적인 시각에서 조언하는 사람
  • 일일 스크럼 회의를 주관하여 진행 사항 검토, 장애요소 공론화 등을 수행

개발팀 (Development Team)

  • PO, SM을 제외한 모든 팀원으로 개발자 외에 디자이너,테스터도 포함
  • 최대 7~8명이 1팀으로 구성됨

진행 과정

1. 스프린트 계획 회의

  • 백로그 중 이번 스프린트에서 수행할 작업을 대상으로 단기 일정 수립
  • 요구사항을 Task로 나누고 스프린트 백로그를 작성

2. 스프린트

  • 실제 개발을 진행하는 과정으로 2~4 주 기간에 진행

3. 일일 스크럼 회의

  • SM 주관으로 모든 팀원이 매일 짧게 회의를 통해 진행 사항을 점검하고 남은 작업시간은 소멸차트에 기록

4. 스프린트 검토 회의

  • 만든 결과물이 요구사항에 부합되는지 사용자가 포함된 참석자 앞에서 테스팅
  • 스프린트의 한 주당 한 시간 내에 진행
  • PO는 개선할 사항에 대한 피드백을 정리 후 백로그를 업데이트

5. 스프린트 회고

  • 스프린트 주기를 돌아 보며 개선 사항을 확인 후 기록
  • 해당 스프린트가 끝난 시점이나 일정 주기에 맞춰 진행

XP (eXtreme Programming)

수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정 반복을 극대화 하여 생산성을 향상 시키는 방법

  • 짧고 반복적인 개발 주기, 단순한 설계, 고객의 적극적 참여를 통해 빠르게 개발하는 목적
  • 릴리즈 기반을 짧게 반복하며 고객의 요구사항 반영에 대한 가시성을 높임
  • 릴리즈 테스트마다 고객을 참여 시킴으로 요구한 기능이 제대로 작동하는 지 고객이 직접 확인 가능
  • 소규모 프로젝트에 효과적

핵심 가치

  1. 의사소통
  2. 단순성
  3. 용기
  4. 존중
  5. 피드백

개발 프로세스

사용자 스토리

  • 고객의 요구사항을 간단한 시나리오로 표현
  • 기능 단위 구성으로 필요 시 간단한 테스트 사항 추가

릴리즈 계획 수립

  • 몇 개의 스토리가 적용되어 부분적으로 기능이 완료된 제품을 제공(릴리즈)
  • 부분 혹은 전체의 개발 완료 시점에 대한 일정 수립

스파이크

  • 요구사항의 신뢰성을 높이고 기술 문제에 대한 위험을 감소시키기 위해 만드는 간단한 별도의 프로그램
  • 처리할 문제 이외 다른 조건은 모두 무시한다

주기

  • 하나의 릴리즈를 더 세분화 한 단위
  • 일번적으로 1~3주의 기간 진행
  • 새로운 스토리가 작성 될 수 있다.

승인 검사

  • 하나의 주기 안에서 계획된 릴리즈 단위의 부분 완료 제품이 구현 되면 수행

소규모 릴리즈

  • 릴리즈를 소규모로 하게 되면, 고객의 요구사항에 더욱 유연하게 대처 할 수 있다.

XP의 주요 실천 방법

Pair programming

  • 다른사람과 함께 프로그래밍을 수행

Collective Ownership

  • 개발 코드에 대한 권한과 책임을 공동으로 소유

Test-driven Development

  • 실제 코드를 작성 하기 전에 테스트 케이스를 먼저 작성함
  • 테스트가 지속적으로 진행될 수 있도록 자동화된 테스팅 도구 사용

Whole team

  • 개발에 참여하는 모든 구성원은 각자 자신의 역할이 있고 그 역할에 책임을 지님

Continuous integration

  • 모듈 단위로 나눠서 개발된 코드들은 하나의 작업이 마무리될 때마다 지속적으로 통합

Design improvement

  • 프로그램 기능의 변경 없이 단순화 유연성 강화 등을 통해 시스템을 재구성

Samll Releases

  • 릴리즈 기간을 짧게 반복하여 고객의 요구 변화에 신속하게 대응

0개의 댓글