XP

기술노트

🏃 XP (eXtreme Programming)

XP는 애자일 개발 방법론 중 하나로, 코드 품질과 개발 생산성을 극대화하기 위한 구체적인 개발 프랙티스(Practice)들을 강조하는 경량 방법론입니다. 불확실하고 변화가 잦은 요구사항에 대응하기 위해, 고객과의 긴밀한 협력과 짧은 개발 주기를 특징으로 합니다.

XP는 애자일 선언문의 가치를 실현하기 위한 매우 실천적인 방법론입니다.


📜 XP의 5가지 핵심 가치

  • 소통 (Communication) : 고객과 개발자, 개발자들 간의 원활한 의사소통을 강조합니다.
  • 단순성 (Simplicity) : 지금 당장 필요한 가장 단순한 코드를 작성하고, 미래를 예측하여 과도하게 설계하지 않습니다. (YAGNI: You Ain't Gonna Need It)
  • 피드백 (Feedback) : 짧은 주기로 고객과 동료로부터 지속적인 피드백을 받아, 잘못된 방향으로 가는 것을 조기에 방지합니다.
  • 용기 (Courage) : 필요하다면 기존의 설계를 과감하게 변경(리팩토링)하고, 잘못을 인정하며, 어려운 문제를 회피하지 않는 용기를 의미합니다.
  • 존중 (Respect) : 팀원 서로의 의견과 능력을 존중합니다.

⚙️ XP의 12가지 주요 프랙티스

  • 짝 프로그래밍 (Pair Programming) : 두 명의 개발자가 하나의 컴퓨터에서 함께 코드를 작성하며, 한 명은 코딩하고 다른 한 명은 리뷰하는 방식으로 코드 품질을 높입니다.
  • 테스트 주도 개발 (TDD, Test-Driven Development) : 실제 코드를 작성하기 전에 실패하는 테스트 코드를 먼저 작성합니다.
  • 지속적인 통합 (CI, Continuous Integration) : 변경된 코드를 주기적으로 중앙 저장소에 통합하고, 자동으로 빌드 및 테스트합니다.
  • 작은 릴리즈 (Small Releases) : 매우 짧은 주기로 동작하는 소프트웨어를 고객에게 전달하여, 빠른 피드백을 받습니다.
  • 코드 공동 소유 (Collective Code Ownership) : 팀의 모든 코드는 누구나 수정하고 개선할 수 있는 공동의 자산입니다.
  • 코딩 표준 (Coding Standard) : 팀의 모든 구성원이 따르는 일관된 코딩 스타일 규칙을 정합니다.
  • 리팩토링 (Refactoring) : 코드의 기능은 바꾸지 않으면서, 내부 구조를 지속적으로 개선합니다.
  • 단순한 설계 (Simple Design) : 현재의 요구사항을 만족하는 가장 단순한 설계를 선택합니다.
  • 고객 상주 (On-site Customer) : 고객 또는 고객의 역할을 하는 사람이 개발팀과 함께 상주하며, 요구사항에 대해 즉각적으로 소통합니다.
  • 메타포 (Metaphor) : 시스템 전체의 구조와 동작 방식을 설명하는 간단한 비유나 이야기를 공유합니다.
  • 지속 가능한 속도 (Sustainable Pace) : 팀이 장기적으로 지치지 않고 일할 수 있는 속도를 유지합니다. (야근 금지)
  • 주간 계획 (Weekly Cycle) / 분기 계획 (Quarterly Cycle) : 짧은 주기와 긴 주기의 계획을 세웁니다.

💡 기술사 핵심 Point

  • XP는 다른 애자일 방법론에 비해 개발자의 기술적인 실천 방안을 매우 구체적으로 제시하는 것이 특징입니다.
  • 특히 TDD, 짝 프로그래밍, CI, 리팩토링과 같은 프랙티스들은 현대 소프트웨어 개발의 모범 사례로 널리 받아들여지고 있습니다.
  • XP는 고객과의 긴밀한 협력과 개발팀의 높은 수준의 기술 역량을 필요로 합니다.