๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Computer Science

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก  - ์• ์ž์ผ(Agile) ๋ฐฉ๋ฒ•๋ก 

by Leica 2020. 4. 18.
๋ฐ˜์‘ํ˜•

์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก  - ์• ์ž์ผ(Agile) ๋ฐฉ๋ฒ•๋ก 

  • ์• ์ž์ผ(Agile) ๋ฐฉ๋ฒ•๋ก ์€ ๊ตฌ์ฒด์ ์ธ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์•„๋‹Œ ๊ฐœ๋ฐœ ์ง€์นจ, ์ฒ ํ•™์— ๊ฐ€๊น๋‹ค.
  • ๋ณ€ํ™”๋ฅผ ์ˆ˜์šฉํ•˜๊ณ  ํ˜‘์—…๊ณผ ์ œํ’ˆ์˜ ๋น ๋ฅธ ์ธ๋„๋ฅผ ๊ฐ•์กฐํ•˜๋Š” ๋ฐ˜๋ณต์  ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•
  • ๋ฌธ์„œํ™”๋ณด๋‹ค ์ฝ”๋“œ, ํ”„๋กœ๊ทธ๋žจ, ์†Œํ”„ํŠธ์›จ์–ด ์ž์ฒด๋ฅผ ์ค‘์š”์‹œ ํ•จ
  • ์š”๊ตฌ์‚ฌํ•ญ์˜ ๋ณ€ํ™”๋Š” ๋ถˆ๊ฐ€ํ”ผํ•˜๋ฉฐ ์ด์— ๋Œ€์‘ํ•˜๋Š” ๊ฒƒ์ด ํ˜„์‹ค์ ์ด๋‹ค.
  • ๊ธฐ์กด์˜ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋Š” ์„ค๊ณ„ ๊ธฐ๊ฐ„์ด ๊ธธ๋ฉฐ ์žฌ์ž‘์—… ์‹œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ํฌ๋‹ค.
  • ํ™˜๊ฒฝ์˜ ๋น ๋ฅธ ๋ณ€ํ™”์— ๋Œ€์‘ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.
  • ์• ์ž์ผ ์„ ์–ธ๋ฌธ(Agile Manifesto) ๐Ÿ”—
    • ๊ณต์ •๊ณผ ๋„๊ตฌ๋ณด๋‹ค ๊ฐœ์ธ๊ณผ ์ƒํ˜ธ์ž‘์šฉ์„
    • ํฌ๊ด„์ ์ธ ๋ฌธ์„œ๋ณด๋‹ค ์ž‘๋™ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ
    • ๊ณ„์•ฝ ํ˜‘์ƒ๋ณด๋‹ค ๊ณ ๊ฐ๊ณผ์˜ ํ˜‘๋ ฅ์„
    • ๊ณ„ํš์„ ๋”ฐ๋ฅด๊ธฐ๋ณด๋‹ค ๋ณ€ํ™”์— ๋Œ€์‘ํ•˜๊ธฐ๋ฅผ
  • ์š”๊ตฌ์‚ฌํ•ญ์ด ๋ฐ”๋€Œ๊ธฐ ์‰ฌ์šด ์ค‘์†Œํ˜•์˜ ๋น„์ฆˆ๋‹ˆ์Šค ์‹œ์Šคํ…œ์ด๋‚˜ ์ „์ž ์ƒ๊ฑฐ๋ž˜ ์‘์šฉ์— ์ ํ•ฉํ•˜๋‹ค.
  • ์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก ์˜ ์ข…๋ฅ˜
    • ์ต์ŠคํŠธ๋ฆผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Extreme Programming, XP)
    • ์ง ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Pair Programming)
    • ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ(Test Driven Development, TDD)
    • ์Šคํฌ๋Ÿผ(Scrum)

 

1. ์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก  - ์ต์ŠคํŠธ๋ฆผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Extreme Programming, XP)

