CS

[CS] 소프트웨어 설계 - 애자일 방법론

y_lime 2025. 1. 19. 19:01

 

애자일 방법론이란?

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

출처 : 코드스테이츠

 

◼︎ 애자일 방법론 등장 배경

  • 소프트웨어 개발 환경의 변화
  • 기존 개발방법론의 한계

◼︎ 애자일 방법론 특징

  • 프로젝트 요구사항은 기능 중심으로 정의한다.
  • 절차와 도구보다 개인과 소통을 중요하게 생각한다.
  • 작업 계획을 짧게 세워 요구 변화에 유연/신속하게 대응할 수 있다.
  • 소프트웨어가 잘 실행되는 데 가치를 둔다.
  • 고객과 피드백 중요하게 생각한다.

◼︎ 애자일 선언문 **

애자일 방법론을 실천하기 위한 주요 원칙

  • 공정과 도구보다 개인과 상호 작용
  • 계획을 따르기보단 변화에 대응하기
  • 포괄적인 문서보다는 동작하는 소프트웨어
  • 계약 협상보다 고객과의 협력

◼︎ 애자일 방법론 유형

XP, 린(Lean), 스크럼(SCRUM)


① XP(eXtreme Programming)

  • 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질 높이기 위한 방법론
  • 실용성을 강조
  • 1~3주의 반복 개발 주기를 가지며 5가지 가치12개의 실천 항목이 존재

XP의 5가지 가치

용단의 피존

  1. 용기
  2. 단순성
  3. 의사소통
  4. 피드백
  5. 존중

XP의 12가지 기본원리

  1. 짝 프로그래밍 (Pair Programming)
  2. 공동 코드 소유 (Collective Ownership)
  3. 지속적인 통합 (Continuous Integration)
  4. 계획 세우기 (Planning Process)
  5. 작은 릴리즈 (Small Release)
  6. 메타포어 (Metaphor) : 공통적인 이름 체계와 시스템 서술서를 통해 고객과 개발자 간의 의사소통을 원활하게 한다는 원리
    • 시스템의 구조와 기능을 이해하고 소통하는데 도움을 주기 위해 사용하는 단순한 비유/은유
    • 복잡한걸 더욱 쉽게 이해할 수 있도록 도움
  7. 간단한 디자인 (Simple Design)
  8. 테스트 기반 개발 (TDD; Test Driven Development)
  9. 리팩토링 (Refactoring)
  10. 40시간 작업 (40-Hour Work): 일주일에 40시간 이상 일하지 말아야한다는 원리
  11. 고객 상주 (On Site Customer): 개발자들의 질문에 즉각 대답해 줄 수 있는 고객을 프로젝트에 풀 타임으로 상주시켜야한다는 원리
  12. 코드 표준 (Coding Standard)

② 스크럼 (SCRUM)

매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 중심 방법론

 

◼︎ 스크럼 주요 용어

  • 제품 책임자
  • 제품 백로그
    • 제품과 프로젝트에 대한 모든 요구사항
    • 스크럼 팀이 해결해야 하는 목록으로 소프트웨어 요구사항, 아키텍처 정의 등이 포함될 수 있음
  • 스프린트 : 실제 개발 작업 기간
  • 스크럼 미팅 aka 데일리 미팅
  • 스크럼 마스터
    • 프로젝트 리더, 스크럼 수행 시 문제를 인지/해결
  • 스프린트 회고
  • 번 다운 차트
    • 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트
    • 백로그는 보통 수직축에 위치하며 시간은 수평축에 위치
  • 속도
    • 한 번의 스프린트에서 한 팀이 어느 정도의 제품 백로그를 감당할 수 있는지에 대한 추정치

③ 린 (Lean)

린은 낭비 요소를 제거하여 품질을 향상시킨 방법론이다.

린은 JIT(Just In Time), 칸반 보드를 사용한다.

 

여기서 칸반 보드란 ?

  • 작업을 시각화하고, 작업에 참여한 팀이 업무와 각 팀원이 할 수 있는 작업량을 한눈에 파악할 수 있는 애자일 프로젝트 관리 도구
  • 컨반 보드에서 업무는 열로 구성된 프로젝트 보드에 표시되며, 각 열은 업무 단계를 나타냄

➃ 크리스탈 (Crystal)

  • 집중 on 사람 than 프로세스나 도구
  • 생명이 중요하지 않은 시스템에서 작업하는 최대 6명 or 8명의 공동 배치 소프트웨어 개발자 팀에 적용

➄ ASD (Adaptive Software Development)

  • 개발을 혼란 자체로 규정하고, 혼란을 대전제로 그에 적응할 수 있는 소프트웨어 방법을 제시하기 위해 만들어진 방법론
  • 합동 애플리케이션 개발을 사용

➅ FDD (Feature Driven Developmentstal; 기능 중심 개발)

  • 프로젝트를 작은 기능 단위로 나누어 개발하고, 이를 통해 빠른 피드백과 지속적인 개선을 추구하는 방법론