Agile Development
Discover -> Design -> Develop -> Test
의 과정을 짧은 주기로 여러번 반복을 거친다.비교 대상 | 애자일 방법론 | 전통적 방법론 |
---|---|---|
계획 수립 | 유동적 범위 설정 | 확정적 범위 설정 |
업무 수행 | 팀 중심 업무 수행 | 관리자 주도적 명령과 통제, 개인 단위로 업무 수행 |
개발/검증 | 반복 주기 단위로 SW를 개발/검증 | 분석>설계>구현>테스트를 순차적으로 수행 |
팀 관리 | 업무 몰입, 팀 평가 | 경쟁, 개별 평가 |
문서화 | 문서화보다는 코드를 강조 | 상세한 문서화 강조 |
성공 요소 | 고객 가치 전달 | 계획/일정 준수 |
유형 | XP, 스크럼, 린 | 폭포수, 프로토타입, 나선형 |
eXtreme Programming
의사소통 개선과 즉각적 피드백으로 소프트웨어의 품질을 높이기 위한 방법론
Courage
: 코드 작성 전 테스트, 빠르게 피드백, 테스트에 부합하지 못할 경우 리팩토링할 수 있는 용기!Simplicity
: 필요한 것만 한다!Communication
: 원활한 소통Feedback
: 빠른 피드백Respect
: 팀원 간 상호 존중짝 프로그래밍 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
효과적인 공동 작업을 위해 모든 코드에 대한 코딩 표준을 정의한다.
매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론
백로그 Backlog
: 제품과 프로젝트에 대한 요구사항
(백로그를 스프린트 백로그로 나눈 각각의 스프린트 백로그를 하나의 스프린트 기간동안 수행한다.)
스프린트: 개발 기간(반복 기간)
스크럼 미팅: == 데일리 미팅
스크럼 마스터: 리더
스프린트 회고 Sprint Retrospective
: 스프린트 주기를 되돌아보며 개선사항 등을 논의하는 미팅, 스프린트가 끝난 시점이나 일정 주기로 시행
번다운 차트: 남은 일의 양을 그래프로 표현한 것(남아있는 백로그 대비 시간)
도요타의 린 시스템 품질 기법을 소프트웨어 개발 프로세스에 적용해 낭비 요소를 제거하여 품질을 향상시킨 방법론
JIT(Just In Time), 칸반(Kanban) 보드 사용
7가지 원칙: 낭비 제거, 품질 내재화, 지식 창출, 늦은 확정, 빠른 인도, 사람 존중, 전체 최적화