ExtremeProgramming ์ ๊ฒฝ๋๊ฐ๋ฐ๋ฐฉ๋ฒ๋ก ์ผ๋ก์, RUP ๋ฑ์ ๋ฐฉ๋ฒ๋ก ์ ๋นํด ๊ทธ ํ๋ก์ธ์ค๊ฐ ๊ฐ๋จํ๋ค. XP ์์์ ๋ช๋ช ๊ฐ๋
๋ค์ ์ผ๋ฐ์ ์ธ ํ๋ก๊ทธ๋๋ฐ์์๋ ์ ์ฉํ๊ฒ ์ฐ์ผ ์ ์๋ค. ํนํ TestDrivenDevelopment(TestFirstProgramming) ์ ๊ฐ๋
๊ณผ Refactoring, UnitTest๋ ์ด๊ธฐ ๊ณต๋ถํ ๋ ํผ์์๋ ์ค์ต์ ํด๋ณผ ์ ์๋ ๋ด์ฉ์ด๋ค. ๊ฐ์ธ ๋๋ ์๊ทธ๋ฃน์ ํ๋ จ์ผ๋ก๋ ์ด์ฉํ ์ ์์ ๊ฒ์ด๋ค.
์ ์ฒด ์ฃผ๊ธฐ ¶
์ด๊ธฐ Customer ์๊ตฌ๋ถ์์์๋ UserStory๋ฅผ ์์ฑํ๋ค. UserStory๋ ์ถํ Test Scenario๋ฅผ ์๊ฐํ์ฌ AcceptanceTest ๋ถ๋ถ์ ์์ฑํ๋๋ฐ ์ด์ฉํ๋ค. UserStory๋ ๊ฐ๋ฐ์๋ค์ ์ํด์ ํด๋น ๊ธฐ๊ฐ (Story-Point)์ ์์ธก(estimate) ํ๊ฒ ๋๋๋ฐ, estimate๊ฐ ๋ช
ํํ์ง ์์ ๊ฒฝ์ฐ์๋ ๋ช
ํํ์ง ์์ ๋ถ๋ถ์ ๋ํด์ SpikeSolution ์ ํด๋ณธ๋ค estimate์ ํ๊ฒ ๋๋ค. UserStory๋ ๋ค์
EngineeringTask๋ก ๋๋์ด์ง๊ณ ,
EngineeringTask๋ถ๋ถ์ ๋ํ estimate๋ฅผ ๊ฑฐ์น๋ค Task-Point๋ฅผ ํ ๋นํ๋ค. ํด๋น Point ์ ๊ธฐ์ค์ deadline ์ ๊ธฐ์ค์ด ์๋, programminer's ideal day (์ฆ, ์๋ฌด๋ฐ ๋ฐฉํด๋ฅผ ๋ฐ์ง ์๋ ์ํ์์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์ต์ ์ ํจ์จ์ ์งํํ๋ค๊ณ ํ์ ๊ฒฝ์ฐ์ ๊ธฐ์ค) ์ผ๋ก ๊ณ์ฐํ๋ค.


๊ทธ ๋ค์, ์ต์ข
์ ์ผ๋ก Customer ์๊ฒ ํด๋น UserStory ์ ์ฐ์ ์์๋ฅผ ๋งค๊ธฐ๊ฒ ํจ์ผ๋ก์ ๊ตฌํํ UserStory์ ์์๋ฅผ ์ ํ๊ฒ ํ๋ค. ๊ทธ๋ฌ๋ฉด UserStory์ ๋ํ ํด๋น
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 ์ ๊ฐ๋ฅํ๊ฒ ํ๋ค.
๊ทธ๋ฆฌํ์ฌ ๊ฐ
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: ์ง์น ์ฌ์ ์ ์ค์๋ฅผ ๋ง๋ค์ด๋ธ๋ค. ๊ฐ๋ฅํ๋ฉด ์ด๊ณผ๊ทผ๋ฌด๋ฅผ ํผํ๋ค.
๊ด๋ จ ์ฌ์ดํธ ¶
- http://extremeprogramming.org - ์ฒ์์ ์ฝ์ด๋ณผ๋งํ ์ ์ฒด๋.
- eXtremeProgrammingMeetsUML - ์์ง ์ฝ์ด๋ณด์ง ์์์.
- http://objectmentor.com - Robert Martin ์ ๊ธ๋ค. OOP ๊ด๋ จ ๊ธฐ์ฌ๋ค๋ ๋ง์.
- http://xprogramming.com - Ron Jeffries ์ ๊ธ๋ค์ด ๋ง๋ค.
- http://www.martinfowler.com/articles/newMethodology.html#N1BE - ๋๋ค๋ฅธ '๋ฐฉ๋ฒ๋ก ' ์ด๋ผ ๋ถ๋ฆฌ๋ ๊ฒ๋ค. ์ฃผ๋ก agile ๊ด๋ จ ์ด์ผ๊ธฐ๋ค.
- http://www.freemethod.org:8080/bbs/BBSView?boardrowid=3220 - 4๊ฐ์ง ๊ฐ์น (Communication, Simplicity, Feedback, Courage)
- http://www.freemethod.org:8080/bbs/BBSView?boardrowid=3111 - 4๊ฐ์ง ๋ณ์ (Resource, Quality, Time, Scope)
์์ ์ ์ฒด ๊ทธ๋ฆผ์ ํ๋ฒ ์ ๋ฆฌํด ๋ณด๊ณ ์ถ์ด์ ์ถ๊ฐํจ
๊ณ ์น๊ณ ์ถ์ผ๋ฉด ๋ง์๋๋ก ๊ณ ์น์ธ์.
๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๊ฒ๋ ์ข ์ฌ๋ ค๋ด ์๋ค.
๊ณ ์น๊ณ ์ถ์ผ๋ฉด ๋ง์๋๋ก ๊ณ ์น์ธ์.
๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ๊ฒ๋ ์ข ์ฌ๋ ค๋ด ์๋ค.
DeleteMe) ์ง๋ฌธ์ ๋ํด์๋ Metaphor ๋ก ์ฎ๊ฒผ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ง๋ฌธ์ ํ์ค๋๋ ์ค๋ช
์ผ๋ก ๋ก๊ทธ์ธํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค. (์ฌ๋๋ค์ด 203.244.197.254 ๋ ์๊ฒ ๋ตํ๊ธฐ์ ์ข ์ด์ํ์๋์~) --1002
...์ฌ๊ธฐ์์์ XP ์ ๊ด๋ จ๋ ๊ธ๋ค์ ๊ฒฝ์ฐ๋ XperDotOrg ์ชฝ์ผ๋ก ์ฎ๊ธฐ๋๊ฑด ์ด๋จ๊น ๊ถ๋ฆฌ. (Interwiki ๋ก ์ฎ๊ธฐ๊ณ , ZP ์์๋ ZP ๋ด์ ํ ๋ก ์ผ๋ก ๋์ ํ ์ ์์๋ฏ. ์๋ฃ๊ฐ ์ด๋์ ์๋๋๋ ๊ทธ๋ฆฌ ์ค์ํ์ง ์์ ๊ฒ์ด๋. XperDotOrg ๊ฐ ์์ฉ์ฌ์ดํธ๋ CUG ๊ฐ ๋๋๊ฒ ์๋์ด์) ์ฌ๋๋ค ์๊ฒฌ์? --1002