1. 코딩보다 테스트를 먼저 하는 방법론 XP(eXtreme Programming)
가. Xp(eXtreme Programming)의 정의
- 소프트웨어를 개발하기 위한 가볍고 효율적이며 낮은 위험도를 가진 방법론
- 고객이 원하는 소프트웨어를 고객이 원하는 시간에 인도 하기 위하여 고안
나. XP의 특징
- 유연하며 프로젝트에 대한 예상도 가능
- 소프트웨어 라이프사이클 후반이라도 요구사항 변경에 대해 용기 있게 대처
하도록 격려
- 변화에 대한 비용 모델을 바꾸고(cost of change) 을 바꾸고 리팩토링이나
테스트 중심 개발 같은 기술적 개념을 강조하는 새로운 관점을 제시
다. XP에서 제시하는 4가지 핵심 가치
Communication | - 적절한 커뮤니케이션 - 단체 테스트, 페어 프로그램밍 |
Feedback | - 프로토타이핑을 통한 즉각적인 피드백 |
Simplicity | - 단순화 하고 수정이 편리 |
Courage | - S/W 개발과정의 변경을 과감히 수용하는 용기 |
2. XP 프로세스 및 기본원리
가. 프로세스
.사용자스토리 | - UML의 유스 케이스와 같은 목적 - 배포 계획에 대한 시간 계산에 사용되기도 하며 요구사항 문서 대신 가능 - 시스템을 사용하는 고객이 필요한 것이 무엇인지 기술 -> 인수테스트에 사용 |
스파이크 | - 잠재적인 솔루션들을 고려하기 위해 작성하는 간단하 프로그램 - 사용자 스토리의 신뢰성 증대 또는 기술적인 문제의 위험성 감소에 사용 |
배포계획 | - 전체 프로젝트에 대한 배포 계획을 생성 - 의사결정을 하기 위해 프로젝트에 포함되는 모든 것들에 대한 규칙을 가짐 - 규칙들은 프로젝트를 수행하기 위한 방법들로 정의 |
반복 | - 반복적 개발에서는 민첩함을 중요하게 여김 - 하나의 반복을 1~3주 정도로 나눔, 반복들을 프로젝트 전반에 균일하게 유지 - Xp의 반복은 프로세스의 평가와 계획을 단순, 신뢰성 있게 만드는 핵심 항목 - 즉각적인 계획과 실행은 사용자 요구 사항들의 변경에 쉽게 대처하기 위함 |
인수테스트 | - 고객은 제대로 작동하는 시스템을 보면서 진척사항을 확인하고 - 시스템이 자신이 직접 명세한 테스트를 통과했는지 파악 |
작업배포 | - 작은 배포는 XP 주기의 마지막 단계 - 소규모로 빈번하게 배포하면 고객에게 여러 가지 이득을 조기 제공 -프로그램은 빠른 피드백을 제공 받음 |
나. XP의 기본원리
pair programming | 개발자가 짝을 이루어 프로그램 작성 |
Small Release | 작은 단위의 신속한 배포 |
테스트 | 개발중 지속적인 테스트 수행 |
메타포 | 요구사항을 다이어그램으로 명확화 |
공동책임 | 개발된 코드에 대해 공동의 책임 |
주 40시간 | 주 40시간 이내의 근무 |
3. XP의 기대효과 및 전망
가.기대효과
계획측면 | - 팀이 개발한 SW의 가치를 최대화 - 가능한 적게 투자, 가능한 빨리, 가능한 가장 가치 있는 기능 구현 |
설계측면 | - 의사소통을 통하여 설계, 중복된 코드가 없을 것 -> 가장 단순하게 개발 - 가능한 클래스와 메소드 들은 적게 만들 것 -> 변경에 유연 |
개발 측면 | - 지속적인 통합, 수정, 테스트, 배포 - 복잡한 코드 제거 - 페어 프로그램으로 완벽한 코딩 |
테스트측면 | - 각 테스트는 다른 부분과 관련이 없어야 함 -> 테스트 자동화 - 테스트 프로그램 만드는 주체는 프로그래머 함수 단위, 고객 스토리 단위 |
나. XP의 전망
전망 | 설명 |
긍정적인 전망 | - 방법론 그 자체가 아니라 일부 기법이나 사상이 사용하기 매우 좋음 - 중,소형 프로젝트에서 적용하기에 적합 -> 대형 프로젝트도 타스크 단위로 적용 바람직 - 아키텍쳐 설계 및 프로토타이핑 수립과 같은 태스크 수행 시 적합 |
부정적인 전망 | - 방법론 그 자체로서 적용하기에는 프로세스 정립은 부족함 - 대형 프로젝트에서 적용하기에 적합하지 않음 - 감리에 대한 대응의 어려움 - 관리 방법에 대한 가이드라인이 부족함 |
'기본카테고리' 카테고리의 다른 글
기술사 시험 준비 요령 (4) | 2009.10.04 |
---|---|
기술사공부방법 (이제언기술사) (2) | 2009.10.04 |
소프트웨어 공학 (0) | 2009.10.03 |
제87회 기출문제 분석 (0) | 2009.08.28 |
전자계산조직응용기술사 기출문제 분석 초벌자료 (0) | 2009.08.17 |