🧭 익스트림 프로그래밍 (XP, eXtreme Programming)
**익스트림 프로그래밍(XP)**은
변화가 잦고 요구사항이 불확실한 프로젝트 환경에서
품질을 높이고 변화에 빠르게 대응하기 위해 고안된 애자일(Agile) 개발 방법론이다.
XP는 팀워크, 소통, 단순성, 피드백을 핵심 가치로 삼으며
짧은 개발 주기마다 테스트와 개선을 반복하여
안정적이고 품질 높은 소프트웨어를 만드는 데 초점을 둔다.
1. 개념 설명
익스트림 프로그래밍(Extreme Programming)의 "Extreme(극한)"이라는 말은,
소프트웨어 개발의 좋은 습관을 극한까지 강화한다는 뜻에서 비롯됐다.
예를 들어,
- 코드 리뷰(Code Review)는 “모든 코드를 두 사람이 함께 본다”(짝 프로그래밍).
- 테스트(Test)는 “모든 코드를 작성하기 전에 먼저 만든다”(테스트 주도 개발).
- 피드백은 “한 번이 아니라 계속 받는다”(지속적 통합).
즉, XP는 개발 과정의 모든 단계를 짧은 주기로 반복하며
작은 단위의 피드백을 빠르게 반영하는 **‘가벼운 반복형 실천 중심 방법론’**이다.
2. XP의 기본 가치 (5대 핵심 가치)
① 소통(Communication, 通信)
개발자, 고객, 팀 간의 원활한 의사소통을 강조한다.
② 단순성(Simplicity, 簡素)
필요 이상 복잡하게 만들지 않고, 현재 필요한 기능에 집중한다.
③ 피드백(Feedback)
결과를 빠르게 확인하고, 오류를 즉시 수정한다.
④ 용기(Courage, 勇氣)
문제점을 숨기지 않고 솔직히 공유하며, 개선을 두려워하지 않는다.
⑤ 존중(Respect, 尊重)
모든 팀 구성원이 동등하게 의견을 제시하고 협력한다.
이 다섯 가지가 XP의 철학적 기둥이다.
3. XP의 주요 실천 방법 (12가지 실천 항목)
XP는 원칙이 아니라 실천 중심의 방법론이다.
정처기 실기에서는 이 12가지를 정확히 기억해두는 게 중요하다.
1️⃣ 짝 프로그래밍(Pair Programming)
개발자 두 명이 한 대의 컴퓨터로 코드를 함께 작성한다.
→ 코드 품질 향상, 버그 감소, 지식 공유 효과.
2️⃣ 테스트 주도 개발(Test-Driven Development, TDD)
테스트 코드를 먼저 작성한 뒤 실제 코드를 개발한다.
→ 버그 예방, 리팩토링 용이.
3️⃣ 지속적 통합(Continuous Integration)
개발된 코드를 자주 통합하여 빌드와 테스트를 자동화한다.
4️⃣ 리팩토링(Refactoring)
기존 코드의 기능은 유지하면서 구조를 단순하고 효율적으로 개선한다.
5️⃣ 작은 릴리즈(Small Releases)
짧은 주기마다 작동 가능한 소프트웨어를 반복적으로 배포한다.
6️⃣ 공동 코드 소유(Collective Code Ownership)
모든 개발자가 코드 전체를 공동으로 책임지고 수정할 수 있다.
7️⃣ 코딩 표준(Coding Standards)
팀 내 일관된 코딩 규칙을 정해 코드의 가독성과 유지보수를 높인다.
8️⃣ 계속적인 고객 참여(On-site Customer)
고객이 팀 내부에 상주하거나 자주 참여하여 즉시 피드백을 제공한다.
9️⃣ 단순 설계(Simple Design)
현재 필요한 기능만을 구현하고, 불필요한 복잡성을 피한다.
10️⃣ 지속 가능한 속도(Sustainable Pace)
개발자가 과도한 야근 없이 일정한 리듬으로 일하도록 한다.
11️⃣ 계획 게임(Planning Game)
고객과 개발자가 함께 요구사항 우선순위를 정한다.
12️⃣ 메타포(Metaphor)
프로젝트 전체의 설계 개념을 쉽게 설명할 수 있는 비유적 표현을 사용한다.
4. XP의 특징 요약
- 애자일 기반의 실천형 방법론
- 짧은 반복 주기(Iteration)
- 고객의 상시 참여와 즉각 피드백
- 테스트 중심 개발과 코드 품질 중시
- 변화 대응에 강한 구조적 유연성
5. 장점
- 변경 요구에 빠르게 대응 가능
- 코드 품질이 향상되고 버그가 줄어듦
- 고객 만족도가 높음
- 팀 간 소통이 활발하고 지식 공유가 촉진됨
6. 단점
- 문서화가 부족하면 유지보수 시 어려움
- 팀원 간 실력 편차가 크면 효율 저하
- 고객이 상시 참여하지 않으면 효과 반감
7. 정처기 실기 정의 문장
“익스트림 프로그래밍(XP)은 애자일 방법론의 하나로,
고객의 요구 변화에 유연하게 대응하기 위해
짧은 개발 주기를 반복하며, 짝 프로그래밍, 테스트 주도 개발, 지속적 통합 등
실천 중심의 개발 기법을 적용하는 방법론이다.”
시험 키워드:
짧은 반복 주기, 고객 참여, 피드백, TDD, Pair Programming, Refactoring
🪶 단어 정리 (한국식 한자 + 영어 어원 + 뜻풀이)
익스트림(Extreme)
영어 extremus (가장 끝의, 극단의) ← 라틴어 ex (밖으로) + terminus (끝).
: 기존의 개발 습관을 극한으로 강화한다는 의미.
프로그래밍(Programming)
영어 programmare (계획하다, 순서대로 정하다).
: 문제 해결을 위한 명령어 집합을 작성하는 행위.
애자일(Agile)
영어 agilis (민첩한) ← 라틴어 agere(움직이다).
: 변화에 빠르게 대응하고 유연하게 대처하는 성질.
방법론(方法論)
모 방(方), 법 법(法), 논할 론(論).
: 일정한 목적을 달성하기 위한 체계적 절차.
피드백(Feedback)
영어 feed(공급하다) + back(되돌리다).
: 결과를 원인으로 돌려 개선하는 행위.
리팩토링(Refactoring)
영어 re(다시) + factor(구성 요소).
: 코드를 다시 구성하여 효율을 높이는 과정.
소통(通信)
통할 통(通), 믿을 신(信).
: 정보나 의견을 서로 주고받는 행위.
용기(勇氣)
날랠 용(勇), 기운 기(氣).
: 두려움을 이기고 옳은 방향으로 행동하는 마음.
단순(簡素)
대쪽 간(簡), 흴 소(素).
: 복잡하지 않고 간결한 것.
존중(尊重)
높을 존(尊), 무거울 중(重).
: 사람이나 의견을 귀하게 여기는 태도.
'자격증 > 정보처리기사 실기' 카테고리의 다른 글
🧭 스크럼 기법 (Scrum) (0) | 2025.10.10 |
---|---|
🧭 애자일 방법론 (Agile Methodology) (0) | 2025.10.10 |
🧭 소프트웨어 생명주기 (Software Life Cycle) (0) | 2025.10.10 |
프로토타입 모형이란? (0) | 2025.10.10 |
🧭 소프트웨어 개발 프레임워크 (Software Development Framework) (0) | 2025.10.10 |