[Agile]
2001냔 2월, "애자일 연합"이라는 그룹에서 '애자일 선언문'이라는 공동 선언서를 만들어 낸다.
http://agilemanifesto.org/principles.html
애자일 선언문
- 소프트웨어 개발의 기초 원칙과 정신으로 이야기 되고 있는 선언서
- 소프트웨어를 개발할 때 상호작용을 우선으로 하자는 선언문
애자일 선언문 내용
- 프로세스나 도구 보다는 개인과 상호 작용을
- 포괄적인 문서보다는 작동하는 소프트웨어를
- 계약에 대한 협상보다는 고객과의 협력을
- 계획을 고수하기 보다는 변화에 대응을
- 전자의 내용보단 후자의 내용쪽에 더 많은 가치를 넣자
애자일의 장점
- 변경이 포용 됨
- 계획주기가 짧으면 프로젝트 중 언제든지 변경 사항을 수용하고 수락하는 것이 쉽다.
- 최종 목표가 정의되지 않은 프로젝트에 대해서는 민첩함
- 프로젝트가 진행됨에 따라 목표가 밝혀진다.
- 더 빠른 고품질 제공
- 프로젝트를 반복단위로 분해하여 고객과 계속 소통을 함
- 강력한 팀 간 상호 작용
- Agile은 빈번한 의사 소통과 대면 인터렉션의 중요성을 강조하기 때문
- 고객은 전달되는 작업을 보고 입력을 공유하고 최종 제품에 실제 영향을 미칠 수 있는 많은 기회를 얻는다.
- 프로젝트 팀과 긴밀히 협력하여 소유권을 얻을 수 있음
- 지속적인 개선
- 민첩한 프로젝트는 전체 프로젝트에서 사용자 및 팀원으로부터 피드백을 유도하므로 학습 한 교훈은 향후 반복을 개선하는데 사용
애자일의 단점
- 납기일을 고정하기 어렵다
- 애자일 프로젝트 관리자는 종종 작업 우선 순위를 재 지정하기 때문에 어렵다
- 계속 고객과 소통을 해야하기 때문에 개선사항을 수정하느라 힘들수 도 있다.
- 팀은 지식이 있어야 한다
- 애자일 팀은 일반적으로 작기 때문에 팀 구성원은 다양한 영역에서 고도로 숙련되어야 한다.
- 초기 적응기간
- Agile은 개발 팀이 완전히 프로젝트에 전념 할 때 가장 성공적
- 문서는 무시 될 수 도 있다.
- 포괄적인 문서보다 작업 소프트웨어를 선호하기 때문
- 최종 제품은 매우 다를 수 있다.
- 초기 애자일 프로젝트는 최종 계획이 없을 수 있으므로 최종 제품은 초기와 다를 수 있다.
- 애자일 프로젝트는 매우 유연하기 때문에 고객 피드백을 기반으로 새로운것이 추가 될 수 있다.
애자일 개발 사이클
- 계획
- 아이디어가 실행 가능하고 실현 가능한지
- 요구 사항 분석
- 비지니스 요구 사항을 파악, 관계자와 사용자의 많은 회의가 필요
- 설계
- 요구사항을 토대로 작성
- 구현, 코딩 및 개발
- 기능을 만들고 테스트하고 배포
- 테스트
- 코드가 개발되면 요구 사항에 대해 테스트를 거쳐 제품이 실제로 고객의 요구 사항을 충족시키는지 확인
- 배치
- 고객에게 제공하여 제품을 사용할 수 있도록 함
애자일을 구현하기 위한 방법들(애자일 방법론이란 단어는 잘못 된 것)
- 익스트림 프로그래밍
- Lean Software Development(LSD)
- 소규모 프로그래밍에 적합함
- Kanban
- Scrum
- 가장 많이 알려진 방법
- FDD, DSDM 등 여러가지 방법들이 있다.
Scrum 방법론
- Agile의 하위 집합이며 Agile을 구현하기 위한 가장 널리 사용되는 프로세스 프레임워크중 하나
- 1~2주간 지속되는 스프린트라는 고정길이 반복을 통해 팀은 정기적 인종지에 소프트웨어를 제공
- 전대 변하지 않는 역할, 책임 및 모임을 따른다
- 스프린트 계획, 데일리 스탠드 업, 스프린트 데모 및 스프린트 회고와 같은 각 스프린트에 구조를 제공하는 4가지를 따른다.
Scrum에서의 역할
- 제품 소유자
- 스크럼 제품 소유자는 자신이 무엇을 만들고 싶은지에 대한 비전을 가지고 있음
- 스크럼 마스터
- 미팅을 조직하고 로드 블록 및 문제를 처리
- 애자일 관리자라고도 불림
- 스크럼 팀
- 5명 ~ 7명으로 구성되며 전통적인 개발 팀과 달리 프로그래머, 디자이너 또는 테스터와 같은 별개의 역할이 없음
- 모두가 함께 같은 일련의 작업을 완료한다.
Scrum 프로세스에서의 단계
- 백로그 수정 / 정리
- 한 스프린트가 끝나면 팀과 제품 소유자가 만나서 다음 스프린트에 대한 회의를 한다.
- 스프린트의 우선 순위를 재평가하거나 우선순위를 다시 설정한다.
- Daily Scrum meetings
- 15분간의 스탠딩 미팅으로 각 팀 구성원이 자신의 목표와 쟁점에 관해 얘기를 진행한다.
- 스프린트 검토 모임
- 각 스프린트가 끝날때 팀은 스프린트 검토 회의에서 완료 한 작업을 제공한다.
- 보고서나 PowerPoint 프레젠테이션이 아닌 실시간 데모가 있어야 한다.
- Sprint 회고
- 각 스프린트가 끝날 때 Scrum이 얼마나 잘 작동하고 있는지 파악하고 다음 스프린트에서 변경해야 할 사항에 대해서 이야기한다.
Scrum에서의 방법과 도구
- 스크럼 보드
- 스크럼 작업 보드로 스프린트 백 로그를 시각화 할 수 있다.
- 스크럼 팀은 전체 스프린트 동안 보드를 업데이트 해야한다.
- 사용자 스토리
- 고객의 관점에서 소프트웨어 기능을 설명
- [사용자의 유형]으로서 [목표를 달성 할 수 있도록][작업 수행]을 원한다의 구조로 작성
- 번 다운 차트
- 수치를 눈으로 볼 수 있는 차트
- 모든 수행된 작업들을 나타낸다.
- 일반적으로 가로축을 따라 시간과 함께 세로 축에 있다.
- 남은 작업은 스토리 포인트, 이상적인 날, 팀 일 또는 기타 매트릭으로 나타낼 수 있다.
- 계획에 따라 일이 진행되지 않는 경우 팀에 경고하고 의사 결정의 영향을 보여준다.
Waterfall?
- Waterfall 방법론은 순차적 인 선형 프로세스를 따르며 소프트웨어 엔지니어링 및 IT 프로젝트를 위한 개발 방법론
Kanban
- 시각적 표시, 카드의 일본어
- Agile을 구현하는 데 사용되는 시각적 프레임 워크로서 시점 및 수행을 보여줌
- 현재 시스템에 대한 작고 점진적인 변경을 권장하며 특정 설정이나 절차가 필요하지 않음
- 제품을 출시할때에는 사용하지 않지만, 제품을 유지보수할 때에는 Kanban을 자주 사용함
- Agile의 한 가지 방법
Kanban의 원칙
- 워크플로우 시각화
- 진행중인 작업 제한
- 흐름을 관리하고 향상시킴
- 명시적 프로세스 정책
- 지속적으로 개선됨
Agile vs Waterfall
- 유연성에서는 Agile이 더 좋음
- 요구상항은 Waterfall에서 작성해야하지만, Agile에서는 작성하지 않음
Agile vs Scrum
- Scrum은 철학이지만 Agile은 철학이 아님
- Agile은 방법론이 아니지만 Scrum은 방법론임
Kanban vs Agile
- Kanban은 지속적인 흐름을 가지고 있지만 Agile은 아님
- Kanban은 방법론이지만 Agile은 방법론이 아님
Kanban vs Scrum
- Kanban은 유지보수측면에서 유용, Scrum은 개발에서 유용
- Scrum은 요구사항을 추정하면서 만들 수 있지만, Kanban은 아니다
- Kanban은 하나의 보드를 사용하지만 Scrum은 아니다
그럼 Waterfall은 언제 사용해?
- 범위의 변경은 기대하지 않고, 고정된 가격 계약으로 작업하는 경우
- Scrum의 경우 가격 계약이 계속 변경
- 프로젝트는 매우 간단하거나 여러 번 해본 적이 있는 경우
- 요구 사항은 잘 알려져 있고 고정되어 있을 때
- 고객이 원하는 것을 정확하게 미리 알고 있는 경우
- 질서 정연하고 예측 가능한 프로젝트로 작업하고 있는 경우
그럼 Agile은 언제 사용해?
- 최종 제품이 명확하게 정의되어 있지 않음
- 클라이언트 / 이해 관계자가 범위를 변경할 수 있어야 함
- 변경 사항이 전체 프로세스 중에 구현되어야 함
- 개발자가 적응 가능하고 독립적으로 사고 할 수 있음
- 빠른 배포를 위해 최적화해야 하는 경우
그럼 Scrum은 언제 사용해?
- 프로젝트 요구 사항이 바뀌고 진화하는 경우
- 지속적인 피드백이 필요한 경우
- 작업의 대부분을 수행하는 방법을 파악해야 하는 경우
- 고정 된 날짜에 커밋할 필요가 없는 경우
- 프로젝트 팀이 자율성을 원하는 경우
- 정기적으로 소프트웨어를 제공해야 하는 경우
- 좋은 소프트웨어를 개발하고 싶은 경우
그럼 Kanban은 언제 사용해?
- 반복을 요구하지 않는 프로젝트
- 언제든지 배포 할 수 있는 것을 원하는 경우
- 팀이 변화를 선호할 때
- 팀이 가시성과 잘 어울릴 때
- 팀의 배포 흐름을 개선하고 싶을 때
- 이해하기 쉬운 시스템을 찾고 있을 때
'기타_ > 알쓸신잡' 카테고리의 다른 글
[알쓸신잡] 새로운 화폐 비트코인? BitCoin! (0) | 2020.06.29 |
---|---|
[Tistory] 단축키 지정 (0) | 2020.06.28 |
[알쓸신잡] 소프트웨어 개발 방법론 (0) | 2020.06.20 |
[알쓸신잡] 오픈소스(Open Source) 소개, 정리 (0) | 2020.06.17 |
[알쓸신잡] 윈도우 10 홈 원격 데스크톱 설정 (RDP wrapper) (0) | 2020.06.06 |
댓글