익스트림 프로그래밍(Extreme Programming, XP)
: 소프트 개발을 위한 애자일(Agile) 개발 방법론 중 하나이다.
개발 프로세스와 관련된 원칙을 강조하며 팀 협업과 소프트웨어 품질 향상을 중심으로 한다. 작은 규모의 개발팀에서 효과적으로 사용되며 변경이 많은 요구를 접할 경우 유용하다. 이를 구동시키는 원리는 상식적인 원리와 경험을 최대한을 끌어올리는 것이다. 구체적인 실천 방식을 정의 하며 개발 문서보다는 소스코드에 중점으로, 조직적인 개발의 움직임 보다는 개개인의 책임과 용기에 중점을 두고 있다.
핵심적인 원칙과 개념
- 단순성(Simplicity) : 단순한 코드와 설계를 지향한다. 기능의 우선순위를 정하여 최소한의 기능을 빠르개 개발하고 사용자 피드백을 수렴하여 개선한다.
- 피드백(Feedback) : 사용자의 지속적인 피드백으로 빠르게 개발하여 변화에 대응한다.
- 커뮤니케이션(Communication) : 팀원들과의 원활한 소통을 강조한다. 공동작업, 지식 공유, 문제 해결을 위한 적극적인 소통을 장려한다.
- 플래닝(Planning) : 짧은 주기의 반복적 개발을 통해 요구사항 우선순위에 따라 계획하고 실행한다.
- 테스트(Test) : 자동화된 테스트를 중시하며 지속적인 테스트로 안정성과 품질을 보장한다.
- 리펙토링(Refactoring) : 지속적인 개선으로 코드의 구조와 설계를 개선해나간다.
12가지 실천 방법
- Fine scale feedback
- Pair Programming: 하나의 작업을 2명의 프로그래머가 코딩·리뷰 공동 수행
- Planning Game: 게임처럼 선수와 규칙, 목표를 두고 기획 수행
- Test Driven Development: 선 단위 테스트후 실제 코드 작성
- Whole Team: 개발 효율을 위해 고객을 프로젝트 팀원으로 상주
- Continuous process
- Continuous Integration: 상시 빌드 및 배포가 가능한 상태로 유지
- Design Improvement: 코드 개선 작업 수행(가시성, 성능 등), 불필요한 기능 제거 및 리팩토링
- Small Releases: 짧고 잦은 릴리즈로 고객이 변경사항을 볼 수 있게 함 → 잦은 피드백
- Shared understanding
- Coding Standards: 표준화된 관례에 따라 코드 작성
- Collective Code Ownership: 시스템에 있는 소스코드는 팀의 모든 프로그래머가 언제라도 수정 가능
- Simple Design: 가능한 가장 간결한 디자인 상태 유지
- System Metaphor: 최종적으로 개발 되어야 할 시스템의 구조를 조망
- Programmer welfare
- Sustainable Pace: 오버타임 지양
'study' 카테고리의 다른 글
User Interface(UI) 설계지침 (0) | 2023.06.22 |
---|---|
정보공학 개발 방법론, Entity-Relationship Diagram(ERD) (0) | 2023.06.22 |
메시지 지향 미들웨어(message-oriented middleware. MOM) (0) | 2023.06.22 |
UML 다이어그램 (0) | 2023.06.22 |
해시 기초 (0) | 2023.04.25 |