정보처리기사/실기

소프트웨어 생명 주기 #2 (애자일 모델)

노랑꼬리 2024. 1. 8. 21:47

1. 애자일 모델 개념

- 소프트웨어 개발과정에서 지속적으로 발생하는 변경에 유연하고 기민하게 대응하여 생산성과 품질향상을 목표로 하는 협력적인 모델

 

※ 애자일(Agile)

- 사람(고객 소통, 고객 협업)이 중심이 되어 전체 개발 단계에서 변화에 대한 신속히 대응할 수 있도록 일정 주기를 반복하여 좋은 결과를 빠르고 낭비없게 만들기 위한 방법론

- 급변하는 요구사항에 적합

- 소규모 프로젝트에 적합

- 숙련된 개발자 필요

- 폭포수 모델은 계획 중심

 

 

2. 애자일 방법론

1) 스크럼(Scrum)

 

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

1~4주의 짧은 개발 기간으로 분리하여 반복적으로 수행하는 스프린트(Sprint)를 중심으로 진행한다.

 

 

2) 스크럼 팀 구성원

 

- 제품책임자(개발의뢰자, 사용자)

ㄴ 제품 기능목록에 해당하는 제품 백로그를 만들고, 우선순위를 조정하거나 새로운 항목을 추가하는 일을 관리한다. 

ㄴ 스프린트에 대한 계획을 수립할 때 까지만 관여하고 이후에는 팀 운영에 관여하지 않는 것이 좋다.

 

※ 제품 백로그 : 이해관계자가 요구하는 제품이 제공해야하는 기능이나 요구사항 목록

 

- 스크럼 마스터(개발팀장)

ㄴ 문제해결, 방해요소 제거, 스크럼의 원칙과 가치를 지키면서 개발 진행이 가능하도록 지원한다. (팀의 가이드 역할)

 

- 스크럼 팀(개발팀)

ㄴ 5~9명으로 구성됨

ㄴ 하나의 스프린트 동안 구현해야할 기능들을 사용자 스토리로 도출하고 구현한다.

 

※ 사용자 스토리 : 최종 사용자 입장에서 무엇이 필요하고, 그것이 왜 필요한지 설명한 것

 

 

3) 스크럼 개발 프로세스

 

순서

- 제품 백로그 작성 → 스프린트 계획 회의 → 스프린트 수행  → 일일 스크럼 회의 → 리뷰(검토) → 회고

 

- 스프린트 계획

ㄴ 각 스프린트에 대한 목표를 세우고 제품 백로그로부터 스프린트에 진행할 항목을 선택한다.

ㄴ 항목별 담당자가 배정되고, 테스크(Task, 작업) 단위로 계획을 수립한다.

 

- 일일 스크럼

ㄴ 매일 진행하는 15분간의 프로젝트 진행 상황을 공유하는 회의.

ㄴ 모든 팀원이 참석하여 매일매일 각자의 일, 문제점을 공유한다.

 

- 스프린트 리뷰

ㄴ 스프린트 목표를 달성했는지, 작업 진행과 결과물을 확인하는 회의.

ㄴ 스프린트 동안 진행된 모든 작업에 대한 데모를 진행한다.

 

- 스프린트 회고

ㄴ 스크럼 마스터가 스프린트 동안 잘된 점, 아쉬운 점, 개선할 사항들을 찾기 위한 회고를 진행한다.

 

3가지 산출물

 

- 제품 백로그

ㄴ 제품에 담고자하는 기능의 우선순위를 정리한 목록

 

- 스프린트 백로그

ㄴ 하나의 스프린트 동안 개발할 목록으로 사용자의 스토리와 이를 완료하기 위한 작업을 테스크로 정의.

ㄴ 각각의 테스크의 크기는 시간 단위로 추정한다.

 

 

- 소멸차트

ㄴ 개발을 완료하기까지 남은 작업량을 보여주는 그래프.

ㄴ 각 주기 별로 남아있는 작업량을 스토리 포인트라는 것으로 나타낸다.

 

※ 스토리 포인트 : 개발에 소요되는 시간, 복잡도 등을 고려하여 추상적인 개념으로 변환한 단위

 

 

4) 익스트림 프로그래밍(XP : eXtreme Programing)

 

- 고객과 함께 2주 정도의 반복 개발로 고객 만족을 강조하고 테스트와 우선 개발을 중시.

- 짧고 반복적인 주기, 단순한 설계, 고객의 적극적인 참여를 추구.

 

※ XP의 5가지 핵심가치 : 의사소통, 단순성, 피드백, 용기, 존경

 

 

5) 린(Lean) 소프트웨어 개발 방법론

 

- 도요타의 생산방식을 소프트웨어 개발론에 적용

- 구체적인 개발 프로세스가 아닌 철학적인 접근

- 낭비를 줄이는 방법론

 

※ Lean의 7가지 원칙

- 낭비 제거 : 80%의 가치를 제공하는 20%의 기능 구현에 모든 초점을 맞추어 집중하고 낭비되는 요소 제거

- 품질 내재화 : 개발 중 검증단계에 이르러서야 결함을 발견한다면 그 프로세스는 결함이 있는 것이다.

- 내재 : 어떤 현상이나 성질 따위가 일정한 사물이나 범위안에 들어 있음

- 지식 창출 : 과학적 방법 사용, 모든 사람들이 따라하고 잘 알려진 실천법을 표준에 포함하되, 누구든지 표준에 도전하고 변경하도록 장려.

- 늦은 확정 : 마지막까지 변화를 수용할 수 있도록 코드 작성.

- 빠른 인도 : 신속한 배포, 고품질, 저비용은 동시에 가능하다.

- 사람 존중 : 효과적인 리더쉽을 제공하고 팀은 자부심, 책임감, 신뢰, 칭찬을 통해 번성한다.

- 전체 최적화 : 고객요구에서 SW 배포까지 전체 가치흐름에 초점을 맞춘다.

 

 

 

※ 폭포수 방법론과 애자일 방법론의 비교