Skip to content

Commit

Permalink
Merge pull request #63 from Seogeurim/SoftwareEngineering/Heejae
Browse files Browse the repository at this point in the history
[SoftwareEngineering] eXtreme Programming 정리
  • Loading branch information
Seogeurim authored Aug 15, 2021
2 parents cb8fccf + 0d2392a commit a063237
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 0 deletions.
1 change: 1 addition & 0 deletions contents/software-engineering/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@
μ•„λž˜μ˜ μžλ£Œμ—μ„œ μžμ„Έν•œ μ„€λͺ…κ³Ό μ½”λ“œλ₯Ό λ³Ό 수 μžˆλ‹€.
- μž‘μ„±μž 이세λͺ… | [Agile Software Development](./materials/CS_(Agile).pdf)
- μž‘μ„±μž μ •ν¬μž¬ | [eXtreme Programming(XP)](./eXtremeProgramming.md)
---
Expand Down
48 changes: 48 additions & 0 deletions contents/software-engineering/eXtremeProgramming.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# eXtreme Programming (XP)

> μž‘μ„±μž : [μ •ν¬μž¬](https://github.com/Hee-Jae)
μ°Έμ‘° : [μœ„ν‚€ν”Όλ””μ•„](https://ko.wikipedia.org/wiki/%EC%9D%B5%EC%8A%A4%ED%8A%B8%EB%A6%BC_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D)
<details>
<summary>Table of Contents</summary>

- [eXtreme Programmingμ΄λž€?](#extreme-programming-μ΄λž€)
- [λ‹€λ₯Έ μ• μžμΌ 방법둠과 κ΅¬λΆ„λ˜λŠ” νŠΉμ§•](#λ‹€λ₯Έ-μ• μžμΌ-방법둠과-κ΅¬λΆ„λ˜λŠ”-νŠΉμ§•)
- [XP μ‹€μ²œ 방법](#xp-μ‹€μ²œ-방법)

</details>

---

## eXtreme Programming μ΄λž€?
**읡슀트림 ν”„λ‘œκ·Έλž˜λ°(eXtreme Programming, XP)** 은 `μΌ„νŠΈ λ°±` 등이 μ œμ•ˆν•œ μ†Œν”„νŠΈμ›¨μ–΄ 개발 방법이닀. λΉ„μ¦ˆλ‹ˆμŠ€ μƒμ˜ μš”κ΅¬κ°€ μ‹œμ‹œκ°κ° 변동이 μ‹¬ν•œ κ²½μš°μ— μ ν•©ν•œ 개발 방법이닀. 1999λ…„ `μΌ„νŠΈ λ°±`의 μ €μ„œμΈ 'Extreme Programming Explained - Embrace Change'μ—μ„œ λ°œν‘œλ˜μ—ˆλ‹€. **μ• μžμΌ 개발 ν”„λ‘œμ„ΈμŠ€**라 λΆˆλ¦¬λŠ” 개발 방법 μ€‘μ˜ λŒ€ν‘œμ μΈ ν•˜λ‚˜λ‘œ 꼽히며, 약칭인 'XP'둜 잘 μ•Œλ €μ Έ μžˆλ‹€.

## λ‹€λ₯Έ μ• μžμΌ 방법둠과 κ΅¬λΆ„λ˜λŠ” νŠΉμ§•
1. ν”„λ‘œκ·Έλž˜λ¨Έλ“€μ΄ 코딩을 ν•  λ•Œ **ν…ŒμŠ€νŠΈ μ½”λ“œ**도 ν•¨κ»˜ μž‘μ„±ν•œλ‹€.
2. **ν…ŒμŠ€νŠΈλ₯Ό 기반**으둜 ν”„λ‘œμ νŠΈλ₯Ό μ™„μ„±ν•΄ λ‚˜κ°„λ‹€.
3. **반볡적으둜 κ³ κ°μ—κ²Œ ν”„λ‘œν† νƒ€μž…μ„ 전달**ν•¨μœΌλ‘œμ¨ 고객의 μš”κ΅¬μ‚¬ν•­ 변화에 λ―Όμ²©ν•˜κ²Œ λŒ€μ‘ν•œλ‹€.
4. 맀번 ν”„λ‘œν† νƒ€μž…μ„ κ³ κ°μ—κ²Œ 전달함에 μžˆμ–΄μ„œ ν”„λ‘œν† νƒ€μž… 자체둜써 **버그가 μƒλŒ€μ μœΌλ‘œ 적은 완벽에 κ°€κΉŒμš΄ 데λͺ¨**λ₯Ό κ²½ν—˜ν•˜κ²Œ ν•΄μ€€λ‹€.


## XP μ‹€μ²œ 방법

#### Whole Team
ν”„λ‘œμ νŠΈμ— μ°Έμ—¬ν•˜λŠ” λͺ¨λ“  νŒ€μ›λ“€μ„ 가리킨닀. λ””μžμ΄λ„ˆ, ν”„λ‘œμ νŠΈ κ΄€λ¦¬μž, 개발자, ν…ŒμŠ€ν„°, μœ μ € λ“± 역할듀이 λ§Žμ€λ° 이쀑 **μœ μ €κ°€ 제일 μ€‘μš”ν•˜λ‹€.** μœ μ €κ°€ ν”„λ‘œμ νŠΈμ˜ ν‚€λ₯Ό 가지고 μžˆλŠ” `Stakeholder`이기 λ•Œλ¬Έμ΄λ‹€.

#### Planning Game
μ–΄λ–€ 개발 과정을 끝마칠 것인가, λ‹€μŒμ—λŠ” μ–΄λ–€ 일을 ν•  것인가에 쀑점을 두어 `iteration`을 κ³„νšν•œλ‹€. 일반적으둜 2μ£Όλ₯Ό 주기둜 ν•œ `iteration`을 μ§„ν–‰ν•œλ‹€. ν•œ `iteration` λ™μ•ˆ ν”„λ‘œν† νƒ€μž…μ„ λ§Œλ“€μ–΄μ„œ μ˜λ’°μΈμ—κ²Œ 보여주고 회의λ₯Ό ν•œλ‹€. λ”°λΌμ„œ **κΈ°ν•œ 내에 ν”„λ‘œν† νƒ€μž…μ΄ λ°˜λ“œμ‹œ κ°œλ°œλ˜μ–΄μ•Ό ν•œλ‹€.** 이λ₯Ό 톡해 기업은 λ³ΈμΈλ“€μ˜ μ‹€λ ₯을 μž…μ¦ν•  수 있고, 의뒰인 μž…μž₯μ—μ„œλŠ” ν”„λ‘œν† νƒ€μž…μ΄ λ§ˆμŒμ— μ•ˆλ“€ λ•Œ λΉ λ₯΄κ²Œ μ†μ ˆν•΄μ„œ λΉ„μš©μ„ μ•„λ‚„ μˆ˜κ°€ μžˆλ‹€.

#### Customer Tests
의뒰인이 μ›ν•˜λ˜ 결과물을 λ§Œλ“€μ–΄λ‚΄λŠ”κ²Œ μ€‘μš”ν•˜λ‹€. λ”°λΌμ„œ 주기적으둜 **결과물이 정말 의뒰인이 μ›ν•˜λŠ” 게 λ§žλŠ”μ§€ ν…ŒμŠ€νŠΈλ₯Ό ν•΄λ³Έλ‹€.**

#### Small Releases
**κ°œλ°œμžλŠ” 주기적으둜 μ˜λ’°μΈμ—κ²Œ ν”„λ‘œν† νƒ€μž…μ„ 보여쀀닀.** μ˜λ’°μΈμ€ 이λ₯Ό 톡해 좔가적인 μš”κ΅¬μ‚¬ν•­μ„ μ œμ‹œν•  수 있으며, κ°œλ°œμžλŠ” 이λ₯Ό 톡해 ν˜„μž¬κΉŒμ§€ 개발 상황이 μ˜¬λ°”λ₯΄κ²Œ κ°€κ³  μžˆμŒμ„ μ•Œ 수 μžˆλ‹€.

#### Simple Design
κ°œλ°œμ„ ν•˜λ‹€ 보면 μ½”λ“œκ°€ λ³΅μž‘ν•΄μ§„λ‹€. λ”°λΌμ„œ **μ½”λ“œλ₯Ό κ°€λŠ₯ν•œ μ‹¬ν”Œν•˜κ²Œ 섀계λ₯Ό ν•œλ‹€.** (KISS 원칙 : Keep It Small, Simple)

#### Test-Driven Development
XPμ—μ„œ κ°€μž₯ μ€‘μš”ν•œ μš”μ†Œμ΄λ‹€. **ν…ŒμŠ€νŠΈλ₯Ό κ±°μΉ˜λ©΄μ„œ μ½”λ”©ν•œλ‹€.**

#### Pair Programming
**두λͺ… ν˜Ήμ€ κ·Έ μ΄μƒμ˜ ν”„λ‘œκ·Έλž˜λ¨Έκ°€ ν•¨κ»˜ 코딩을 ν•œλ‹€.** μ½”λ”© ν•˜λŠ” μ—­ν• , Quality Assurance μ—­ν•  λ“±μœΌλ‘œ λ‚˜λˆ„μ–΄μ„œ 개발과 ν…ŒμŠ€νŠΈμ— λͺ¨λ‘ μ§‘μ€‘ν•œλ‹€.

0 comments on commit a063237

Please sign in to comment.