티스토리 뷰

XP (eXtreme Programming)

XP (ExtremeProgramming)AgileMethodology의 하나로, 소프트웨어 개발에 있어서 단순성(simplicity), 소통(communication), 피드백(feedback), 용기(courage)의 네가지 가치 추구를 통해, 고객의 비지니스 가치 실현을 최고의 목표로 하는 실천적인 개발 방법론이다.

익스트림 프로그래밍(XP)은 애자일 소프트웨어 개발론(Agile Software Development)의 하나로, 단순성, 상호소통, 피드백,용기 등의 원칙에 기반해서 "고객에게 최고의 가치를 가장 빨리" 전달하도록 하는 경량 방법론이다. 요구사항 등의 변화가 자주, 많이 있거나 개발자가 소규모(10명 내외)이고 같은 공간을 사용하는 경우에 높은 효과를 볼 수 있다고 알려져 있다.

This flow chart shows how Extreme Programming's rules work together.

이 방법은 비즈니스 상의 요구가 시시각각 변동이 심한 경우에 적합한 개발 방법이 10~12개 정도의 구체적인 실천 방법(Practice)을 정의하고 있어, 비교적 적은 규모의 인원의 개발 프로젝트에 적용하기 좋다. 개발 문서 보다는 소스코드를, 조직적인 개발의 움직임 보다는 개개인의 책임과 용기에 중점을 두는 경향이 크다.

비즈니스 상의 요구가 시시각각 변동이 심한 경우에 적합한 개발 방법이다.(기존 개발방법론의 고정관념을 깬 혁신적이고 효율적인 개발방법론)
진정한 리더와 열정이 있는 개발자의 만남 - > 시너시효과 기대가능!!!
<!--[endif]-->
변경비용 감소, 고객중심, 신속한 결과물 인도를 목적으로 하는 (에자일방법중)가장 민첩한 방법론
XP의 목적은 '고객이 원하는 양질의 소프트웨어를 빠른 시간안에 전달하는 것'이다. 수시로 발생하는 고객의 요구사항에 대처하고, 고객이 원하는 SW를 고객이 원하는 시간에 인도하기 위해서는 고객과 팀원간의 대화를 통해 해결한다.

나선형 시제품 과 마찬가지로 XP도 점증적 방법론

The most surprising aspect of Extreme Programming is its simple rules ( 하기함 12가지 )

XP12가지 실천 사항 (Practices)
계획 세우기(Planning Process) : 초기 계획, 요구 비즈니스의 가치를 정의하고 개발자에게 필요한 것은

무엇이며 어떤 어려움이 있는지 고객에게 이해 시킴, 우선순위와 범위를 정하고 비용 견적

지속적인 테스팅(Continuous Testing) : 소프트웨어의 적합성에 초점을 두고 통합 전후 테스트하며

필요 요구사항을 향상시킴

짝 프로그래밍(Pair Programming) : 짝을 이루어 의견교환하며 프로그래밍함으로(시너지) 이해도와

그로 인해 생산성이 높고 지식 공유, 작업에 대한 만족도 증가

현장 고객 지원(On-site Customer) : 문서가 아닌 현장에서 실제 의사소통을 통한 문서의 최소화,

체계화 추구

Small Release : 소규모 처리, 짧은 단위의 갱신 처리를 우선으로 함
Refactoring : 과감한 군더더기와 사용하지 않는 기능의 제거 등 깔끔하고 명료한 정리를 위해 설계의

상세화를 계속함

지속적인 통합(Continuous Integration) : 수시 통합 구축을 통해 지속적인 검사하고 보완함