ํญํฌ์ˆ˜ ๋ชจ๋ธ, ๋ฐ˜๋ณตํ˜• ๋ชจ๋ธ, XP ๋ชจ๋ธ์˜ ๋น„๊ต

 

  • ์ข‹์€ ์‹ค์ฒœ ์ง€์นจ๋“ค(good practices)์„ ์ ๊ทน์ ์œผ๋กœ ์ ์šฉ
  • XP์˜ ์‹ค์ฒœ ์ง€์นจ
    • ์ž‘๊ณ  ๋นˆ๋ฒˆํ•œ ๋ฆด๋ฆฌ์ฆˆ - ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ๊ณผ ์ง€์†์ ์ธ ๊ฐœ์„ 
    • ๊ณ ๊ฐ๋„ ๊ฐœ๋ฐœ ํŒ€์˜ ์ผ์›
    • ํ”„๋กœ์„ธ์Šค ์ค‘์‹ฌ์ด ์•„๋‹Œ ์‚ฌ๋žŒ ์ค‘์‹ฌ์˜ ์ž‘์—…
    • ์ง ํ”„๋กœ๊ทธ๋ž˜๋ฐ(pair programming)
    • ๋‹จ์ˆœํ•œ ์„ค๊ณ„์™€ ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ(Test Driven Development, TDD)
    • ๋ฆฌํŒฉํ† ๋ง์„ ํ†ตํ•œ ์ฝ”๋“œ ํ’ˆ์งˆ ๊ฐœ์„ 

 

2. ์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก  - ์ง ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Pair Programming)

  • ๋‘ ์‚ฌ๋žŒ์ด ์ง์ด ๋˜์–ด ํ•œ ์‚ฌ๋žŒ์ด ์ฝ”๋”ฉ์„, ๋‹ค๋ฅธ ์‚ฌ๋žŒ์€ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰
  • 30๋ถ„๋งˆ๋‹ค ์—ญํ•  ๊ต์ฒด
  • ์žฅ์ 
    • ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ฑ…์ž„ ๊ณต์œ 
    • ๋น„ํ˜•์‹์  ๊ฒ€ํ†  ์ˆ˜ํ–‰
    • ์ฝ”๋“œ ๊ฐœ์„ ์„ ์œ„ํ•œ ๋ฆฌํŒฉํ† ๋ง ์žฅ๋ ค
    • ์ƒ์‚ฐ์„ฑ - ๋‘ ์‚ฌ๋žŒ์ด ์ง์„ ์ด๋ค„ ๊ฐœ๋ฐœํ•˜์ง€๋งŒ ๊ฐ๊ฐ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒฝ์šฐ์— ๋น„ํ•ด ์ƒ์‚ฐ์„ฑ์ด ๋–จ์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.

 

3. ์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก  - ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ(Test Driven Development, TDD)

  • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๊ณ  ์ด๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐœ๋ฐœ
  • Task ๋ณ„๋กœ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ๋งŒ๋“ฆ
    • ์š”๊ตฌ์‚ฌํ•ญ โžก๏ธ ์Šคํ† ๋ฆฌ ์นด๋“œ โžก๏ธ Tasks
    • ์š”๊ตฌ์‚ฌํ•ญ์€ ์Šคํ† ๋ฆฌ ์นด๋“œ๋กœ ํ‘œํ˜„๋˜๊ณ  ์Šคํ† ๋ฆฌ ์นด๋“œ๋Š” ํƒœ์Šคํฌ๋“ค๋กœ ๋ถ„ํ•ด๋จ
    • ์š”๊ตฌ์‚ฌํ•ญ - ์ฝ”๋“œ ๊ด€๊ณ„๊ฐ€ ๋ช…ํ™•ํ•ด ์ง
  • ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋ฅผ ๊ฐ•์กฐํ•˜๋ฉฐ ํ†ตํ•ฉ ๊ณผ์ •์—์„œ ๊ธฐ์กด ์†Œํ”„ํŠธ์›จ์–ด์— ์˜ค๋ฅ˜ ์œ ์ž… ๋ฐฉ์ง€

 

4. ์• ์ž์ผ ๋ฐฉ๋ฒ•๋ก  - ์Šคํฌ๋Ÿผ(Scrum)

* ์Šคํฌ๋ฆผ์˜ ํŠน์„ฑ
์Šคํฌ๋Ÿผ์€ ํŠน์ • ์–ธ์–ด๋‚˜ ๋ฐฉ๋ฒ•๋ก ์— ์˜์กด์ ์ด์ง€ ์•Š์œผ๋ฉฐ, ๊ฐœ๋ฐœ ์–ธ์–ด๋Š” ๋ฌผ๋ก ์ด๊ณ  ๊ฐ์ฒด์ง€ํ–ฅ ์–ธ์–ด์™€๋„ ๊ด€๋ จ์ด ์—†๋Š” ๋„“์€ ์‘์šฉ ๋ฒ”์œ„์˜ ๊ฐœ๋ฐœ ๊ธฐ๋ฒ•์ด๋‹ค. ์Šคํฌ๋Ÿผ์€ ์• ์ž์ผ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๊ณผ์ •์˜ ํ•˜๋‚˜๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

