• Mindscape ๐Ÿ”ฅ
    • Playlist ๐ŸŽง
  • ๐Ÿค– Artifical Intelligence

    • 1. Basics; Linear Algebra
    • 2. Basics; Linear Algebra (2), Search (1)
    • 3. Search (2)
    • 4. Knowledge and Logic (1)
    • 5. Knowledge and Logic (2)
    • 6. Probability
    • 7. Information Theory
    • 8. Probabilitc Reasoning (2)
    • 9. Probabilitc Reasoning (3)
    • 10. Machine Learning (1)
    • 11. Machine Learning (2)
    • 12. Machine Learning (3)
    • 13. Linear Models
    • 14. Other Classic ML Models (1)
    • 15. Other Classic ML Models (2)
  • ๐Ÿ”’ Computer Security

    • 01. Overview
    • 02. ์ •๋ณด๋ณด์•ˆ์ •์ฑ… ๋ฐ ๋ฒ•๊ทœ
    • 03. Cryptographic Tools
    • 04. User Authentication
    • 05. Access Control
    • 06. Database Security
    • 07. Malicious Software
    • 08. Firmware Analysis
  • ๐Ÿ—„๏ธ Database System

    • 1. Introduction
    • 2. Relational Model
    • 3. SQL
    • 6. E-R Model
    • 7. Relational Database Design (1)
    • 7. Relational Database Design (2)
    • 13. Data Storage Structures
    • 14. Indexing
    • 15. Query Processing
  • ๐Ÿ“ Software Engineering

    • 2. Introduction to Software Engineering
    • 3. Process
    • 4. Process Models
    • 5. Agile
    • 6. Requirements
    • 7. Requirements Elicitation and Documentation
    • 8. Architecture
    • 9. Unified Modelling Language
    • 10. Object-Oriented Analysis
    • Object-Oriented Design
  • ๐Ÿง  Algorithm

    • Python ์‹œ๊ฐ„ ์ดˆ๊ณผ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•œ ํŒ
    • C++ std::vector ์‚ฌ์šฉ๋ฒ• ์ •๋ฆฌ
    • Vim ์‚ฌ์šฉ ๋งค๋‰ด์–ผ
    • 1018๋ฒˆ: ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ
    • 1966๋ฒˆ: ํ”„๋ฆฐํ„ฐ ํ

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

  1. Projects(ํ”„๋กœ์ ํŠธ)๋Š” motivated individuals(๋™๊ธฐ ๋ถ€์—ฌ๋œ ๊ฐœ์ธ)์„ ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ์ถ•๋˜๋ฉฐ, ์ด๋“ค์€ ์‹ ๋ขฐ๋ฐ›์•„์•ผ ํ•จ
  2. Face-to-face conversation(๋Œ€๋ฉด ๋Œ€ํ™”)๋Š” ์ตœ์ƒ์˜ communication(์˜์‚ฌ์†Œํ†ต) ํ˜•ํƒœ(co-location(๋™์ผ ์žฅ์†Œ ๊ทผ๋ฌด))
  3. Self-organizing teams(์ž๊ธฐ ์กฐ์งํ™” ํŒ€)
  4. Working software(์ž‘๋™ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด)๋ฅผ frequently(์ž์ฃผ)(months(๋ช‡ ๋‹ฌ) ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ weeks(๋ช‡ ์ฃผ) ๋‹จ์œ„๋กœ) ์ „๋‹ฌ
  5. Working software(์ž‘๋™ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด)๊ฐ€ progress(์ง„ํ–‰ ์ƒํ™ฉ)์˜ ์ฃผ๋œ ์ฒ™๋„
  6. ์ผ์ •ํ•œ ์†๋„๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” Sustainable development(์ง€์† ๊ฐ€๋Šฅํ•œ ๊ฐœ๋ฐœ)
  7. technical excellence(๊ธฐ์ˆ ์  ํƒ์›”์„ฑ)์™€ ์ข‹์€ design(์„ค๊ณ„)์— ๋Œ€ํ•œ ์ง€์†์ ์ธ ๊ด€์‹ฌ
  8. Simplicity(๋‹จ์ˆœ์„ฑ)โ€”์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š” ์ž‘์—…์˜ ์–‘์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๊ธฐ์ˆ โ€”๊ฐ€ ํ•„์ˆ˜์ 
    • (์—ฐ๊ด€ ๊ฐ€์น˜: Individuals and interactions, Working software)
  9. ์œ ์šฉํ•œ ์†Œํ”„ํŠธ์›จ์–ด์˜ rapid delivery(์‹ ์†ํ•œ ์ „๋‹ฌ)์„ ํ†ตํ•œ Customer satisfaction(๊ณ ๊ฐ ๋งŒ์กฑ)
  10. ๋น„์ฆˆ๋‹ˆ์Šค ๋‹ด๋‹น์ž์™€ ๊ฐœ๋ฐœ์ž ๊ฐ„์˜ ๊ธด๋ฐ€ํ•œ ์ผ์ผ cooperation(ํ˜‘๋ ฅ)
  11. development(๊ฐœ๋ฐœ) ํ›„๋ฐ˜๋ถ€์ผ์ง€๋ผ๋„ changing requirements(์š”๊ตฌ์‚ฌํ•ญ ๋ณ€๊ฒฝ) ํ™˜์˜
  12. ๋ณ€ํ™”ํ•˜๋Š” ํ™˜๊ฒฝ(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(๊ฒŒ์ž„ ๋ฐฉ๋ฒ•)
    1. ๋‹ค์Œ task(์ž‘์—…) ๋‚ญ๋…
    2. task(์ž‘์—…) ํ† ๋ก 
    3. Estimate(์ถ”์ •): ๋ชจ๋‘๊ฐ€ ์ž‘์—…์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์นด๋“œ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋™์‹œ์— ์ ์ˆ˜ ๊ณต๊ฐœ
    4. Discussion(ํ† ๋ก ): universal consensus(๋งŒ์žฅ์ผ์น˜)๊ฐ€ ์•„๋‹ˆ๋ฉด, ๊ฐ€์žฅ ๋‚ฎ๊ฑฐ๋‚˜ ๋†’์€ ์ ์ˆ˜๋ฅผ ๋‚ธ ์‚ฌ๋žŒ์—๊ฒŒ ์ด์œ  ์งˆ๋ฌธ
    5. Re-estimate(์žฌ์ถ”์ •)
    6. 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]

  • https://en.wikipedia.org/wiki/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?

  • http://dev.one80services.com/user-stories/writing-good-user-stories-hint-its-not-about-writing/

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(ํ”„๋ž™ํ‹ฐ์Šค)ScrumXP
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(๋ณ€ํ™”์— ๋Œ€์‘)
์ตœ๊ทผ ์ˆ˜์ •: 25. 11. 6. ์˜คํ›„ 12:07
Contributors: kmbzn
Prev
4. Process Models
Next
6. Requirements

BUILT WITH

CloudflareNode.jsGitHubGitVue.jsJavaScriptVSCodenpm

All trademarks and logos are property of their respective owners.
ยฉ 2025 kmbzn ยท MIT License