정처기; 정보처리기사 필기 이론
애자일(Agile)은 '민첩한', '기민한'이라는 의미로,
급변하는 고객의 요구사항에 유연하게 대응할 수 있도록
일정한 주기를 반복하며 개발 과정을 진행하는 방법론을 통칭합니다.
주요 특징:
방법론의 집합:
애자일 모형은 어느 특정 개발 방법론 하나를 가리키는 것이 아닙니다.
빠르고 낭비 없이 좋은 소프트웨어를 만들기 위해
고객과의 소통에 초점을 맞춘 여러 방법론들을 통칭합니다.
반복적인 개발 주기:
스프린트(Sprint) 또는 이터레이션(Iteration)이라고 불리는
짧은 개발 주기를 반복하며 개발을 진행합니다.
고객과의 적극적인 소통:
반복되는 주기마다 만들어지는 결과물에 대해
고객의 평가와 요구를 적극적으로 수용하여 다음 주기에 반영합니다.
이를 통해 고객의 만족도를 높일 수 있습니다.
우선순위 기반 개발:
각 개발 주기에서는 고객이 요구한 사항에 우선순위를 부여하여
중요한 기능을 먼저 개발하는 방식으로 진행합니다.
적용 범위:
기업 활동 전반에 걸쳐 사용될 수 있을 정도로 유연성이 높습니다.
적합한 프로젝트:
소규모 프로젝트, 고도로 숙련된 개발자로 구성된 팀,
그리고 급변하는 요구사항이 많은 프로젝트에 특히 적합합니다.
애자일 모형을 기반으로 하는 소프트웨어 개발 방법론:
애자일이라는 큰 개념 아래에는 여러 구체적인 방법론들이 존재합니다.
스크럼(Scrum):
매일 짧은 회의(데일리 스크럼)를 통해 진행 상황을 점검하고,
2~4주 정도의 짧은 개발 주기(스프린트)를 반복하며 개발하는
가장 대표적인 애자일 방법론입니다.
XP(eXtreme Programming):
'짝 프로그래밍(Pair Programming)', '짧은 개발 주기', '지속적인 통합' 등을 강조하여
개발 생산성을 극대화하는 방법론입니다.
칸반(Kanban):
일본 도요타의 생산 방식에서 유래한 방법론으로,
시각적인 보드(칸반 보드)를 활용하여 작업의 흐름을 관리하고,
병목 현상을 해결하는 데 초점을 둡니다.
(※병목 현상: 시스템의 특정 부분이 다른 부분보다 성능이 떨어져 전체 시스템의 성능을 제한하는 현상)
Lean:
'낭비 제거'에 초점을 맞춰 꼭 필요한 기능만 개발하고,
지속적인 개선을 추구하는 방법론입니다.
크리스탈(Crystal):
팀의 규모, 프로젝트의 중요성 등에 따라
다양한 애자일 방법론을 선택하여 적용하는 유연한 접근 방식입니다.
ASD(Adaptive Software Development):
혼란스럽고 복잡한 프로젝트 환경에 적응하며 개발하는 방법론입니다.
기능 중심 개발(FDD: Feature Driven Development):
'기능(Feature)'을 중심으로 개발을 진행하는 방법론입니다.
DSDM(Dynamic System Development Method):
비즈니스 요구사항에 맞춰 기능의 우선순위를 정하고 개발을 진행하는 방법론입니다.
DAD(Disciplined Agile Delivery):
스크럼, XP 등 다양한 애자일 기법을 조합하여
팀에 맞는 최적의 방법을 찾는 하이브리드 방법론입니다.
애자일 개발은 전통적인 개발 방식과 비교하여 뚜렷한 장점과 단점을 가지고 있습니다.
고객 만족도 향상:
고객의 요구사항 변화에 유연하게 대응하고,
주기적인 피드백을 통해 고객의 만족도를 높일 수 있습니다.
높은 품질의 소프트웨어:
짧은 주기로 테스트를 반복하고
결함을 빠르게 발견하여 수정할 수 있어 소프트웨어의 품질이 향상됩니다.
개발 생산성 향상:
불필요한 작업(예: 방대한 문서 작성)을 줄이고
핵심 기능 개발에 집중함으로써 개발 생산성을 높일 수 있습니다.
위험 감소:
짧은 주기로 개발을 진행하기 때문에 프로젝트 실패로 인한 위험 부담이 줄어듭니다.
문제가 발생하더라도 초기에 빠르게 대처할 수 있습니다.
팀원 간의 소통 증진:
정기적인 회의와 상호작용을 통해 팀원 간의 소통이 활발해지고, 협업 능력이 향상됩니다.
높은 전문성 요구:
모든 팀원이 숙련된 전문가여야 성공하기 쉽습니다.
비숙련자는 빠르게 변화하는 환경에 적응하기 어려울 수 있습니다.
체계적인 문서화 부족:
문서보다는 작동하는 소프트웨어를 중시하므로,
프로젝트 완료 후 유지보수에 필요한 문서가 부족할 수 있습니다.
프로젝트 관리의 어려움:
명확한 초기 계획이 없기 때문에
프로젝트의 전체적인 진행 상황을 파악하고 관리하는 데 어려움이 있을 수 있습니다.
범위 설정의 모호성:
요구사항이 계속 변경되면서 프로젝트의 범위가 계속 확장될 수 있습니다(Scope Creep).
소규모 팀에 적합:
대규모 프로젝트의 경우,
애자일의 특성인 팀원 간의 긴밀한 소통과 유기적인 협업이 어려워질 수 있습니다.
애자일 모형은 현대 소프트웨어 개발에서 가장 널리 사용되는 방식 중 하나로,
변화에 대한 유연성과 고객 만족을 중요하게 생각하는 것이 핵심입니다.