- ์†”๋ฃจ์…˜์— ํฌํ•จํ•  ๊ธฐ๋Šฅ/๊ฐœ์„ ์ ์— ๋Œ€ํ•œ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค.
- ๊ฐœ๋ฐœ ์ฃผ๊ธฐ๋Š” 30์ผ ์ •๋„๋กœ ์กฐ์ ˆํ•˜๊ณ  ๊ฐœ๋ฐœ ์ฃผ๊ธฐ๋งˆ๋‹ค ์‹ค์ œ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•˜๋ผ.
- ๊ฐœ๋ฐœ ์ฃผ๊ธฐ๋งˆ๋‹ค ์ ์šฉํ•  ๊ธฐ๋Šฅ์ด๋‚˜ ๊ฐœ์„ ์— ๋Œ€ํ•œ ๋ชฉ๋ก์„ ์ œ๊ณตํ•˜๋ผ.
- ๋‚ ๋งˆ๋‹ค 15๋ถ„ ์ •๋„ ํšŒ์˜๋ฅผ ๊ฐ€์ ธ๋ผ. ํ•ญ์ƒ ํŒ€ ๋‹จ์œ„๋กœ ์ƒ๊ฐํ•˜๋ผ.
- ์›ํ™œํ•œ ์˜์‚ฌ์†Œํ†ต์„ ์œ„ํ•˜์—ฌ, ๊ตฌ๋ถ„ ์—†๋Š” ์—ด๋ฆฐ ๊ณต๊ฐ„์„ ์œ ์ง€ํ•˜๋ผ.

* ์Šคํฌ๋Ÿผ์˜ ์ง„ํ–‰ ๊ณผ์ •
์Šคํฌ๋Ÿผ์—์„œ๋Š”, 30์ผ๊ฐ„์˜ ์ฃผ๊ธฐ๋กœ ์‹ค์ œ ๋™์ž‘ํ•˜๋Š” ์ œํ’ˆ์„ ๋งŒ๋“ค๋ฉด์„œ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰์‹œํ‚จ๋‹ค.

