eXtrem Programming


## XP
### 설계 결정의 순간을 최대한 미루는 것
필요한 것에만 집중함으로써 지금 하지 않아도 될 일을 하지 말라는 뜻
나중에 설계를 변경했을 때, 시스템의 안전성을 보장할 만큼의 테스트 커버리지를 확보하여 퇴로를 항상 열어둔다


### Description
켄트 백 등이 제안한 소프트웨어 개발 방법
비즈니스 상의 요구가 시시각각 변동이 심한 경우에 적합한 개발 방법
10~12개 정도의 구체적인 실천 방법(Practice)을 정의하고 있어, 비교적 적은 규모의 인원의 개발 프로젝트에 적용하기 좋다. 개발 문서 보다는 소스코드를, 조직적인 개발의 움직임 보다는 개개인의 책임과 용기에 중점을 두는 경향이 크다.
XP는 프로그래머들이 코딩을 할때에 테스트 코드를 작성하도록함과 동시에 테스트를 기반으로 프로젝트를 완성시켜 나가도록 한다.
- Whole Team
> 개개인이 각자의 역할이 있고 일반적으로 tester, interaction designers, architects, project managers, product managers, executives, technical writers, programmers and users가장 중요한 팀원은 사용자(user) 이다. 왜냐하면 그들이 프로젝트의 키를 가지고 있는(stakeholder)일 뿐만 아니라 그들을 통해 요구사항(requirement)을 파악 할 수 있기 때문이다.
- Planning Game
> P 에서 계획을 세우는데에는 중요한 2가지가 있다. 첫 번째, 이번 반복(iteration)에는 어떤 개발 과정을 끝마칠 것인가. 두 번째, 그 이후 개발 반복(iteration)에서는 무엇을 할것인가
- Customer Tests
- Small Releases
> 의뢰인은 제한된 기능을 가지고 있지만 실제로 작동이 되는 데모 모델을 볼 수가 있으며 추가 사항을 요구 할 수도 있다
- Simple Design
- Test-Driven Development
- Pair Programming
> 한명은 코딩을 하고 한명은 Quality Assurance 역할 통해서 테스트에만 집중을 할 수도 있다.

> “Keep it small and simple.”  - kiss principle is Occam's Razor(science theory) in computer science





> [Untitled](https://huns.me/posts/2019-09-26-overengineering-vs-underengineering)





