Agile(XP, Scrum, Lean) :: 변화에 유연한 애자일 방법론의 유형

이주희·2022년 9월 4일
0

CS

목록 보기
27/66

[소프트웨어 개발 방법론]

애자일 방법론🌟🌟🌟

Agile Development

  • 개발과 함께 즉시 피드백을 받아서 유동적으로 개발한다.
  • 절차보다는 사람이 중심이 되어, 변화에 유연하고 신속하게 적응하면서, 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론
  • 개발 기간이 짧고 신속하다.
  • 폭포수(Waterfall)에 대비되는 방법론으로 최근 각광받고 있다.

(1) 애자일 방법론의 구성도

  • Discover -> Design -> Develop -> Test의 과정을 짧은 주기로 여러번 반복을 거친다.

(2) 애자일 방법론 등장 배경

  • 기존 개발방법론의 한계를 극복하기 위해 등장했다.
  • 개발 환경의 변화: 개발 트렌드가 모바일 환경으로 변화, 시장 적시성과 잦은 배포의 중요성 부각
  • 기존 개발 방법론의 한계: 전통적 방법론은 문서 절차 위주로 변화에 신속한 대응이 어려움, 빠르게 적용하고 효율적으로 개발할 수 있는 방법론의 필요성 증가

(3) 애자일 방법론의 특징

  • 프로젝트의 요구사항은 기능 중심으로 정의한다.
  • 절차와 도구보다 개인과 소통을 중요하게 생각한다.(팀 단위가 작다.)
  • 작업 계획을 짧게 세워 요구 변화에 유연하고 신속하게 대응한다.
  • 소프트웨어가 잘 실행되는 데 가치를 둔다.
  • 고객과의 피드백을 중요하게 생각한다.

(4) 애자일 VS 전통적 방법론

비교 대상애자일 방법론전통적 방법론
계획 수립유동적 범위 설정확정적 범위 설정
업무 수행팀 중심 업무 수행관리자 주도적 명령과 통제, 개인 단위로 업무 수행
개발/검증반복 주기 단위로 SW를 개발/검증분석>설계>구현>테스트를 순차적으로 수행
팀 관리업무 몰입, 팀 평가경쟁, 개별 평가
문서화문서화보다는 코드를 강조상세한 문서화 강조
성공 요소고객 가치 전달계획/일정 준수
유형XP, 스크럼, 린폭포수, 프로토타입, 나선형

애자일 방법론의 기법

1. XP

eXtreme Programming

의사소통 개선과 즉각적 피드백으로 소프트웨어의 품질을 높이기 위한 방법론

  • 1주~3주의 반복(Iteration) 개발 주기
  • 5가지의 가치와 12개의 실천 항목이 있다.

1) XP의 5가지 가치

  • 용기 Courage: 코드 작성 전 테스트, 빠르게 피드백, 테스트에 부합하지 못할 경우 리팩토링할 수 있는 용기!
  • 단순성 Simplicity: 필요한 것만 한다!
  • 의사소통 Communication: 원활한 소통
  • 피드백 Feedback: 빠른 피드백
  • 존중 Respect: 팀원 간 상호 존중

2) XP의 12가지 기본 원리🌟🌟🌟

  • 짝 프로그래밍 Pair programming
    개발자 둘이서 짝으로 코딩한다.

  • 공동 코드 소유 Collective Ownership
    시스템에 있는 코드는 누구든지 언제라도 수정 가능하다.
    (git, SVN은 공동코드 소유를 표현한 도구이다.)

  • 지속적인 통합 CI: Continuous Integration 🌟
    매일 여러 번씩 소프트웨어를 통합하고 빌드해야 한다.

  • 계획 세우기 Planning Process
    고객이 요구하는 비즈니스 가치를 정의하고, 개발자가 필요한 것은 무엇이며 어떤 부분에서 지연될 수 있는지를 알려주어야 한다.

  • 작은 릴리즈 Small Release
    작은 시스템을 먼저 만들고, 짧은 단위로 업데이트한다.

  • 메타포어 Metaphor
    공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자 간의 의사소통을 원활하게 한다.

  • 간단한 디자인 Simple Design
    현재의 요구사항에 적합한 가장 단순한 시스템을 설계한다.

  • 테스트 기반 개발 TDD: Test Driven Development 🌟
    테스트를 먼저 수행하고, 이 테스트를 통과할 수 있도록 코드를 작성한다.

  • 리팩토링 Refactoring
    프로그램의 기능을 바꾸지 않으면서 중복 제거, 단순화 등을 위해 시스템을 재구성한다. (코드를 수정한다.)

  • 40시간 작업 40-Hour Work
    개발자가 피곤으로 인해 실수하지 않도록 일주일에 40시간 이상 일하지 않는다.

  • 고객 상주 On Site Customer
    개발자들의 질문에 즉각 대답해 줄 수 있는 고객을 프로젝트에 풀타임으로 상주시킨다.

  • 코드 표준 Coding Standard
    효과적인 공동 작업을 위해 모든 코드에 대한 코딩 표준을 정의한다.

2. SCRUM

매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론

스크럼의 주요 요소

  • 백로그 Backlog: 제품과 프로젝트에 대한 요구사항
    (백로그를 스프린트 백로그로 나눈 각각의 스프린트 백로그를 하나의 스프린트 기간동안 수행한다.)

  • 스프린트: 개발 기간(반복 기간)

  • 스크럼 미팅: == 데일리 미팅

  • 스크럼 마스터: 리더

  • 스프린트 회고 Sprint Retrospective: 스프린트 주기를 되돌아보며 개선사항 등을 논의하는 미팅, 스프린트가 끝난 시점이나 일정 주기로 시행

  • 번다운 차트: 남은 일의 양을 그래프로 표현한 것(남아있는 백로그 대비 시간)

3. Lean

  • 도요타의 린 시스템 품질 기법을 소프트웨어 개발 프로세스에 적용해 낭비 요소를 제거하여 품질을 향상시킨 방법론

  • JIT(Just In Time), 칸반(Kanban) 보드 사용

  • 7가지 원칙: 낭비 제거, 품질 내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화

profile
🍓e-juhee.tistory.com 👈🏻 이사중

0개의 댓글