E D R , A S I H C RSS

Extreme Programming

ExtremeProgramming ์€ ๊ฒฝ๋Ÿ‰๊ฐœ๋ฐœ๋ฐฉ๋ฒ•๋ก ์œผ๋กœ์„œ, RUP ๋“ฑ์˜ ๋ฐฉ๋ฒ•๋ก ์— ๋น„ํ•ด ๊ทธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ฐ„๋‹จํ•˜๋‹ค. XP ์—์„œ์˜ ๋ช‡๋ช‡ ๊ฐœ๋…๋“ค์€ ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋„ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ผ ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ TestDrivenDevelopment(TestFirstProgramming) ์˜ ๊ฐœ๋…๊ณผ Refactoring, UnitTest๋Š” ์ดˆ๊ธฐ ๊ณต๋ถ€ํ• ๋•Œ ํ˜ผ์ž์„œ๋„ ์‹ค์Šต์„ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์ด๋‹ค. ๊ฐœ์ธ ๋˜๋Š” ์†Œ๊ทธ๋ฃน์˜ ํ›ˆ๋ จ์œผ๋กœ๋„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.


์ „์ฒด ์ฃผ๊ธฐ


์ดˆ๊ธฐ Customer ์š”๊ตฌ๋ถ„์„์‹œ์—๋Š” UserStory๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. UserStory๋Š” ์ถ”ํ›„ Test Scenario๋ฅผ ์ƒ๊ฐํ•˜์—ฌ AcceptanceTest ๋ถ€๋ถ„์„ ์ž‘์„ฑํ•˜๋Š”๋ฐ ์ด์šฉํ•œ๋‹ค. UserStory๋Š” ๊ฐœ๋ฐœ์ž๋“ค์— ์˜ํ•ด์„œ ํ•ด๋‹น ๊ธฐ๊ฐ„ (Story-Point)์„ ์˜ˆ์ธก(estimate) ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ, estimate๊ฐ€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š” ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ SpikeSolution ์„ ํ•ด๋ณธ๋’ค estimate์„ ํ•˜๊ฒŒ ๋œ๋‹ค. UserStory๋Š” ๋‹ค์‹œ Wiki:EngineeringTask๋กœ ๋‚˜๋ˆ„์–ด์ง€๊ณ , Wiki:EngineeringTask๋ถ€๋ถ„์— ๋Œ€ํ•œ estimate๋ฅผ ๊ฑฐ์นœ๋’ค Task-Point๋ฅผ ํ• ๋‹นํ•œ๋‹ค. ํ•ด๋‹น Point ์˜ ๊ธฐ์ค€์€ deadline ์˜ ๊ธฐ์ค€์ด ์•„๋‹Œ, programminer's ideal day (์ฆ‰, ์•„๋ฌด๋Ÿฐ ๋ฐฉํ•ด๋ฅผ ๋ฐ›์ง€ ์•Š๋Š” ์ƒํƒœ์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ตœ์ ์˜ ํšจ์œจ์„ ์ง„ํ–‰ํ•œ๋‹ค๊ณ  ํ–ˆ์„ ๊ฒฝ์šฐ์˜ ๊ธฐ์ค€) ์œผ๋กœ ๊ณ„์‚ฐํ•œ๋‹ค.

