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.0222 sec