애자일 방법론이란?
소프트웨어 개바방법론의 하나로서 개발과 함께 즉시 피드백을 받아서 유동적으로 개발하는 방법이다.

◼︎ 애자일 방법론 등장 배경
- 소프트웨어 개발 환경의 변화
- 기존 개발방법론의 한계
◼︎ 애자일 방법론 특징
- 프로젝트 요구사항은 기능 중심으로 정의한다.
- 절차와 도구보다 개인과 소통을 중요하게 생각한다.
- 작업 계획을 짧게 세워 요구 변화에 유연/신속하게 대응할 수 있다.
- 소프트웨어가 잘 실행되는 데 가치를 둔다.
- 고객과 피드백 중요하게 생각한다.
◼︎ 애자일 선언문 **
애자일 방법론을 실천하기 위한 주요 원칙
- 공정과 도구보다 개인과 상호 작용
- 계획을 따르기보단 변화에 대응하기
- 포괄적인 문서보다는 동작하는 소프트웨어
- 계약 협상보다 고객과의 협력
◼︎ 애자일 방법론 유형
XP, 린(Lean), 스크럼(SCRUM)
① XP(eXtreme Programming)
- 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질 높이기 위한 방법론
- 실용성을 강조
- 1~3주의 반복 개발 주기를 가지며 5가지 가치와 12개의 실천 항목이 존재
XP의 5가지 가치
용단의 피존
- 용기
- 단순성
- 의사소통
- 피드백
- 존중
XP의 12가지 기본원리
- 짝 프로그래밍 (Pair Programming)
- 공동 코드 소유 (Collective Ownership)
- 지속적인 통합 (Continuous Integration)
- 계획 세우기 (Planning Process)
- 작은 릴리즈 (Small Release)
- 메타포어 (Metaphor) : 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자 간의 의사소통을 원활하게 한다는 원리
- 시스템의 구조와 기능을 이해하고 소통하는데 도움을 주기 위해 사용하는 단순한 비유/은유
- 복잡한걸 더욱 쉽게 이해할 수 있도록 도움
- 간단한 디자인 (Simple Design)
- 테스트 기반 개발 (TDD; Test Driven Development)
- 리팩토링 (Refactoring)
- 40시간 작업 (40-Hour Work): 일주일에 40시간 이상 일하지 말아야한다는 원리
- 고객 상주 (On Site Customer): 개발자들의 질문에 즉각 대답해 줄 수 있는 고객을 프로젝트에 풀 타임으로 상주시켜야한다는 원리
- 코드 표준 (Coding Standard)
② 스크럼 (SCRUM)
매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 중심 방법론
◼︎ 스크럼 주요 용어
- 제품 책임자
- 제품 백로그
- 제품과 프로젝트에 대한 모든 요구사항
- 스크럼 팀이 해결해야 하는 목록으로 소프트웨어 요구사항, 아키텍처 정의 등이 포함될 수 있음
- 스프린트 : 실제 개발 작업 기간
- 스크럼 미팅 aka 데일리 미팅
- 스크럼 마스터
- 프로젝트 리더, 스크럼 수행 시 문제를 인지/해결
- 스프린트 회고
- 번 다운 차트
- 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트
- 백로그는 보통 수직축에 위치하며 시간은 수평축에 위치
- 속도
- 한 번의 스프린트에서 한 팀이 어느 정도의 제품 백로그를 감당할 수 있는지에 대한 추정치
③ 린 (Lean)
린은 낭비 요소를 제거하여 품질을 향상시킨 방법론이다.
린은 JIT(Just In Time), 칸반 보드를 사용한다.
여기서 칸반 보드란 ?
- 작업을 시각화하고, 작업에 참여한 팀이 업무와 각 팀원이 할 수 있는 작업량을 한눈에 파악할 수 있는 애자일 프로젝트 관리 도구
- 컨반 보드에서 업무는 열로 구성된 프로젝트 보드에 표시되며, 각 열은 업무 단계를 나타냄
➃ 크리스탈 (Crystal)
- 집중 on 사람 than 프로세스나 도구
- 생명이 중요하지 않은 시스템에서 작업하는 최대 6명 or 8명의 공동 배치 소프트웨어 개발자 팀에 적용
➄ ASD (Adaptive Software Development)
- 개발을 혼란 자체로 규정하고, 혼란을 대전제로 그에 적응할 수 있는 소프트웨어 방법을 제시하기 위해 만들어진 방법론
- 합동 애플리케이션 개발을 사용
➅ FDD (Feature Driven Developmentstal; 기능 중심 개발)
- 프로젝트를 작은 기능 단위로 나누어 개발하고, 이를 통해 빠른 피드백과 지속적인 개선을 추구하는 방법론
'CS' 카테고리의 다른 글
[CS] 소프트웨어 설계 -소프트웨어 아키텍처 패턴 (0) | 2025.01.21 |
---|---|
[CS] 소프트웨어 설계 - 분석 모델 확인(모델링/분석 자동화) (0) | 2025.01.20 |
[CS] 소프트웨어 설계 - UML 다이어그램(시퀀스/상태) (0) | 2025.01.19 |
[CS] 소프트웨어 설계 - UML 다이어그램(클래스/유스케이스) (0) | 2025.01.19 |
[CS] 소프트웨어 설계 - UML 기본 개념 (0) | 2025.01.18 |