๊ทธ ๋‹ค์Œ, ์ตœ์ข…์ ์œผ๋กœ Customer ์—๊ฒŒ ํ•ด๋‹น UserStory ์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋งค๊ธฐ๊ฒŒ ํ•จ์œผ๋กœ์„œ ๊ตฌํ˜„ํ•  UserStory์˜ ์ˆœ์„œ๋ฅผ ์ •ํ•˜๊ฒŒ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด UserStory์— ๋Œ€ํ•œ ํ•ด๋‹น Wiki:EnginneringTask๋ฅผ ๋ถ„๋‹ดํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๋“ค์€ ์ž‘์—…์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ํ•ด๋‹น Task-Point๋Š” Iteration ๋งˆ๋‹ค ๋‹ค์‹œ ๊ณ„์‚ฐ์„ ํ•˜์—ฌ ๋‹ค์Œ Iteration ์˜ estimate ์— ์ ์šฉ๋œ๋‹ค. (ํ•ด๋‹น ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•ด๋‹น ๊ธฐ๊ฐ„๋‚ด์— ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋Š” Task-Point ์™€ Story-Point ์— ๋Œ€ํ•œ estimate) (Load Factor = ์‹ค์ œ ์ˆ˜ํ–‰ํ•œ ๋‚  / developer's estimated 'ideal' day. 2.5 ~ 3 ์ด ํ‰๊ท ) Iteration ์ค‘ ๋งค๋ฒˆ estimate ํ•˜๋ฉฐ ์ž‘์—…์†๋„๋ฅผ ์ฒดํฌํ•œ๋’ค, Customer ์™€ ํ•ด๋‹น UserStory ์— ๋Œ€ํ•œ ํ˜‘์ƒ์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ๋‹ค์Œ Iteration ์—์„œ๋Š” ์ด์ „ Iteration ์—์„œ ์ˆ˜ํ–‰ํ•œ Task Point ๋งŒํผ์˜ ์ผ์„ ํ• ๋‹นํ•œ๋‹ค.

Iteration ์ค‘์—๋Š” ๋งค์ผ StandUpMeeting ์„ ํ†ตํ•ด ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์˜ ์ „๋ฐ˜์ ์ธ ๋””์ž์ธ๊ณผ Pair, Task ์ˆ˜ํ–‰์ •๋„์— ๋Œ€ํ•œ ํšŒ์˜๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค. ๋””์ž์ธ์—๋Š” CRCCard ๊ณผ UML ๋“ฑ์„ ์ด์šฉํ•œ๋‹ค. ์ดˆ๊ธฐ ๋””์ž์ธ์—์„œ๋Š” ์„ธ๋ถ€์ ์ธ ๋ถ€๋ถ„๊นŒ์ง€ ๋””์ž์ธํ•˜์ง€ ์•Š๋Š”๋‹ค. XP์—์„œ์˜ ๋””์ž์ธ์€ ์œ ์—ฐํ•œ ๋ถ€๋ถ„์ด๋ฉฐ, ์ดˆ๋ฐ˜์˜ ๊ณผ๋„ํ•œ Upfront Design ์„ ์ง€์–‘ํ•œ๋‹ค. ๋””์ž์ธ์€ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณผ์ •์—์„œ ๊ทธ ๊ฒฐ๋ก ์„ ์ง“๋Š”๋‹ค. XP์˜ Design ์€ CRCCard, TestFirstProgramming ๊ณผ Refactoring, ๊ทธ๋ฆฌ๊ณ  StandUpMeeting ๋‚˜ PairProgramming ์ค‘ ๊ฐœ๋ฐœ์ž๋“ค๊ฐ„์˜ ๋Œ€ํ™”๋ฅผ ํ†ตํ•ด ์ง€์†์ ์œผ๋กœ ์œ ๋„๋˜์–ด์ง€๋ฉฐ ๋””์ž์ธ๋˜์–ด์ง„๋‹ค.

๊ฐœ๋ฐœ์‹œ์—๋Š” PairProgramming ์„ ํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ TestFirstProgramming(TestDrivenDevelopment) ์œผ๋กœ์„œ, UnitTest Code๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•œ ๋’ค ๋ฉ”์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์„ ์ทจํ•œ๋‹ค. UnitTest Code -> Coding -> Refactoring ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ•œ๋‹ค. ์ด๋•Œ Customer ๋Š” ์Šค์Šค๋กœ ๋˜๋Š” ๊ฐœ๋ฐœ์ž์™€ ๊ฐ™์ด AcceptanceTest ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. UnitTest ์™€ AcceptanceTest ๋กœ์„œ ํ•ด๋‹น ๋ชจ๋“ˆ์˜ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋ฉฐ, ํ•ด๋‹น Task๋ฅผ ์™„๋ฃŒ๋˜๊ณ , UnitTest๋“ค์„ ๋ชจ๋‘ ํ†ต๊ณผํ•˜๋ฉด Integration (ContinuousIntegration) ์„, AcceptanceTest ๋ฅผ ํ†ต๊ณผํ•˜๋ฉด Release๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค. Refactoring ๊ณผ UnitTest, CodingStandard ๋Š” CollectiveOwnership ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค.

๊ทธ๋ฆฌํ•˜์—ฌ ๊ฐ Wiki:EngineeringTask๋“ค์ด ๊ตฌํ˜„๋˜๊ณ , ๊ถ๊ทน์ ์œผ๋กœ UserStory ์˜ Story๋“ค์ด ๋ชจ๋‘ ์ง„ํ–‰๋˜๋ฉด Mission Complete. (์•„.. ์–ด์ œ Avalon ์˜ ์˜ํ–ฅ์ธ๊ฐ€. --;)

XP ์˜ ์ฃผ์š” ๊ฐœ๋…๋“ค

  • On-site customer: ๊ฐ™์€ ์ž‘์—…์‹ค ๋‚ด์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋จธ์™€ ์ปค์Šคํ„ฐ๋จธ๊ฐ€ ์–ธ์ œ๋“ ์ง€ ๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ณด์žฅํ•œ๋‹ค.
  • UserStory: ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ ์‹œ์Šคํ…œ์˜ ํ–‰์œ„์— ๋Œ€ํ•œ ๊ฐ„๋žตํ•œ ์„œ์ˆ 
  • AcceptanceTest: ์‚ฌ์šฉ์ž ๊ด€์ ์—์„œ ํ•ด๋‹น ์ž‘์—…์‚ฐ์ถœ๋ฌผ์ด ์ œ๋Œ€๋กœ ๋Œ์•„๊ฐ€๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์ŠคํŠธ.
  • ThePlanningGame: ๊ฐœ๋ฐœ์ž๋Š” UserStory๋“ค์— ๋Œ€ํ•ด์„œ ๊ตฌํ˜„, ์˜ˆ์ธก, ์ง€์‹œ๋“ค์— ๋Œ€ํ•ด ํ† ๋ก ํ•œ๋‹ค.
  • UnitTest: ๋ชจ๋“  ํด๋ž˜์Šค๋“ค์— ๋Œ€ํ•œ ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋“ค.
  • TestDrivenDevelopment : Programming By Intention. ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์˜๋„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ํ…Œ์ŠคํŠธ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์„œ ๋‹จ์ˆœํ•œ ๋””์ž์ธ์ด ์œ ๋„๋˜์–ด์ง„๋‹ค. (with Refactoring)
  • Refactoring : ์ฝ”๋“œ๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ํ”„๋กœ์„ธ์Šค
  • SimpleDesign
  • PairProgramming: ํ”„๋กœ๊ทธ๋žจ์ฝ”๋“œ๋Š” ๋‘๋ช… (driver, partner)์ด ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ์—์„œ ์ž‘์„ฑํ•œ๋‹ค.
  • SpikeSolution: ์ฃผ์–ด์ง„ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๊ตฌํ˜„์˜ ๋‚œ์ด๋„๋ฅผ ์˜ˆ์ธกํ•˜๊ธฐ ์œ„ํ•œ ์ž‘์€ ์‹คํ—˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ.
  • CollectiveOwnership: ๋ˆ„๊ตฌ๋“ ์ง€ ์–ด๋– ํ•œ ์˜ค๋ธŒ์ ํŠธ๊ฑด ๊ณ ์น  ์ˆ˜ ์žˆ๋Š” ๊ถŒ๋ฆฌ๋ฅผ ๊ฐ€์ง„๋‹ค.
  • CodingStandard: CollectiveOwnership ์„ ์œ„ํ•œ. ๋ˆ„๊ตฌ๋‚˜ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋„๋ก ์ฝ”๋”ฉ์Šคํƒ€์ผ ํ‘œ์ค€์˜ ์„ค์ •.
  • ContinuousIntegration: ๋งค์ผ ๋˜๋Š” ์ˆ˜์‹œ๋กœ ์ „์ฒด ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ building ๊ณผ testing์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • Metaphor : Object Naming ๊ณผ ํ”„๋กœ๊ทธ๋žจ์˜ ํ•ด๋‹น ์ˆ˜ํ–‰์— ๋Œ€ํ•œ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์˜ ๊ฐ€์ด๋“œ ์—ญํ• ์„ ํ•ด์ค„ ๊ฐœ๋…์˜ ์ •์˜.
  • Forty-hour week: ์ง€์นœ ์‹ฌ์‹ ์€ ์‹ค์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค. ๊ฐ€๋Šฅํ•˜๋ฉด ์ดˆ๊ณผ๊ทผ๋ฌด๋ฅผ ํ”ผํ•œ๋‹ค.

๊ด€๋ จ ์‚ฌ์ดํŠธ




์œ„์˜ ์ „์ฒด ๊ทธ๋ฆผ์„ ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด ๋ณด๊ณ  ์‹ถ์–ด์„œ ์ถ”๊ฐ€ํ•จ
๊ณ ์น˜๊ณ  ์‹ถ์œผ๋ฉด ๋งˆ์Œ๋Œ€๋กœ ๊ณ ์น˜์„ธ์š”.
๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๊ฒƒ๋„ ์ข€ ์˜ฌ๋ ค๋ด…์‹œ๋‹ค.

DeleteMe) ์งˆ๋ฌธ์— ๋Œ€ํ•ด์„œ๋Š” Metaphor ๋กœ ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์งˆ๋ฌธ์„ ํ•˜์‹ค๋•Œ๋Š” ์‹ค๋ช…์œผ๋กœ ๋กœ๊ทธ์ธํ•ด์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. (์‚ฌ๋žŒ๋“ค์ด 203.244.197.254 ๋‹˜ ์—๊ฒŒ ๋‹ตํ•˜๊ธฐ์—” ์ข€ ์ด์ƒํ•˜์ž๋‚˜์š”~) --1002


