소프트웨어공학-애자일개발방법론

728x90

 

 

애자일 선언문이 나온 이후로 다양한 애자일 방법론이 등장하게 되었고,

이 중에서 특히 세계적으로 널리 채택된 애자일 방법론인

(1) 스크럼(scrum)

(2) 익스트림 프로그래밍(XP)을 알아보자.

 

초창기에는 XP를 주로 사용했지만 스크럼이 점차 인기가 끌면서 최근에는 두 개를 함께 사용한다.

 

최근에는 도요타 시스템의 린 생산방식을 소프트웨어 개발에 적용하자는

린 소프트웨어 개발 방법론이 급부상하고 있고 ,주로 스크럼과 함께 사용된다.

💡린 개발 방법론이란?
낭비를 최소화하고 가치를 최대화하는 것을 목표로 하는 개발방법론
제품을 개발하는 전 과정에서 고객의 피드백을 수시로 반영하며, 불필요한 작업을 최소화하여 생산성을 높이는 것을 목표
전적으로 사용자 관점이라는 것이 애자일과의 차이점 (애자일은 사용자와의 협업)

 

주요 애자일 방법론은 다음과 같다.

  • 스크럼(Scrum), 켄 슈와버/제프 서덜랜드
  • 익스트림 프로그래밍(eXtreme Programing, XP), 켄트벡/에릭감마
  • 린(Lean) 소프트웨어 개발방법론, 메리포펜딕/톰포펜딕
  • 애자일 UP(Agile Unified Process, AUP), 스콧앰블러

 

 

 

애자일 개발 방법론 - SCRUM

스크럼 개요

프로젝트 관리를 위한 애자일 방법론으로서 추정 및 조정 기반의 경험적 관리기법의 대표적인 형태이다.

스크럼에는 크게 3가지 역할자가 있다.

  • 제품 책임자 (Product Owner)
    • 제품 기능목록에 해당하는 제품 백로그(Product Backlog)를 만들고 우선순위를 조정하거나 새로운 항목을 추가하는 일을 관리
    • 스프린트 계획 수립 시점에는 핵심 역할을 담당하지만 시작 후에는 가능한 팀의 운영에 관여하지 않는 것을 권장
  • 스크럼 마스터 (Scrum Master)
    • 팀의 업무를 방해하는 요소 제거에 노력
    • 원칙과 가치를 지키면서 팀이 개발을 진행할 수 있도록 지원
  • 스크럼 팀 (Scrum Team)
    • 일반적으로 5~9명으로 구성
    • 사용자 스토리를 사용하여 한 스프린트 동안에 개발할 기능을 도출

 

스크럼 프로세스

✅ 프로세스의 3가지 구성 요소

1️⃣ 스프린트 (Sprint)

  • 1~4주 단위의 반복 개발 기간 의미

2️⃣ 3가지 미팅

  • 일일 스크럼
    • 매일 진행하는 15분 간의 프로젝트 진행상황을 공유하는 회의
    • 모든 팀원이 참석하여 맹리 각자가 한 일, 할 일, 문제점 등을 공유
  • 스프린트 계획
    • 각 스프린트에 대한 목표를 세우고 제품 백로그로부터 스프린트에서 진행할 항목 선택
    • 각 항목에 대한 담당자를 배정하고 태스크 단위로 계획을 수립
  • 스프린트 리뷰
    • 스프린트 목표를 달성했는 지 작업 진행과 결과물을 확인하는 회의
    • 스크럼 팀은 스프린트 동안 작업한 결과를 참석자들에게 데모하고 피드백을 받음
    • 가능하면 해당 스프린트 동안 진행된 모든 작업에 대한 데모를 진행, 고객이 참여하는 것이 좋음
    • 스크럼 마스터는 스프린트 동안 잘된 점, 아쉬웠던 점, 개선할 점 등을 찬기 위한 회고 진행 가능

3️⃣ 3가지 산출물

  • 제품 백로그 - 제품에 담고자 하는 기능의 우선순위를 정리한 목록
    • 고객을 대표하여 제품 책임자가 주로 우선순위를 결정
    • 사용자 스토리 : 제품 백로그에 정의된 기능
    • 사용자 업무량에 대한 추정은 주로 스토리 포인트라는 기준을 이용
  • 스프린트 백로그 - 하나의 스프린트 동안 개발할 목록
    • 과업(task) : 사용자 스토리와 이를 완료하기 위한 작업
    • 각각의 과업 크기는 시간 단위로 측정
  • 소멸 차트 - 개발 완료까지 남은 작업량을 보여주는 그래프
    • 각 이터레이션 별로 남아있는 작업량을 스토리 포인트라는 것으로 나타낸 것

 

