CS/Software Engineering

[소프트웨어공학/Software Engineering] 애자일 소프트웨어 개발

binaryroot 2026. 4. 7. 12:42
728x90

이번 글에서는 애자일 소프트웨어 개발에 대해서 정리하고자 한다.

 

우선 다루는 주제는 아래와 같다.

  • Agile development (애자일 개발)
  • Extreme Programming (XP)
  • Aglie vs. Plan-driven
  • 올바른 소프트웨어 프로세스 모델 선택

애자일 개발

  • 배경
    • 소프트웨어 프로세스의 과도한 오버헤드에 대한 불만이 있었다.
  • 목표
    • 과도한 재작업 없이 변화하는 요구사항에 빠르게 대응하여 시스템 전달 시간을 줄이는 것을 목표로 둔다.

아래는 Plan-driven과 Agile development 방식에 대한 도식화 그림이다.

plan-driven & agile

Agile 개발

  • 특징
    • 점진적 개발
      • 여러 버전/증분으로 개발
      • 소규모.빈번한 릴리즈
      • 반복적 접근
    • 고객 참여
      • 팀과의 지속적 협업
      • 문서화로 프로세스 오버헤드 감소
  • 적용성
    • 소규모, 한 장소에 모인 팀
    • 맞춤형 개발에 적합
728x90

Extreme programming (XP)

  • 매우 영향력 있는 애자일 방법이다.
  • 반복 개발을 극단적으로 적용한다.
    • 하루에도 여러 번 새 버전을 빌드한다.
    • 2주마다 고객에게 증분(increments)을 제공한다.
    • 릴리즈 주기가 짧다.
  • Release cycle (릴리즈 주기)

release cycle

 

XP의 핵심 실천

  • 사용자 스토리
  • 리팩토링
  • 테스트 우선 개발
  • pair 프로그래밍

아래에서 XP의 핵심 실천에 대해 자세하게 알아보자.

먼저 사용자 스토리이다.

  • 고객/사용자가 XP팀의 일원으로 요구사항을 결정한다.
  • 요구사항을 사용자 스토리/시나리오로 표현한다.
  • 카드를 이용해 작성하고, 개발팀이 구현 작업으로 분해한다.
  • 고객이 우선순위와 일정에 따라 다음 릴리즈에 포함될 스토리를 선택한다.

리팩토링

  • 기존 코드 구조를 개선하되 외부 동작은 변경하지 않는다.
  • 지속적인 코드 개선, 문서화 필요성이 감소된다.
  • 예) 중복 코드 제거, 속성/메소드 정리 및 명확화

테스트 우선 개발

  • 코딩 전 테스트를 작성한다.
    • 요구사항을 명확화한다.
  • 새 릴리즈마다 모든 컴포넌트 테스트를 실행한다.
    • 테스트는 자동화된 프로그램 형태이다.
  • 사용자도 테스트 개발과 검증에 참여한다.
    • 수용 테스트 개발에 도움이 된다.

Pair 프로그래밍

  • 두 명이 함께 코드를 개발한다.
    • 한 컴퓨터에서 협업한다.
  • 비공식 코드 리뷰 역할(컴토 프로세스 역할)이다.
    • 여러 사람이 각 코드 라인을 살펴본다.
    • 이는 팀 전체에 지식을 전파하는 데 도움이 된다.
  • 팀원 이탈 시 전반적인 위험을 줄일 수 있다.

 

애자일 개발의 실질적 문제

  • 문서화가 부족하다.
    • 요구사항 불안정
  • 팀 유지가 어렵다.
    • 장기 프로젝트에서 원 개발팀 유지가 불가하다.

애자일의 잘못된 적용 시

  • 개발자 간섭, 압박, 결함 증가, 속도 저하 등의 문제가 발생할 수 있다.

애자일 개발은 어디에 적합할까?

  • 소규모, 한 장소에 모인 팀에 적합하다.
  • 고객 참여가 가능한 경우에 적합하다.

 

Agile과 plan driven 방식을 비교해보자.

구분 Agile Plan-driven
개발 방식 반복적, 점진적, 유연함 선형, 체계적, 사전 계획 중시
요구사항 관리 변화에 유연하게 대응, 지속적 변경 가능 초기 단계에서 상세 명세 필요, 변경이 어려움
고객 참여 개발 과정 내내 적극적 참여 주로 초기 단계에만 참여
문서화 최소화, 구두/비공식적 커뮤니케이션 중시 상세하고 공식적인 문서화
팀 구성 소규모, 한 장소에 모인 팀에 적합 대규모, 분산된 팀에도 적용 가능
릴리즈/배포 짧은 주기, 빈번한 릴리즈 한 번에 전체 시스템 배포
적용 적합성 요구사항이 자주 변화거나 빠른 피드백이 필요한 경우 요구사항이 명확하고 변경이 적은 경우

 

애자일 소프트웨어 개발에 대해 알아봤다.

다음 글에서는 객체 지향에 대해서 정리해보겠다.

728x90