익스트림 프로그래밍(Extreme Programming XP) » 이력 » 버전 2
이태훈, 2022/08/02 07:07
| 1 | 1 | 이태훈 | h1. 익스트림 프로그래밍(Extreme Programming XP) |
|---|---|---|---|
| 2 | |||
| 3 | * 짧은 주기의 이터레이션(Iteration)을 통해 요구 변화에 신속하게 대응하여 고품질의 소프트웨어를 빠르게 전달하는 애자일의 방법론 중 하나입니다. |
||
| 4 | |||
| 5 | 2 | 이태훈 | h2. 1) XP의 필요성 |
| 6 | 1 | 이태훈 | |
| 7 | * 신속한 개발 : RUP(Rational Unified Process)의 산출물 부담으로 신속한 개발이 불가능 하기 때문에 필요합니다. |
||
| 8 | * Time To Market : 빠른 시장 대응 능력이 향상되고 적시에 배포가 가능합니다. |
||
| 9 | * 유연한 대처 : 프로세스 중심의 전통 방법론으론 빠른 시장 대응이 어렵기 때문에 필요합니다. |
||
| 10 | |||
| 11 | 2 | 이태훈 | h2. 2) XP의 특징 |
| 12 | 1 | 이태훈 | |
| 13 | * 개발자, 관리자, 고객의 조화로 개발 생산성을 높입니다. |
||
| 14 | * 고객 요구 사항 변경에 적극적이고 긍정적으로 대응이 가능합니다. |
||
| 15 | |||
| 16 | 2 | 이태훈 | h2. 3) XP의 구성요소 |
| 17 | 1 | 이태훈 | |
| 18 | h3. 1. 사용자 스토리(User Story) |
||
| 19 | |||
| 20 | * 사용자 요구 사항/UML의 Use Case와 같은 목적 |
||
| 21 | * 릴리즈 게획을 작성하기 위한 단위 |
||
| 22 | * 기능 단위로 필요한 내용을 간단하게 기재, 필요 시 간단한 테스트 사항도 표기 가능 |
||
| 23 | * 시스템을 사용하는 고객이 필요한 것이 무엇인지를 기술 |
||
| 24 | |||
| 25 | h3. 2. 아키텍처 스파이크(Architectural Spike) |
||
| 26 | |||
| 27 | * 어려운 요구 사항 혹은 잠재적인 솔루션들을 고려하기 위해 작성하는 간단한 프로그램 |
||
| 28 | * 사용자 스토리의 신뢰성을 증대시키거나 기술적인 문제의 위험을 줄이고자 하는데 목적 |
||
| 29 | |||
| 30 | h3. 3. 배포 계획(Release Planning) |
||
| 31 | |||
| 32 | * 전체 프로젝트에 대한 배포 계획을 생성 |
||
| 33 | |||
| 34 | h3. 4. 반복(Iteration) |
||
| 35 | |||
| 36 | * 하나의 반복을 1주~3주 정도로 나누고 프로젝트 전반에 균일하게 유지 |
||
| 37 | * XP의 반복은 프로세스의 평가와 계획을 단순하고 신뢰성 있게 만드는 핵심 항목(반복 계획 미팅) |
||
| 38 | * 사용자 요구 사항 변경, 기술적인 문제 등 상황에 따라 릴리즈 및 반복 계획 수정 가능 |
||
| 39 | |||
| 40 | h3. 5. 승인 테스트(Acceptance Test) |
||
| 41 | |||
| 42 | * 릴리즈 전의 인수 테스트, 고객이 수행 |
||
| 43 | |||
| 44 | h3. 6. 소규모 배포(Small Release) |
||
| 45 | |||
| 46 | * XP 주기의 마지막 단계 |
||
| 47 | * 소규모로 빈번하게 배포하면 고객에게 여러 가지 이득을 조기 제공 |
||
| 48 | * 프로그램은 빠른 피드백을 제공 받음 |
||
| 49 | |||
| 50 | h3. 7. 기립 회의(Standup meeting) |
||
| 51 | |||
| 52 | * 전체 팀원들 사이의 의사소통으로 현재의 문제점 해결책 등을 논의하고 팀이 초점을 잃지 않도록 하기 위해 사용 |
||
| 53 | |||
| 54 | 2 | 이태훈 | h2. 4) XP의 가치 |
| 55 | 1 | 이태훈 | |
| 56 | * 의사소통(Communications) : 개발자, 관리자, 고객 간의 원활한 의사소통 |
||
| 57 | * 단순성(Simplicity) : 부가적 기능, 사용되지 않는 구조와 알고리즘 배제 |
||
| 58 | * 피드백(Feedback) : 지속적인 테스트와 통합, 반복적 결함 수정, 빠른 피드백 |
||
| 59 | * 용기(Courage) : 고객의 요구사항 변화에 능동적인 대처 |
||
| 60 | * 존중(Respect) : Stakeholder는 팀원의 기여를 존중하여 소프트웨어 개발 생산성과 인간성을 동시 개선 |
||
| 61 | |||
| 62 | 2 | 이태훈 | h2. 5) XP의 원칙 |
| 63 | 1 | 이태훈 | |
| 64 | * 인간성(Humanity) |
||
| 65 | * 경제성(Economics) |
||
| 66 | * 상호 이익(Mutual Benefit) |
||
| 67 | * 자기 유사성(Self-similarity) |
||
| 68 | * 개선(Improvement) |
||
| 69 | * 다양성(Diversity) |
||
| 70 | * 반성(Reflection) |
||
| 71 | * 흐름(Flow) |
||
| 72 | * 기회(Opportunity) |
||
| 73 | * 중복(Redundancy |
||
| 74 | * 실패(Failure) |
||
| 75 | * 품질(Quality) |
||
| 76 | * 아기발걸음(Baby Steps) |
||
| 77 | |||
| 78 | 2 | 이태훈 | h2. 6) 실천 항목 |
| 79 | 1 | 이태훈 | |
| 80 | h3. 1. Fine Scale Feedback |
||
| 81 | |||
| 82 | * Test Driven Development |
||
| 83 | |||
| 84 | - 개발자 먼저 단위 테스트, 실제 코드를 작성하기 전에 먼저 작성합니다. |
||
| 85 | |||
| 86 | * 고객은 기능 테스트를 작성하여 요구 사항이 모두 반영되었는지를 확인합니다. |
||
| 87 | |||
| 88 | * Planning Game |
||
| 89 | |||
| 90 | * 사용자 스토리를 이용해서 다음 릴리즈의 범위를 빠르게 결정합니다. 비즈니스 우선 순위와 기술적 평가가 결합되어있습니다. |
||
| 91 | |||
| 92 | * Whole Team |
||
| 93 | |||
| 94 | * 개발 효율성을 위해 고객을 프로젝트에 상주시킵니다. |
||
| 95 | * 고객은 스토리를 명확하게 해주고, 중요한 비즈니스 결정사항에 대해 명확한 답을 제공해주는 역할을 합니다. |
||
| 96 | |||
| 97 | * pair Programming |
||
| 98 | |||
| 99 | * 두 사람이 함께 프로그램 작업을 합니다(Driver/Partner) |
||
| 100 | * 모든 프로그래밍은 하나의 컴퓨터에 2명의 프로그래머가 같이 공동작업을 합니다. |
||
| 101 | |||
| 102 | h3. 2. Continuous Process |
||
| 103 | |||
| 104 | * Continuous Intergration |
||
| 105 | |||
| 106 | * 컴포넌트 단위로 혹은 모듈 단위로 나누어서 개발된 소스코드들은 하나의 작업이 끝날 때 마다 지속적으로 통합되고 동시에 테스트됩니다. |
||
| 107 | |||
| 108 | * Design Improvement |
||
| 109 | |||
| 110 | * 프로그램 기능은 변경 없이 중복/복잡성 제거, 커뮤니케이션 향상, 단순화, 유연성 추가 등을 통해 시스템을 재구성 합니다. |
||
| 111 | |||
| 112 | * Small Release |
||
| 113 | |||
| 114 | * 필요한 기능들만 갖춘 간단한 시스템을 빠르게 릴리즈, 고객이 소프트웨어가 어떻게 돌아가는지 아주 짧은(2주) 싸이클로 볼 수 있도록 자주 새로운 버전을 배포합니다. |
||
| 115 | |||
| 116 | h3. 3. Shared Understanding |
||
| 117 | |||
| 118 | * Simple Design |
||
| 119 | |||
| 120 | * 당장 필요하지 않은 디자인 배제합니다. |
||
| 121 | * 항상 가장 간결한 디자인 상태 유지합니다. |
||
| 122 | |||
| 123 | * System Metaphor |
||
| 124 | |||
| 125 | * 공통의 name system(의사 소통 및 공통 개념 공유) |
||
| 126 | * 전체 개발 프로세스에 걸쳐서 시스템의 동작에 대한 전체 그림을 표현하는 것으로, 이해하기 쉬운 스토리로 이루어집니다. |
||
| 127 | |||
| 128 | * Collective Code Ownership |
||
| 129 | |||
| 130 | * 팀의 모든 프로그래머가 소스 코드에 대해서 공동 책임을 지는 것으로, 시스템에 있는 코드는 누구든지 언제라도 수정 가능해야 합니다. |
||
| 131 | |||
| 132 | * Coding Standard |
||
| 133 | |||
| 134 | * 팀원들 간 커뮤니케이션을 향상시키기 위해서는 코드가 표준화 된 관례에 따라 작성되어야 합니다. |
||
| 135 | |||
| 136 | h3. 4. Programmer Welfare |
||
| 137 | |||
| 138 | * Sustainable Pace |
||
| 139 | |||
| 140 | * 일주일에 40시간 이상을 일하지 말도록 규칙으로 정하고 2주를 연속으로 오버 타임 하지 않도록 합니다. |