스크럼 특징

  • 투명성
    • 프로젝트의 진행사항을 정확히 파악하는 것은 어려운 일이나, 스크럼을 통해 효과적으로 파악 가능
  • 타임박싱
    • 스크럼을 진행하는 데 들어가는 시간을 제한함으로써 프로젝트 진행에만 집중하는 것이 가능
  • 커뮤니케이션
    • 스크럼은 팀원 간 커뮤니케이션을 원할하게 하기 위해서 많은 노력(일일 스크럼, 플래닝 포커)을 기울인다.
    • 일일 스크럼 - 개발자들이 갖고 있는 문제점을 공유
    • 플래닝 포커 - 사용자 스토리으 구현 난이도, 시간을 토론하는 절차
  • 경험주의 모델
    • 고유의 프로세스 모델을 가지고 있지만 프로젝트에 참여하고 있는 개개인의 경험을 중시한다. 

 

 

 

 

 

애자일 개발 방법론 - XP

XP 개요

1990년 후반 정립된 방법론으로, 중소규모 개발 조직에 적합한 경량화된 개발방식

❗️ XP의 경우, 테스트 주도 개발(TDD), 일일빌드(Daily Build), 지속적인 통합(Continuous Integration) 등 개발 테크닉과 연관된 부분이 많기 때문에 종종 '방법론'으로 규정짓는 것에 대해 논란이 되기도 함
  • 국내에서는 작은 규모의 개발 팀을 중심으로 기법 중 일부를 적용하는 사례가 일반적
  • 스크럼과 같은 추가적인 애자일 개발 방법을 함께 적용하기도 함
  • 그 가치(Value)와 가치를 달성하기 위한 실천법(Practice)으로 구성
    ➡︎ 이 두 가지 균형을 유지하기 위한 원칙(Principle) 필요
  • 반복적 개발방법론의 일종으로, 프로젝트 수행 과정에서 여러 번의 반복이 있으며 테스트 결과에 따라 업무를 반복적으로 수행함

 

XP 개발 절차 및 용어

개발 절차는 아래 그림과 같다.

출처: topcit essence

 

용어 설명 

  • 유저 스토리 : 요구사항 수집
    • 의사소통의 도구를 말하고 기능단위의 필요한 내용을 간단하게 기재
  • 스파이크 : 어려운 요구사항 혹은 잠재 솔루션을 고려한 간단한 프로그램
    • 사용자 스토리의 신뢰성을 증대, 기술 문제의 위험을 감소하는 목적
  • 릴리즈 계획 : 전체 프로젝트에 대한 배포 계획을 수립하여 하나의 반복을 1~3주로 나누고 반복들을 균일하게 유지
  • 승인 테스트 : 릴리즈 전 인수 테스트로서 고객이 직접 수행
  • 작은 릴리즈 : XP 주기의 마지막 단계
    • 소규모로 빈번하게 배포하면 고객에게 여러 이득을 조기에 제공 가능

 

XP 가치

XP에서는 기본적으로 5개 가치를 제안

 

1. 의사소통 : 고객, 개발자, 관리자들 간의 의사소통을 통해 문제를 해결하고 팀 빌딩을 강화

2. 단순성 : 불필요한 복잡성을 제거하여 설계를 단순하고 명확하도록 유지

3. 피드백 : 완전성을 추가하는 것보다 점진적인 개선이 효과적이므로 팀이 다룰 수 있는 한도 내에서 최대한 빨리, 많은 피드백을 만들어 개선에 활용

4. 용기 : 요구사항 및 기술 변경에 용감하게 대처함으로써 문제를 적극적으로 해결하려는 용기는 단순함을 추구하고, 구체적으로 제시하려는 용기는 피드백을 강화

5. 존중 : 앞의 4가지 뒤에 숨어있는 가치로 다른 사람들을 중요하게 여기지 않고는 프로젝트를 정상 진행하기 어려움

 

 

XP 실천 방법

5가지 가치 외에도 12가지 실천 방법을 제시한다.

출처: topcit essence