...์—ฌ๊ธฐ์—์„œ์˜ XP ์™€ ๊ด€๋ จ๋œ ๊ธ€๋“ค์˜ ๊ฒฝ์šฐ๋„ XperDotOrg ์ชฝ์œผ๋กœ ์˜ฎ๊ธฐ๋Š”๊ฑด ์–ด๋–จ๊นŒ ๊ถ๋ฆฌ. (Interwiki ๋กœ ์˜ฎ๊ธฐ๊ณ , ZP ์—์„œ๋Š” ZP ๋‚ด์˜ ํ† ๋ก ์œผ๋กœ ๋Œ€์‹ ํ•  ์ˆ˜ ์žˆ์„๋“ฏ. ์ž๋ฃŒ๊ฐ€ ์–ด๋””์— ์žˆ๋А๋ƒ๋Š” ๊ทธ๋ฆฌ ์ค‘์š”ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ˆ. XperDotOrg ๊ฐ€ ์ƒ์šฉ์‚ฌ์ดํŠธ๋‚˜ CUG ๊ฐ€ ๋˜๋Š”๊ฒŒ ์•„๋‹Œ์ด์ƒ) ์‚ฌ๋žŒ๋“ค ์˜๊ฒฌ์€? --1002
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:15
Processing time 0.0077 sec