시스템 상징화(Metaphor) : 클래스 명, 메소드, 변수 명의 체계화를 통한 의사소통의 공통 언어 확립
단순한 디자인(Simple Design) : 미래를 많이 고려치 않고 요구에 충족하는 설계의 최대 간단화
공동 코드 소유(Collective Code Ownership) : 정보는 공유될 수록 커지고 강력해지며 보완됨
코딩 표준(Coding Standard) : 코딩의 표준화로 효율의 극대화
주당 40시간 업무(40 hour Week) : 너무 무리하지 말라
Extreme Programming is one of several popular Agile Processes.
XP 에자일 프로세스의 한 부분이라고 할 수 있겠다
XP정의 첫 페이지에 (사전정의 )상기해놓은 Agile methodology XP가 큰것을 쪼갰다면 이는 작은것을 쪼개어 작은 프로그램을 만드는 것이다. 이는 또한 코딩, 즉 프로그램을 처음부터 다시 만드는 작업을 최소화 하기 위해 이미 사용하고 있는 프로그램들을 조합하는 것이 특징이다.
개발자 사이에 의사소통을 원활히 하는 한 방법으로 Pair 프로그래밍을 함!

개발자간의 서로에 대한 배려,이해심 배우려는 자세가 꼭 필요할 것 같다.

XP’s features

n프로그래머와 고객, 동료 프로그래머와의 의사소통을 중요시 함

n(의사소통의 원활을 위해 Pair 프로그래밍을 함!!!)
n
n단순하고 명확한 설계 유지(단순성)
n
n가장 우선순위가 높은 것을 먼저 개발함(점증적 개발)
n
n되도록 초기에 고객에게 시스템을 전달하여 피드백을 받음
n
n프로그래머는 잦은 요구사항과 기술의 변경에 용감하게 대응할 수 있음
n( Sad to say S/W Engineer is difficult to understand that)
n 잦은 요구사항은 개발자들에게 진이 빠지게 할 것으로 보임.
- XP and an epilogue -

애자일 방법론과 구분되는 XP만의 특징에는 테스팅이 있다. XP는 프로그래머들이 코딩을 할때에 테스트 코드를 작성 하도록함과 동시에 테스트를 기반으로 프로젝트를 완성시켜 나가도록 한다. 또한 이러한 테스트에 기반을둔 프로젝트 발전 과정은 애자일 방법론의 기본 개념인 "반복적으로 프로토 타입을 고객에 전달 하므로써 고객의 요구사항 변화에 민첩하게 대응한다" 실천 하는데에 큰 도움을 줄 수 있다. 왜냐하면 매번 프로토 타입을 고객에 전달함에 있어서 프로토 타입 자체로써 버그가 상대적으로 적은 완벽에 가까운 데모를 경험하게 해줄 수 있기 때문이다.

<!--[endif]-->
익스트림 프로그래밍에서는 덩어리가 아닌 세분화된 계획 후 실행, 피드백이 반복되면서 개발하는것이 특징이다.(중요한 시스템을 하위 구성요소로 잘게 나누어 마치 싸이 앨범 퍼즐을 맞추듯이 개발하는 것이다.)
to my way of thinking XP is ..
일을 작게 분할하고, 빠르게 피드백이 오기 때문에 안정적인 방법인 것 같다.
그리고 요구사항이 자주 변경된다고 하였는데 그렇다면 개발자 입장에서 생각해보면 한마디로 진이 빠질 것 같다 오늘 개발을 열심히 했는데 다가오는 내일이 되어서 다시 바뀐다고 생각을 해보니 정말 힘이 빠질 것 같다. 물론 질 좋은 제품을 생산하기 위해서는 좋겠지만 말이다..
교수님 말씀대로 폭포수 방법이 더 좋을 때가 있고 에자일 방법이 더 좋을 때가 있는 것 같다.

예를 들어 축구 게임을 만든다고 치면 회사원 중에서 축구게임을 만들어본 사람이 있다면 굳이 에자일 방법중 xp방법을 사용할 필요는 없다고 생각한다. 폭포수방법으로 직진으로 가면 될 것이기 때문,,. 그리고 이러한 방법들도 물론 때에 따라 사용한다지만 무엇보다 나는 얼마만큼의 열정이 있는 개발자인지가 더 중요한 것 같다.,

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함