1. ์ œํ’ˆ์—์„œ ์š”๊ตฌํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ œํ’ˆ ๋ฐฑ๋กœ๊ทธ๋กœ ์ •ํ•œ๋‹ค.
2. PO(Project Owner, ์ œํ’ˆ ์ฑ…์ž„์ž)๊ฐ€ ์ •ํ•œ ์ œํ’ˆ์˜ ์šฐ์„ ์ˆœ์œ„์—์„œ ์–ด๋””๊นŒ์ง€ ์ž‘์—…์„ ํ• ์ง€ ํŒ€๊ณผ ์กฐ์œจ ํ•œ๋‹ค.
3. ์กฐ์œจํ•˜์—ฌ ์„ ์ •๋œ ์ œํ’ˆ ๋ฐฑ๋กœ๊ทธ๊ฐ€ ์ด๋ฒˆ ์Šคํ”„๋ฆฐํŠธ์˜ ๋ชฉํ‘œ๊ฐ€ ๋œ๋‹ค.
4. ์Šคํ”„๋ฆฐํŠธ ๋ชฉํ‘œ๋ฅผ ๊ตฌํ˜„ ๊ฐ€๋Šฅ ํ•˜๋„๋ก ํŒ€์—์„œ ์Šคํ”„๋ฆฐํŠธ ๋ฐฑ๋กœ๊ทธ๋ฅผ ์ž‘์„ฑํ•œ ๋’ค ์ž‘์—…์„ ํ• ๋‹นํ•œ๋‹ค.
5. ์Šคํ”„๋ฆฐํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋™์•ˆ, ๋งค์ผ ์ •ํ•ด์ง„ ์žฅ์†Œ์™€ ์‹œ๊ฐ„์— ๋ชจ๋“  ๊ฐœ๋ฐœ ํŒ€์›์ด ์ฐธ์—ฌํ•˜๋Š” ์ผ์ผ ์Šคํฌ๋Ÿผ ํšŒ์˜๋ฅผ ๊ฐ€์ง„๋‹ค.
6. ๋งคํšŒ์˜ ์Šคํ”„๋ฆฐํŠธ๊ฐ€ ์ข…๋ฃŒํ•  ๋•Œ๋งˆ๋‹ค, ์Šคํ”„๋ฆฐํŠธ ๋ฆฌ๋ทฐ ๋ฏธํŒ…์„ ํ†ตํ•ด ๋งŒ๋“ค์–ด์ง„ ์ œํ’ˆ์„ ํ•™์Šตํ•˜๊ณ  ์ดํ•ด ํ•œ๋‹ค.
7. ์ œํ’ˆ์˜ ํ•™์Šต๊ณผ ์ดํ•ด๊ฐ€ ๋๋‚˜๋ฉด, ์Šคํ”„๋ฆฐํŠธ ํšŒ๊ณ ๋ฅผ ํ†ตํ•ด ํŒ€์˜ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ๊ฐœ์„ ์˜ ์‹œ๊ฐ„์„ ๊ฐ–๋Š”๋‹ค.
8. ์Šคํ”„๋ฆฐํŠธ ๊ธฐ๊ฐ„ ์ค‘ ๋‹ค์Œ ์Šคํ”„๋ฆฐํŠธ๋ฅผ ์ค€๋น„ ํ•˜๊ธฐ ์œ„ํ•ด PO์™€ ํ•„์š” ์ธ์›์ด ๋ชจ์—ฌ ๋ฐฑ๋กœ๊ทธ๋ฅผ ์ค€๋น„ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ–๋Š”๋‹ค.
  • ์• ์ž์ผ ๊ฐœ๋ฐœ ๊ณผ์ •์˜ ๊ด€๋ฆฌ์— ์ดˆ์ ์„ ๋‘” ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ํ”„๋ ˆ์ž„์›Œํฌ/์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค ํ”„๋ ˆ์ž„์›Œํฌ
  • ๊ณ„ํš-์Šคํ”„๋ฆฐํŠธ์˜ ๋ฐ˜๋ณต
  • ํ”„๋กœ์ ํŠธ ๊ณ„ํš โžก๏ธ ์ œํ’ˆ ๋ฐฑ๋กœ๊ทธ: ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋ถ€์—ฌ๋œ ์š”๊ตฌ์‚ฌํ•ญ ๋ชฉ๋ก
  • ์Šคํ”„๋ฆฐํŠธ ์‚ฌ์ดํด
    • 3~9๋ช…์˜ ์Šคํฌ๋Ÿผ ํŒ€์—์„œ ์ œํ’ˆ์˜ ์ฆ๋ถ„์„ ๊ฐœ๋ฐœํ•˜๋Š” ์ž‘์€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ํ•œ ๋‹ฌ ์ด๋‚ด๋กœ ๊ฐœ๋ฐœ
    • ์Šคํ”„๋ฆฐํŠธ ๊ณ„ํš โžก๏ธ ์ŠคํŠธ๋ฆฐํŠธ ๋ฐฑ๋กœ๊ทธ: ์ œํ’ˆ ๋ฐฑ๋กœ๊ทธ์—์„œ ์ด๋ฒˆ ์Šคํ”„๋ฆฐํŠธ ์‚ฌ์ดํด์— ๊ฐœ๋ฐœํ•  ์š”๊ตฌ์‚ฌํ•ญ ๋ชฉ๋ก์„ ์„ ํƒ
    • ์ผ์ผ ์Šคํฌ๋Ÿผ ํšŒ์˜
    • ์ง„ํ–‰์ค‘์ธ ์Šคํ”„๋ฆฐํŠธ ์‚ฌ์ดํด์ด ์ข…๋ฃŒ๋˜๊ธฐ ์ „์— ์Šคํ”„๋ฆฐํŠธ ๋ฆฌ๋ทฐ, ํšŒ๊ณ  ์ˆ˜ํ–‰
  • ์Šคํฌ๋Ÿผ ํŒ€์˜ ๊ตฌ์„ฑ
    • ๊ฐœ๋ฐœํŒ€
    • ์ œํ’ˆ ์ฑ…์ž„์ž(Project Owner, PO): ์ œํ’ˆ ๋ฐฑ๋กœ๊ทธ(์š”๊ตฌ์‚ฌํ•ญ) ์ž‘์„ฑ ๋ฐ ๊ด€๋ฆฌ
    • ์Šคํฌ๋Ÿผ ๋งˆ์Šคํ„ฐ: ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์ž. ์Šคํฌ๋Ÿผ ํšŒ์˜ ์ฃผ๊ด€, ์™ธ๋ถ€ ์†Œํ†ต ์ฐฝ๊ณ  ์—ญํ• 

 

References

ํ•œ๊ตญ๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐ๊ณผํ•™๊ณผ ์†Œํ”„ํŠธ์›จ์–ด๊ณตํ•™(๊น€ํฌ์ฒœ ๊ต์ˆ˜)

์œ„ํ‚ค๋ฐฑ๊ณผ - ์Šคํฌ๋Ÿผ (์• ์ž์ผ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค)

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€