-
Notifications
You must be signed in to change notification settings - Fork 115
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[SoftwareEngineering] eXtreme Programming 정리 #63
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
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 역할 등으로 나누어서 개발과 테스트에 모두 집중한다. | ||
Comment on lines
+44
to
+48
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. XP에서 코딩을 할 때 테스트도 같이 개발을 한다고 했는데, 테스트와 코딩은 어떤 것이 먼저 이루어지거나가 없이 "동시에" 이루어지나요? 아니면 TDD처럼 테스트 코드를 먼저 작성한 후 개발을 진행하나요? 그리고 페어 프로그래밍에서 코딩 역할과 QA 역할으로 나뉜다고 그랬는데, 코딩과 QA는 각각 한 사람이 맡는건가요? 아니면 한 사람이 코딩과 QA를 모두 맡고, 다른 사람이 그와 관련된 아이디어를 던져주는 방식으로 진행되나요? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 우선 첫번째 질문에 대한 답을 드리자면 일반적으로 XP에서는 테스트와 코딩이 "동시에" 이루어집니다. 물론 코딩을 하는 사람과 테스트 코드를 작성하는 사람의 역량 차이에 따라 둘 중 하나가 먼저 마무리되는 경우는 있습니다. 페어 프로그래밍에서는 두 사람이 한 팀이되어 한명은 코딩, 한명은 QA를 위한 테스트 코드를 만듭니다. XP에서는 이런 방식으로 TDD가 진행됩니다. 서로 협력하는 과정에서 당연히 커뮤니케이션이 오고가니 서로 아이디어를 던져줄 수는 있습니다. 그런데 일방적으로 한 사람은 아이디어만 주고 한 사람은 아바타 마냥 코딩만하는건... 그것도 어찌보면 페어니까 페어 프로그래밍이라고 할수도 있겠네요ㅎㅎ 다만 XP에서는 코딩과 QA를 각각 한 사람이 맡는 것을 페어 프로그래밍이라 칭합니다. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 아 덕분에 검색을 해도 모호하게 나오던 개념을 확실하게 잡을 수 있었네요 !! 정말 감사합니다 ㅎㅎㅎㅎ!! 확실히 이해가 되었어요 ㅎㅎ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
오 KISS ~~ 💋
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
그... 그런 방 아닙니다..