5. Agile
Learning Goals
- Agile(์ ์์ผ)์ iterative process practices(๋ฐ๋ณต์ ํ๋ก์ธ์ค ํ๋ํฐ์ค)์ ์งํฉ์ด์ customer needs(๊ณ ๊ฐ ์๊ตฌ)์ development(๊ฐ๋ฐ)๋ฅผ ์ผ์น์ํค๊ธฐ ์ํ business approach(๋น์ฆ๋์ค ์ ๊ทผ ๋ฐฉ์)๋ก ์ ์
- ์ฌ๋ฌ ์ผ๋ฐ์ ์ธ agile ํ๋ํฐ์ค ์ด๋ฉด์ motivation(๋๊ธฐ)์ ์ค๋ช ํ๊ณ tradeoffs(ํธ๋ ์ด๋์คํ)์ ๋ํด ์ถ๋ก
- scrum(์คํฌ๋ผ)๊ณผ extreme programming(์ต์คํธ๋ฆผ ํ๋ก๊ทธ๋๋ฐ) ์์ฝ, ํ๋ํฐ์ค ์ด๋ฉด์ ๋๊ธฐ ๋ฐ ํธ๋ ์ด๋์คํ ์ ๊ณต
- ์ฃผ์ด์ง ํ๋ ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ๊ฐ์ฅ ์ ํฉํ agile ์ ํต์ process practices(ํ๋ก์ธ์ค ํ๋ํฐ์ค) ์๋ณ ๋ฐ ์ ๋นํ
Agile Software Development Isโฆ
- ๋ค์ ๋ ๊ฐ์ง ๋ชจ๋ ํด๋น:
- (๊ณ ํ์ง ์ํํธ์จ์ด์ rapid delivery(์ ์ํ ์ ๋ฌ)์ ํ์ฉํ๋) software engineering best practices(์ํํธ์จ์ด ์์ง๋์ด๋ง ๋ชจ๋ฒ ์ฌ๋ก)์ ์งํฉ
- (development(๊ฐ๋ฐ)์ customer needs(๊ณ ๊ฐ ์๊ตฌ) ๋ฐ goals(๋ชฉํ)์ ์ผ์น์ํค๋) business approach(๋น์ฆ๋์ค ์ ๊ทผ ๋ฐฉ์)
Brief History of Agile
- [Agile์ ๊ฐ๋ตํ ์ญ์ฌ diagram]
The Manifesto for Agile Software Development(2001)
- ๊ฐ์น(Value)
- Processes and tools(ํ๋ก์ธ์ค์ ๋๊ตฌ)๋ณด๋ค Individuals and interactions(๊ฐ์ธ๊ณผ ์ํธ์์ฉ)
- Comprehensive documentation(ํฌ๊ด์ ์ธ ๋ฌธ์)๋ณด๋ค Working software(์๋ํ๋ ์ํํธ์จ์ด)
- Contract negotiation(๊ณ์ฝ ํ์)๋ณด๋ค Customer collaboration(๊ณ ๊ฐ๊ณผ์ ํ๋ ฅ)
- Following a plan(๊ณํ ์ค์)๋ณด๋ค Responding to change(๋ณํ์ ๋์)
The Twelve Principles of Agile Software Development
- Projects(ํ๋ก์ ํธ)๋ motivated individuals(๋๊ธฐ ๋ถ์ฌ๋ ๊ฐ์ธ)์ ์ค์ฌ์ผ๋ก ๊ตฌ์ถ๋๋ฉฐ, ์ด๋ค์ ์ ๋ขฐ๋ฐ์์ผ ํจ
- Face-to-face conversation(๋๋ฉด ๋ํ)๋ ์ต์์ communication(์์ฌ์ํต) ํํ(co-location(๋์ผ ์ฅ์ ๊ทผ๋ฌด))
- Self-organizing teams(์๊ธฐ ์กฐ์งํ ํ)
- Working software(์๋ํ๋ ์ํํธ์จ์ด)๋ฅผ frequently(์์ฃผ)(months(๋ช ๋ฌ) ๋จ์๊ฐ ์๋ weeks(๋ช ์ฃผ) ๋จ์๋ก) ์ ๋ฌ
- Working software(์๋ํ๋ ์ํํธ์จ์ด)๊ฐ progress(์งํ ์ํฉ)์ ์ฃผ๋ ์ฒ๋
- ์ผ์ ํ ์๋๋ฅผ ์ ์งํ ์ ์๋ Sustainable development(์ง์ ๊ฐ๋ฅํ ๊ฐ๋ฐ)
- technical excellence(๊ธฐ์ ์ ํ์์ฑ)์ ์ข์ design(์ค๊ณ)์ ๋ํ ์ง์์ ์ธ ๊ด์ฌ
- Simplicity(๋จ์์ฑ)โ์ํํ์ง ์๋ ์์
์ ์์ ๊ทน๋ํํ๋ ๊ธฐ์ โ๊ฐ ํ์์
- (์ฐ๊ด ๊ฐ์น: Individuals and interactions, Working software)
- ์ ์ฉํ ์ํํธ์จ์ด์ rapid delivery(์ ์ํ ์ ๋ฌ)์ ํตํ Customer satisfaction(๊ณ ๊ฐ ๋ง์กฑ)
- ๋น์ฆ๋์ค ๋ด๋น์์ ๊ฐ๋ฐ์ ๊ฐ์ ๊ธด๋ฐํ ์ผ์ผ cooperation(ํ๋ ฅ)
- development(๊ฐ๋ฐ) ํ๋ฐ๋ถ์ผ์ง๋ผ๋ changing requirements(์๊ตฌ์ฌํญ ๋ณ๊ฒฝ) ํ์
- ๋ณํํ๋ ํ๊ฒฝ(circumstances)์ ๋ํ ์ ๊ธฐ์ ์ธ adaptation(์ ์)
- (์ฐ๊ด ๊ฐ์น: Customer collaboration, Responding to change)
Agile Practices
- Backlogs(Product and Sprint)(๋ฐฑ๋ก๊ทธ(์ ํ ๋ฐ ์คํ๋ฆฐํธ))
- Behavior-driven development(BDD)(ํ๋ ์ฃผ๋ ๊ฐ๋ฐ)
- Cross-functional team(๋ค๊ธฐ๋ฅ ํ)
- Continuous integration(CI)(์ง์์ ์ธ ํตํฉ)
- Domain-driven design(DDD)(๋๋ฉ์ธ ์ฃผ๋ ์ค๊ณ)
- Information radiators(์ ๋ณด ๋ฐฉ์ฌ๊ธฐ)(Kanban board, Task board, Burndown chart)
- Acceptance test-driven development(ATDD)(์ธ์ ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ)
- Iterative and incremental development(IID)(๋ฐ๋ณต์ ๋ฐ ์ฆ๋ถ ๊ฐ๋ฐ)
- Pair programming(ํ์ด ํ๋ก๊ทธ๋๋ฐ)
- Planning poker(ํ๋๋ ํฌ์ปค)
- Refactoring(๋ฆฌํฉํ ๋ง)
- Scrum meetings(์คํฌ๋ผ ๋ฏธํ )(Sprint planning, Daily scrum, Sprint review and retrospective)
- Small releases(์๊ท๋ชจ ๋ฆด๋ฆฌ์ค)
- Simple design(๋จ์ํ ์ค๊ณ)
- Test-driven development(TDD)(ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ)
- Agile testing(์ ์์ผ ํ ์คํ )
- Timeboxing(ํ์๋ฐ์ฑ)
- Use case(์ ์ค ์ผ์ด์ค)
- User story(์ฌ์ฉ์ ์คํ ๋ฆฌ)
- Story-driven modeling(์คํ ๋ฆฌ ์ฃผ๋ ๋ชจ๋ธ๋ง)
- Retrospective(ํ๊ณ )
- On-site customer(์์ฃผ ๊ณ ๊ฐ)
- Agile Modeling(์ ์์ผ ๋ชจ๋ธ๋ง)
- 40-hour weeks(์ฃผ 40์๊ฐ ๊ทผ๋ฌด)
- Short development cycles(์งง์ ๊ฐ๋ฐ ์ฃผ๊ธฐ)
- Collective ownership(๊ณต๋ ์์ ๊ถ)
- Open workspace(๊ฐ๋ฐฉํ ์ ๋ฌด ๊ณต๊ฐ)
- Velocity tracking(์๋ ์ถ์ )
- Etc.
40-hour Weeks
- 2์ฃผ ์ฐ์ overtime(์ด๊ณผ ๊ทผ๋ฌด) ๋ถ๊ฐ
- ๋จ๋ฐ์ ์ธ overtime(์ด๊ณผ ๊ทผ๋ฌด)๋ผ๋ ๋๋ฌด ์ฆ์ผ๋ฉด ํด๊ฒฐํด์ผ ํ ๋ ๊น์ ๋ฌธ์ ์ ์งํ
- ๋ถํํ๋, ํนํ ๋ํ๋ฏผ๊ตญ์์ ๋ฐ๋ฅด๊ธฐ ๊ฐ์ฅ ์ด๋ ค์ด agile practice(์ ์์ผ ํ๋ํฐ์ค) ์ค ํ๋
Planning Poker
- How to play(๊ฒ์ ๋ฐฉ๋ฒ)
- ๋ค์ task(์์ ) ๋ญ๋
- task(์์ ) ํ ๋ก
- Estimate(์ถ์ ): ๋ชจ๋๊ฐ ์์ ์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ ์นด๋๋ฅผ ์ ํํ๊ณ ๋์์ ์ ์ ๊ณต๊ฐ
- Discussion(ํ ๋ก ): universal consensus(๋ง์ฅ์ผ์น)๊ฐ ์๋๋ฉด, ๊ฐ์ฅ ๋ฎ๊ฑฐ๋ ๋์ ์ ์๋ฅผ ๋ธ ์ฌ๋์๊ฒ ์ด์ ์ง๋ฌธ
- Re-estimate(์ฌ์ถ์ )
- Gain consensus(ํฉ์ ๋๋ฌ)
- Benefits(์ฅ์ ):
- task(์์ )๋ค์ ์๋ก ์๋์ ์ผ๋ก ์ถ์ ํ๊ธฐ ์ฌ์
- Equal voice(๋๋ฑํ ๋ฐ์ธ๊ถ)
- Equal contribution(๋๋ฑํ ๊ธฐ์ฌ)
Collective Ownership
- ๋ชจ๋ programmer(ํ๋ก๊ทธ๋๋จธ)๋ ๊ธฐํ๊ฐ ๋ณด์ด๋ฉด ์ธ์ ๋ ์์คํ ์ด๋์์๋ ๋ชจ๋ code(์ฝ๋)๋ฅผ ๊ฐ์
- ํ์ค์ ์ผ๋ก, ์ ์ฒด product(์ ํ)์ ๋ํด ๋ถ๊ฐ๋ฅ
- Windows, Chrome, Android ๋ฑ์ ๋ชจ๋ ๋ผ์ธ์ ๋๊ฐ ์ ์ ์๋๊ฐ
- ๋ ์์ ๋ถ๋ถ์ ๋ํด collective ownership(๊ณต๋ ์์ ๊ถ) ๊ตฌํ ๊ฐ๋ฅ
Kanban Board
[Image of a Kanban board]
Simple Design
- "๋ชจ๋ ๊ฒ์ ํ ๋ฒ๋ง ๋งํ๋ผ"
- ๋งค ์๊ฐ, design(์ค๊ณ)๋ ๋ชจ๋ tests(ํ ์คํธ)๋ฅผ ์คํํ๊ณ , programmers(ํ๋ก๊ทธ๋๋จธ)๊ฐ ์ ๋ฌํ๊ณ ์ ํ๋ ๋ชจ๋ ๊ฒ์ ์ ๋ฌํ๋ฉฐ, duplicate code(์ค๋ณต ์ฝ๋)๊ฐ ์๊ณ , ์ต์ํ์ classes(ํด๋์ค)์ methods(๋ฉ์๋)๋ฅผ ๊ฐ์ง
On-site Customer
- customer(๊ณ ๊ฐ)๊ฐ team(ํ)๊ณผ full-time(์์) ํจ๊ป ์๋ฆฌํจ
- On-site customer(์์ฃผ ๊ณ ๊ฐ)๋ ํนํ requirement elicitation(์๊ตฌ์ฌํญ ๋์ถ) ๋ฐ testing(ํ ์คํ )์ ๋งค์ฐ ํจ๊ณผ์
- ๋ถํํ๋, on-site customer(์์ฃผ ๊ณ ๊ฐ)๋ ๋ฐ๋ฅด๊ธฐ ๊ฐ์ฅ ์ด๋ ค์ด agile practice(์ ์์ผ ํ๋ํฐ์ค) ์ค ํ๋
Pair Programming
- Developers(๊ฐ๋ฐ์)๊ฐ pairs(์)์ ์ด๋ค ์์ ํ๋ฉฐ, ์๋ก์ ์์ ์ checking(ํ์ธ)ํ๊ณ ํญ์ ์ข์ ์์ ์ ์ํํ๋๋ก support(์ง์) ์ ๊ณต
- ๋ ๊ฐ์ง ์ญํ : Driver(๋๋ผ์ด๋ฒ)์ Navigator(๋ด๋น๊ฒ์ดํฐ)
- Driver(๋๋ผ์ด๋ฒ)๋ code(์ฝ๋) ์์ฑ
- Navigator(๋ด๋น๊ฒ์ดํฐ)๋ Driver(๋๋ผ์ด๋ฒ) ์๋ด
Short Development Cycle
- software development process(์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค)๊ฐ design phase(์ค๊ณ ๋จ๊ณ)๋ถํฐ implementation phase(๊ตฌํ ๋จ๊ณ), test(ํ ์คํธ) ๋ฐ deployment phase(๋ฐฐํฌ ๋จ๊ณ)๊น์ง์ ์ ์ฒด software development cycle(์ํํธ์จ์ด ๊ฐ๋ฐ ์ฃผ๊ธฐ)์ด short timespan(์งง์ ๊ธฐ๊ฐ)(๋ณดํต ๋ช ๋ฌ ๋๋ ๋ช ์ฃผ) ๋ด์ ์ํ๋๋ ๋ฐฉ์์ผ๋ก ๊ตฌ์ฑ๋จ
Small Releases
- ์์คํ ์ ์ ์ฒด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ , ๋ช ๋ฌ ๋ด์ production(์ด์ ํ๊ฒฝ)์ ๋ฐฐํฌ๋จ
- ์๋ก์ด releases(๋ฆด๋ฆฌ์ค)๋ ๋งค์ผ์์ ๋งค์๊น์ง ์์ฃผ ์ด๋ฃจ์ด์ง
Continuous Integration(CI)
- ์๋ก์ด code(์ฝ๋)๋ ์ต๋ ๋ช ์๊ฐ ๋ด์ ํ์ฌ system(์์คํ )๊ณผ integrated(ํตํฉ)๋จ
- ํตํฉ ์, system(์์คํ )์ ์ฒ์๋ถํฐ built(๋น๋)๋๋ฉฐ ๋ชจ๋ tests(ํ ์คํธ)๊ฐ ํต๊ณผํด์ผ ํจ. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ณ๊ฒฝ ์ฌํญ์ discarded(ํ๊ธฐ)๋จ
Test-driven Development
- Programmers(ํ๋ก๊ทธ๋๋จธ)๋ ๋ถ ๋จ์๋ก unit tests(๋จ์ ํ ์คํธ) ์์ฑ
- ์ด tests(ํ ์คํธ)๋ค์ ์์ง๋๋ฉฐ, ๋ชจ๋ ์ฌ๋ฐ๋ฅด๊ฒ ์คํ๋์ด์ผ ํจ
- Customers(๊ณ ๊ฐ)๋ iteration(๋ฐ๋ณต) ๋ด์ stories(์คํ ๋ฆฌ)์ ๋ํ functional tests(๊ธฐ๋ฅ ํ ์คํธ) ์์ฑ
Open Workspace
- Pros(์ฅ์ )
- Communication(์์ฌ์ํต)
- Flexible(์ ์ฐํจ)
- Visually pleasing(์๊ฐ์ ์ผ๋ก ๋ง์กฑ์ค๋ฌ์)
- Cons(๋จ์ )
- Lack of privacy(ํ๋ผ์ด๋ฒ์ ๋ถ์กฑ)
- Distractions(์ง์ค ๋ฐฉํด ์์)
- Anxiety(๋ถ์๊ฐ)
Software Development Problems and Mitigating Agile Methods
Requirement changes(์๊ตฌ์ฌํญ ๋ณ๊ฒฝ)
- Close relation with customer(๊ณ ๊ฐ๊ณผ์ ๊ธด๋ฐํ ๊ด๊ณ)
- Short development cycle(์งง์ ๊ฐ๋ฐ ์ฃผ๊ธฐ)
- Small releases(์๊ท๋ชจ ๋ฆด๋ฆฌ์ค)
- Planning poker
- Kanban board
Scope creep(๋ฒ์ ์ฆ๊ฐ)
- Short development cycle
- Small releases
- Planning poker
Architecture erosion(์ํคํ ์ฒ ์นจ์)
- Collective ownership(๊ณต๋ ์์ ๊ถ)
- Pair programming(ํ์ด ํ๋ก๊ทธ๋๋ฐ)
Under- or overestimation(๊ณผ์ ๋๋ ๊ณผ๋ ์ถ์ )(์๊ฐ ๋ฐ ์์ฐ), sticking to the plan(๊ณํ ๊ณ ์)
- Close relation with customer
- Planning poker
- Short development cycle
- Small releases
Bringing in new developers(์ ๊ท ๊ฐ๋ฐ์ ํฌ์ )(๊ต์ก ์๊ฐ ๋ฐ ๋ ธ๋ ฅ), steep learning curve(๊ฐํ๋ฅธ ํ์ต ๊ณก์ )
- Collective ownership
- Planning poker
Change of management(๊ฐ๋ฐ ๊ณผ์ ์ค ๊ฒฝ์์ง ๋ณ๊ฒฝ)
- Close relationship with customer
Introducing new bugs(์ํํธ์จ์ด ๊ฐ๋ฐ ์ค ์๋ก์ด ๋ฒ๊ทธ ๋ฐ์)
- 40-hour week(์ฃผ 40์๊ฐ ๊ทผ๋ฌด)
- Collective ownership
- Short development cycle
- Small releases
- Tests(ํ ์คํธ)
- CI(์ง์์ ์ธ ํตํฉ)
- Pair programming
Challenge of communication(์์ฌ์ํต์ ์ด๋ ค์)
- Close relation with customer
Developer turnover(๊ฐ๋ฐ์ ์ด์ง)
- Collective ownership
- 40-hour week
Integration issues(ํตํฉ ๋ฌธ์ )
- Collective ownership
Difficulty of tracking bugs(๋ฒ๊ทธ ์ถ์ ์ ์ด๋ ค์)
- Collective ownership
- Short development cycle
- Small releases
- CI
- Tests
Disagreement between developers(๊ฐ๋ฐ์ ๊ฐ ๋ถ์ผ์น)
- Close relation with customer
Scheduling problems(์ผ์ ๋ฌธ์ )(global team(๊ธ๋ก๋ฒ ํ))
- Close relation with customer
"Groupthink"(๊ทธ๋ฃน์ฑํฌ)(๊ฐ๋ฐ์๋ค์ด ์๋ก ๋์ํ๋ ๊ฒฝํฅ, ๊ณตํต ์ฌ๊ณ ), fear of hurting the feelings(๋ค๋ฅธ ๊ฐ๋ฐ์ ๊ฐ์ ์ํ ๊น ๋ด ๋๋ ค์)
- Planning poker
- Pair programming
Challenges with integrating with legacy code(๋ ๊ฑฐ์ ์ฝ๋ ํตํฉ์ ์ด๋ ค์)
- Collective ownership
Scrum
Introduction to Scrum
- [Image illustrating the Scrum framework]
Elements of Scrum
- Products(์ฐ์ถ๋ฌผ):
- Product Backlog(์ ํ ๋ฐฑ๋ก๊ทธ)
- Sprint Backlog(์คํ๋ฆฐํธ ๋ฐฑ๋ก๊ทธ)
- Process(ํ๋ก์ธ์ค):
- Sprint Planning Meeting(์คํ๋ฆฐํธ ๊ณํ ํ์)
- Daily Scrum Meeting(์ผ์ผ ์คํฌ๋ผ ํ์)
- Sprint Retrospective(์คํ๋ฆฐํธ ํ๊ณ )
- Sprint Review Meeting(์คํ๋ฆฐํธ ๊ฒํ ํ์)
Product Backlog / Sprint Backlog
- product backlog(์ ํ ๋ฐฑ๋ก๊ทธ)๋ product(์ ํ)๋ฅผ ์ํ ๋ชจ๋ features(๊ธฐ๋ฅ)
- sprint backlog(์คํ๋ฆฐํธ ๋ฐฑ๋ก๊ทธ)๋ ํด๋น sprint(์คํ๋ฆฐํธ)์์ ์์ ํ ๋ชจ๋ features(๊ธฐ๋ฅ). ์ด๋ ๊ฐ๋ณ tasks(์์ )๋ก ๋ถํ ๋์ด์ผ ํจ:
- Fine-grained(์ธ๋ถํ๋จ)
- Estimated(์ถ์ ๋จ)
- ๊ฐ๋ณ team members(ํ์)์๊ฒ Assigned(ํ ๋น๋จ)
- Acceptance criteria(์ธ์ ๊ธฐ์ค)์ด ์ ์๋์ด์ผ ํจ
- User Stories(์ฌ์ฉ์ ์คํ ๋ฆฌ)๊ฐ ์์ฃผ ์ฌ์ฉ๋จ
Backlog โ Information Radiators
Scrum Meetings
- Sprint Planning Meeting(์คํ๋ฆฐํธ ๊ณํ ํ์)
- Entire Team(์ ์ฒด ํ)์ด ํด๋น sprint(์คํ๋ฆฐํธ)์์ ๋ค๋ฃฐ ๋ด์ฉ์ ํจ๊ป ๊ฒฐ์
- Daily Scrum Meeting(์ผ์ผ ์คํฌ๋ผ ํ์)
- ๋ค์ ์ฌํญ์ ํ์ธํ๊ธฐ ์ํ Quick Meeting(๋น ๋ฅธ ํ์):
- ๋ฌด์์ ํ๋๊ฐ? ๋ค์์ ๋ฌด์์ ํ ๊ฒ์ธ๊ฐ? ๋ฌด์์ ๋งํ๊ฑฐ๋ ๋์์ด ํ์ํ๊ฐ?
- Sprint Retrospective(์คํ๋ฆฐํธ ํ๊ณ )
- sprint process(์คํ๋ฆฐํธ ํ๋ก์ธ์ค) ๊ฒํ
- Sprint Review Meeting(์คํ๋ฆฐํธ ๊ฒํ ํ์)
- Product(์ ํ) ๊ฒํ
User Stories
- [Image illustrating the user story format]
The Card
"As a [role], I want [function], so that [value]" -> "[์ญํ ]๋ก์, [๊ฐ์น]๋ฅผ ์ํด [๊ธฐ๋ฅ]์ ์ํ๋ค"
- 3x5 ์นด๋์ ๋ง์์ผ ํจ
The Conversation
- project(ํ๋ก์ ํธ)์ ์ฐธ์ฌํ๋ ๋ชจ๋ ์ฌ๋๊ณผ client(๊ณ ๊ฐ) ๊ฐ์ ์ด๋ฆฐ dialog(๋ํ)
- ํ์์ Epic Stories(์ํฝ ์คํ ๋ฆฌ) ๋ถํ
The Confirmation
- task(์์ )์ด ์๋ฃ๋์์ ๋๋ฅผ ๋ณด์ฌ์ฃผ๋ confirmation criterion(ํ์ธ ๊ธฐ์ค)
- automated(์๋ํ)๋๊ฑฐ๋ manual(์๋)์ผ ์ ์์
How to Evaluate User Story?
eXtreme Programming(XP)
- [Image comparing human evolution to XP evolution]
XP Practices(subset of Agile!)
- TDD(test-first approach)(ํ ์คํธ ์ฐ์ ์ ๊ทผ ๋ฐฉ์)
- Planning game(ํ๋๋ ๊ฒ์): 1-3์ฃผ iterations(๋ฐ๋ณต), ํ ๋ฒ์ ํ๋์ iteration(๋ฐ๋ณต), customer(๊ณ ๊ฐ)๊ฐ ์ฌ์ฉํ user stories(์ฌ์ฉ์ ์คํ ๋ฆฌ) ๊ฒฐ์
- Whole team/on-site customer(์ ์ฒด ํ/์์ฃผ ๊ณ ๊ฐ): "๊ณ ๊ฐ์ ํ๋์ ๋ชฉ์๋ฆฌ๋ก ๋งํจ." Customer(๊ณ ๊ฐ)๊ฐ whole team(์ ์ฒด ํ)์ผ ์ ์์
- Small releases(์๊ท๋ชจ ๋ฆด๋ฆฌ์ค), ๊ฐ์น ์๋ functionality(๊ธฐ๋ฅ) ํฌํจ, ๋ถ๋ง์กฑ์ค๋ฌ์ด customers(๊ณ ๊ฐ) ๋ฐฉ์ง
- System metaphor(์์คํ ๋ฉํํฌ)๋ ์๋ ๋ฐฉ์์ ๋ํ ๋จ์ผ ๊ณต์ ์คํ ๋ฆฌ(architecture(์ํคํ ์ฒ)์ ์ ์ฌ)
- Simplest thing that possibly works(์๋ ๊ฐ๋ฅํ ๊ฐ์ฅ ๋จ์ํ ๊ฒ)(์ค๋์ ์ํ ์ฝ๋ฉ)
- ํ๋ก๊ทธ๋๋ฐ ์ up-front design(์ฌ์ ์ค๊ณ)๊ฐ ์์ผ๋ฏ๋ก ํญ์ Refactor(๋ฆฌํฉํ ๋ง)
- Collective ownership(๊ณต๋ ์์ ๊ถ). ๋ชจ๋๊ฐ ๋ชจ๋ ๊ฒ์ ์ฑ ์. Programmer(ํ๋ก๊ทธ๋๋จธ)๊ฐ ๋ง์ ์ ๋๋ ๊ฒ์ ๋ณด๋ฉด ๋ณ๊ฒฝ ๊ฐ๋ฅ. Task ownership(์์ ์์ ๊ถ)์ ๊ฐ์ธ
- Pair programming(ํ์ด ํ๋ก๊ทธ๋๋ฐ). prototypes(ํ๋กํ ํ์ ) ๊ฐ์ non-production code(๋น์ด์ ์ฝ๋)๋ ํผ์ code(์ฝ๋ฉ) ๊ฐ๋ฅ
- Continuous Integration(์ง์์ ์ธ ํตํฉ). ์ต๋ ํ๋ฃจ ๋จ์ development(๊ฐ๋ฐ)
- Sustainable pace(์ง์ ๊ฐ๋ฅํ ์๋). 40 hour work weeks(์ฃผ 40์๊ฐ ๊ทผ๋ฌด)
- Coding standards(์ฝ๋ฉ ํ์ค), ํนํ ๋ชจ๋ code(์ฝ๋)๊ฐ ํญ์ ๋ณ๊ฒฝ๋ ์ ์์ผ๋ฏ๋ก
Scrum vs XP
| Aspects(์ธก๋ฉด) | Practices(ํ๋ํฐ์ค) | Scrum | XP |
|---|---|---|---|
| Iteration Length(๋ฐ๋ณต ๊ธธ์ด) | 2-4์ฃผ | 1-2์ฃผ | |
| Handle Changes with an Iteration(๋ฐ๋ณต ์ค ๋ณ๊ฒฝ ์ฒ๋ฆฌ) | ์๊ตฌ์ฌํญ ์์ ํ์ฉ ์ฌ๋ถ | Scrum์ ํ์ฉ๋์ง ์์. ๋ฐ๋ณต์ด ์๋ฃ๋๋ฉด ๋ณ๊ฒฝ ๋ถ๊ฐ, Scrum Master(์คํฌ๋ผ ๋ง์คํฐ)๊ฐ ์๊ฒฉํ ํ์ธ | ๊ตฌํ๋์ง ์์ need(์๊ตฌ)๊ฐ ์์ ๋ ๋ค๋ฅธ ์๊ตฌ์ฌํญ์ผ๋ก ๊ต์ฒด ๊ฐ๋ฅ, ๋จ ๊ตฌํ ์๊ฐ์ ๋์ผ |
| Priority of Features(๊ธฐ๋ฅ ์ฐ์ ์์) | ์๊ตฌ๊ฐ ์๊ฒฉํ ์ฐ์ ์์์ ๋ฐ๋ฅด๋์ง ์ฌ๋ถ | ๊ทธ๋ด ํ์ ์์ | ์ |
| Engineering Practices(์์ง๋์ด๋ง ํ๋ํฐ์ค) | ์งํ ๋๋ ํ์ง ๋ณด์ฆ์ ์ํ ์๊ฒฉํ ์์ง๋์ด๋ง ๋ฐฉ๋ฒ ์ฑํ ์ฌ๋ถ | ๊ฐ๋ฐ์๊ฐ ์์ํ ๊ฒ์ ์๊ตฌ | ๋งค์ฐ ์๊ฒฉ |
The Manifesto for Agile Software Development(2001)
- ๊ฐ์น(Value)
- Processes and tools(ํ๋ก์ธ์ค์ ๋๊ตฌ)๋ณด๋ค Individuals and interactions(๊ฐ์ธ๊ณผ ์ํธ์์ฉ)
- Comprehensive documentation(ํฌ๊ด์ ์ธ ๋ฌธ์)๋ณด๋ค Working software(์๋ํ๋ ์ํํธ์จ์ด)
- Contract negotiation(๊ณ์ฝ ํ์)๋ณด๋ค Customer collaboration(๊ณ ๊ฐ๊ณผ์ ํ๋ ฅ)
- Following a plan(๊ณํ ์ค์)๋ณด๋ค Responding to change(๋ณํ์ ๋์)
