agile 개발 방식 이란?
: 신속한 반복 작업을 통해 실제 작동 가능한 소프트웨어를 지속 제공하는 개발 방식.
규정이 아닌 협업과 workflow를 바라보는 하나의 관점
cf) agile - 민첩한, 기민한
agile의 4 values 12 principles
4 values
1. 프로세스와 툴보다 개인과 상호작용을 우선(Individuals and Interactions Over Processes and Tools)
: 다른 무엇보다 사람을 중심에 둔 작업방식. 커뮤니케이션이 일례다.
2. 포괄적인 문서보다 작동하는 소프트웨어 중심(Working Software Over Comprehensive Documentation)
: 이때까지의 방식의 대부분은 문서화하는데 많은 시간을 쓴다.
agile은 이를 최소화 하고, 개발을 우선 시 하며, agile의 documentation은 사용자의 스토리 중심이다.
3. 고객과의 협업이 계약 협상보다 우선(Customer Collaboration Over Contract Negotiation)
: agile은 개발 과정에 주기적인 데모(테스트) 참여 형식으로 고객(사용자)을 협업에 참여시킨다.
이 과정에서 고객의 니즈와 맞닿게 된다.
4. 계획에 따르기 보다 즉각적인 변화에 대응(Responding to Change Over Following a Plan)
: 과거의 방식은 변화=비용 이었기에 피해왔으나 반복 주기를 최소화함으로써 이를 해결 가능하며
변화가 오히려 프로젝트의 가치를 향상시킨다.
12 principles
1. 가치 있는 소프트웨어를 초기에 지속 제공함으로써 지속적으로 고객을 만족시키는 것을 우선순위로 한다.
: 초기부터 개발물을 제공하는 것이 Risk도 감소하고 Value가 증가한다.
2. 개발 작업 후반부일지라도 요구사항 변경을 기꺼이 수용한다. 애자일 프로세스는 변화를 활용해 고객의 경쟁력에 도움이 되게 한다.
3. (짧은 주기) 2주에서 2개월 주기로 작동하는소프트웨어를 자주 제공하되, 더 짧은 시간 단위를 선호한다.
: 미리 예측한 요구사항(계약)을 따르기 보다는, 변화하는 고객/시장에 따라 요구사항도 변해야 한다.
4. 프로젝트 전반에 걸쳐 비즈니스 담당자들과 개발자들이 매일 함께 작업해야 한다.
5. 동기가 부여된 개인들을 중심으로 프로젝트를 구성한다. 구성원들이 필요로 하는 환경과 지원을 제공하고, 담당 업무를 완수할 것임을 신뢰한다.
6. 개발팀에 그리고 팀 내부에서 가장 효과적, 효율적으로 정보를 전달하는 방법은 대면 대화이다.
7. 작동하는 소프트웨어가 진척의 주된 척도이다.
: 80%의 기능이 100% 완성 되는 것 > 100%의 기능이 80% 완성 되는 것
8. 애자일 프로세스는 지속 가능한 개발을 장려한다. 스폰서, 개발자, 사용자들이 일정한 속도를 계속 유지할 수 있어야 한다.
: 애자일 프로세스는 초반부터 결과물을 내야하므로 초반이 더 힘들다. 그러나 지속적인 성과 내기에 효과적이다.
9. 우수한 기술과 좋은 설계, 디자인에 대한 지속적인 관심으로 agility을 향상시킨다.
:바빠서 기술적 개선을 못한다면 영원히 뒤쳐진다. 팀원의 성장역시 성공에 필수요소다.
10. 단순성 - 아직 하지 않은 작업량을 최대한 세분화하는 기술 - 은 필수적이다.
:단순하고 불량을 최소화하고 미사용 기능을 최소화 할수록 효과적이다.
:value가 존재하지 않는 task는 단순취합이고 낭비다.
11. 최고의 아키텍처, 요구사항 및 설계는 자율구성팀에서 비롯된다.
12. 팀은 정기적으로 더 효과적인 방법을 찾아서 반영한 다음, 그에 따라 업무 활동을 조율하고 조정한다.
agile의 핵심
사용자 정의-> 다뤄야할 문제와 기획->가치 범위에 관한 비전 문서화
agile 기법
스크럼기법
: 사람, 팀 및 조직의 복잡한 문제를 적응형 해결방법을 통해 가치를 창출하는데 도움이 되는 경량 프레임워크
sprint로 개발 및 검토하며 효율적인 협업 방법을 제공
특징
1. 솔루션에 포함할 기능/개선점에 대한 우선 순위 부여
2. 개발 주기 1~4주로, 개발 주기마다 동작할 수 있는 결과를 제공
->필요시 개발 기간 조율
3. 개발 주기마다 적용할 기능이나 개선에 대한 목록 제공
->주기마다 goal작성을 통해 기능의 목적 제공
4. 매일 15분 정도 scrum meeting\
-> 개발팀원만 참여, 팀원이 아닌 사람은 발언 기회 없음 PO 및 관리자가 함께 참석
한일, 할일, 이슈 등을 공유해야 함
5. 팀을 우선으로 생각
-> 자신의 task보다 주변 이슈가 더 급하면 도와야한다.
6.원활한 communication을 위해 구분 없는 열린 공간과 마음 유지
가치
courage, focus, commitment, respect, openess
사용자의 persona 정의 언제나 고객을 염두에 둠/
sprint의 형태 : 1~2주