
소프트웨어 개발에서 XP는 **‘가장 효과적인 개발 관행들을 극한으로 밀어붙인 방식’**이다.
즉, 테스트를 하려면 “항상 자동으로”, 코드 리뷰를 하려면 “모든 순간에”, 고객의 요구를 반영하려면 “매일매일” 하는 것이다.
⸻
1. XP의 기본 철학
XP의 핵심은 “변화에 대한 유연한 대응”이다.
요구사항이 자주 바뀌는 환경에서도 높은 품질의 코드를 유지하려면,
프로세스보다 소통, 피드백, 단순함, 용기, 존중이 중요하다고 본다.
이 다섯 가지는 XP의 **핵심 가치(Core Values)**이다.
이 가치 위에서 XP의 **실천 방법(Practices)**이 구체적으로 작동한다.
⸻
2. XP의 주요 실천 방법 (핵심 12 Practices)

(1) Pair Programming ― 짝 프로그래밍
두 명이 한 컴퓨터에서 함께 코드를 작성한다.
한 사람은 ‘운전(Driver)’으로 코드를 입력하고, 다른 사람은 ‘항법(Navigator)’으로 설계와 오류를 살핀다.
이는 코드 품질을 높이고 팀 간 지식이 고르게 퍼지도록 만든다.
(2) Test-Driven Development(TDD) ― 테스트 주도 개발
“테스트를 먼저 작성하고, 그 테스트를 통과하는 최소한의 코드만 작성한다.”
이 원칙은 코드의 의도를 명확하게 하고, 불필요한 복잡도를 줄인다.
(3) Continuous Integration ― 지속적 통합
개발자들이 자주(하루 여러 번) 코드를 통합하고 테스트한다.
충돌이 작을 때 빠르게 수정함으로써 버그를 조기에 발견할 수 있다.
(4) Refactoring ― 리팩토링
동작은 유지하면서 코드 구조를 개선하는 것.
XP에서는 “코드 냄새(Code Smell)”를 방치하지 않고, 항상 단순하게 정리한다.
(5) Simple Design ― 단순한 설계
“지금 필요한 것만 만든다.”
XP는 미래의 불확실한 요구사항에 대비한 복잡한 설계를 거부한다.
필요한 순간이 오면 그때 리팩토링으로 대응한다.
(6) Collective Code Ownership ― 공동 코드 소유
특정 코드의 ‘주인’이 따로 없다.
모든 개발자가 시스템의 모든 코드를 수정할 수 있어야 한다.
이는 책임감과 코드 품질을 팀 전체로 분산시킨다.
(7) Coding Standards ― 코딩 표준
모든 팀원이 같은 규칙으로 코드를 작성한다.
형식이 일관되면 코드 리뷰와 유지보수가 쉬워진다.
(8) Continuous Feedback ― 지속적 피드백
코드, 테스트, 고객, 동료 등으로부터 피드백을 즉시 얻는다.
XP 팀은 ‘하루 단위’로 학습하고 개선한다.
(9) Short Release Cycle ― 짧은 릴리스 주기
기능을 빠르게 배포하고, 고객 피드백을 즉시 반영한다.
릴리스 주기는 보통 1~3주 단위로 짧게 가져간다.
(10) On-site Customer ― 현장 고객 참여
실제 고객이 팀에 상주하거나, 즉시 의견을 제공할 수 있도록 참여한다.
이로써 요구사항을 추측이 아니라 “직접 확인”으로 처리한다.
(11) Sustainable Pace ― 지속 가능한 속도
XP는 “야근은 실패의 징조”라고 본다.
개발자는 장기적으로 일정한 리듬으로 일해야 한다.
피로는 품질을 해치고 오류를 낳는다.
(12) Metaphor ― 시스템 은유
프로젝트 전체가 공감할 수 있는 ‘비유’를 사용해 시스템 구조를 설명한다.
예를 들어 “은행 계좌 시스템은 저수지다.”처럼,
복잡한 아키텍처를 비유로 단순하게 표현한다.
⸻
3. XP의 실천 방법이 주는 효과

XP는 코드 품질을 높이면서도 빠르게 변하는 요구에 적응할 수 있게 한다.
결국 목표는 “변화 속에서도 품질을 유지하는 팀”이다.
이는 단순히 프로그래밍 방식이 아니라, 팀 문화와 태도이기도 하다.
XP는 기술보다 사람을 중심에 둔 개발철학이다.
⸻

4. XP를 성공시키는 태도
• 소통(Communication): 문제는 숨기지 않고 즉시 공유한다.
• 용기(Courage): 잘못된 설계를 버리고 새로 시작하는 용기.
• 존중(Respect): 동료의 의견을 인정하고 코드에 애정을 가진다.
• 단순함(Simplicity): 지금 필요한 것 외엔 만들지 않는다.
• 피드백(Feedback): 모든 행위에서 배움을 얻는다.
이것이 XP의 정신이다.
⸻
단어정리
극단적 프로그래밍(極端的 Programming) / eXtreme Programming
• 극단(極端, 끝 극, 끝 단): 가장 끝에 다다름.
• 프로그래밍(programming): 영어 program(계획하다, 순서를 짜다) + 접미사 -ing(행위).
리팩토링(Refactoring)
• re-(다시) + factor(요소, 만들다) → 구조를 다시 구성하다.
단순(單純) / Simplicity
• 단(單, 홑 단): 하나.
• 순(純, 순수할 순): 섞이지 않음.
• simplicity: 라틴 simplex(하나의 접힘)에서 유래, “단일하고 명료함”의 의미.
통합(統合) / Integration
• 통(統, 거느릴 통) + 합(合, 합할 합): 여러 것을 한데 모음.
• integration: 라틴 integer(전체, 완전한)에서 파생.
지속(持續) / Continuous
• 지(持, 가질 지), 속(續, 이을 속): 계속 유지함.
• continuous: 라틴 continuare(끊기지 않게 잇다)에서 유래.
용기(勇氣) / Courage
• 용(勇, 날랠 용), 기(氣, 기운 기): 두려움 없이 나아가는 마음.
• courage: 라틴 cor(heart, 마음)에서 파생, “마음의 힘”이라는 뜻.
⸻
XP는 인간 중심의 기술적 시스템이다. 코드를 짜는 손보다 중요한 것은, 그 손을 움직이는 사람의 사고방식이다.
'자격증 > 정보처리기사 실기' 카테고리의 다른 글
하드웨어 구성 파악과 이중화(二重化) – 서버는 왜 ‘복제’를 두려워하지 않는가 (0) | 2025.10.11 |
---|---|
현행 시스템을 파악하는 과정 – 구조를 읽고, 논리를 해부하다 (0) | 2025.10.11 |
🧭 익스트림 프로그래밍 (XP, eXtreme Programming) (0) | 2025.10.10 |
🧭 스크럼 기법 (Scrum) (0) | 2025.10.10 |
🧭 애자일 방법론 (Agile Methodology) (0) | 2025.10.10 |