본문 바로가기
Computer Science/소프트웨어 공학

[SE] XP (eXtreme Programming)

by Hwan,. 2022. 7. 10.
728x90
반응형

** 아래 글은 개인의 조사를 바탕으로 주관적으로 작성되었습니다. 잘못된 부분은 댓글로 남겨주시면 수정하겠습니다.

 

XP ?

계획/ 피드백 루프

 XP(익스트림 프로그래밍)은 애자일 방법론의 유형 중 하나로 미국의 소프트웨어 엔지니어인 캔트 벡이 제안한 소프트웨어 개발 방법론이다.

비즈니스 상의 요구사항이 계속해서 바뀌는 경우에 사용하면 효율적인 개발 방법이며, XP라는 약칭으로 불린다.

 

XP는 5가지의 가치와 12개의 기본 원리(또는 실천 방법)와 1~3주 정도의 반복 주기(Iteration)가 존재하며, 개발 문서 보다는 소스 코드를 조직적인 개발의 움직임 보다는 개개인의 책임과 용기에 중점을 둔다.

또한 12가지 기본 원리 중 하나인 테스트 기반 개발(TDD; Test Driven Develop)를 통해 프로그래머들이 코딩 전에 테스트 코드를 작성하기 때문에 반복적인 프로토 타입의 전달 시에 버그가 상대적으로 적은 데모를 경험할 수 있게 해준다.

 

켄트 백은 XP를 이끄는 가치와 원칙에 대해서도 강조했다.

실천 방법에만 집중하고 가치와 원칙을 무시한다면, XP를 제대로 실천하고 있다고 하기는 어렵다고 생각한다.

 

아래에서는 각 가치와 원칙을 정리해보겠다.


 

XP의 5가지 가치

 xp에서는 아래 5가지의 가치를 추구한다.

 

  • 용기 (Courage) 
  • 단순성 (Simplicity) 
  • 의사소통 (Communication)
  • 피드백 (Feedback)
  • 존중 (Respect)

가치의 실현을 위해서는 자신감있게 개발하고 빠르게 피드백하며, 테스트에 부합하지 못할 경우 코드를 리펙토링(용기)할 수 있도록해야 한다. 또한 단순성을 위해서 필요한 최소한의 작업만을 해야하고 개발자-관리자-고객 간의 원활한 소통(의사소통)을 하여 소통에 대한 빠른 피드백을 전달해야 한다.

마지막으로는 팀원 서로간의 상호 존중해야 한다.


 

XP의 12가지 기본 원리

  XP에는 12가지의 기본 원리가 존재한다.

 

  •  짝 프로그래밍 (Pair Programming)
  • 공동 코드 소유 (Collective Ownership)
  • 지속적인 통합 (CI; Continuous Intergration)
  • 계획 세우기 (Planning Process)
  • 작은 릴리즈 (Small Release)
  • 메타포어 (MetaPhor)
  • 간단한 디자인 (Simple Design)
  • 테스트 기반 개발 (TDD; Test Driven Develop)
  • 리팩토링 (Refactoring)
  • 40시간 작업 (40-Hour Work)
  • 고객 상주 (On Site Customer)
  • 코드 표준 (Coding Standard)

 먼저 짝 프로그래밍은 개발자 2인이 짝으로 코딩한다는 원리이다.

시스템에 있는 코드는 누구나, 언제나 수정이 가능(공동 코드 소유)해야하며 매일 여러번씩 소프트웨어를 통합하고 빌드(CI)해야한다.

 XP에서는 고객이 요구하는 가치를 정의하고 개발자가 필요한 내용이 무엇인지, 어떤 부분에서 지연될 수 있는지를 알려주어야한다.(계획 세우기) 또한 작은 릴리즈를 위해서는 작은 시스템을 먼저 만들고, 짧은 주기로 업데이트 해야한다.

 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자의 의사소통을 원활하게 하며 (메타포어), 간단한 디자인은 현재의 요구사항에 적합한 가장 단순한 시스템을 설계한다는 원리이다.

 테스트 기반 개발(TDD)은 위에서도 잠깐 언급했지만, 다른 애자일 방법론과 차이를 두게 하는 중요한 부분이다.

개발자는 TDD를 위해 작성해야 하는 프로그램에 대한 테스트를 먼저 작성해야하며, 이 테스트를 통과할 수 있도록 실제 프로그램의 코드를 작성해야 한다.

 리팩토링은 프로그램의 기능을 변경하지 않으면서 중복을 제거하고 기능을 단순화하는 등의 최적화에 대한 내용이고 40시간 작업은 말 그대로 주 40시간 미만의 작업을 통해 개발자의 피로도를 관리하여 실수를 줄인다는 의미이다.

고객상주는 개발자의 질문에 즉각 대답해 줄 수 있는 고객을 프로젝트에 풀타임으로 상주시켜야 한다는 의미이고, 마지막 코드 표준은 효과적인 공동작업을 위해 모든 코드에 대한 코딩 표준을 정의해야 한다는 원리이다.


 

정리 및 느낀점

 애자일 방법론의 여러 유형 중 하나인 XP에 대해서 정리해보았다.

기존의 여러 전통적인 방법론들(폭포수, 나선형 모델)과 비교하면 훨씬 복잡하지만 위의 기본 원리들이 잘 실행되고 가치들도 잘 지켜진다면, 기존의 단점을 없애면서도 생산성과 결과물의 완성도 등을 높일 수 있는 획기적인 방법이라는 생각이 들었다.

 하지만 각 가치를 추구하면서도 12가지 기본 방법들을 지켜나가려면 팀원 개개인과 고객, PM등 프로젝트의 구성원 모두가 XP에 대해서 잘 이해하고 있어야하고, 원칙과 가치만 존재하기 때문에(같은 용어여도 사람마다 생각하는 게 다를 수 있을 것 같다.) 현실의 프로젝트에 적용하기는 쉽지 않겠다는 생각이 들었다.

데브옵스가 시장에서 많이 활용되어지는 이유 중 하나라고 생각한다.


 

참고자료

 

 

 

728x90
반응형

'Computer Science > 소프트웨어 공학' 카테고리의 다른 글

[SE] SDLC (Software Development Life Cycle)  (0) 2022.09.12
[SE] MSA (Micro Service Architecture)  (0) 2022.06.26
[SE] DevOps  (0) 2022.04.12

댓글