Post

소프트웨어 개발방법론, 애자일(Agile)

소프트웨어 개발방법론, 애자일(Agile)

🎯 애자일 방법론

Step 1. 배경 이해하기

먼저, 왜 애자일이 나왔을까?

전통적인 소프트웨어 개발 방식인 폭포수(Waterfall) 모델 방식은 아래와 같다.

요구사항 분석 → 설계 → 구현 → 테스트 → 운영

폭포수 모델은 순서대로 딱딱 떨어지는 방식인데, 여기서 어떤 문제가 있을까?

Step 2. 폭포수 모델의 한계, 현실에서의 문제점

1. 변화 대응 부족

  • 요구사항이 한번 정해지면 바꾸기 어렵다.
  • 고객/사용자의 니즈는 프로젝트 도중에도 변할 수 있는데, 반영이 거의 불가능하다.

2. 후반부 리스크 집중

  • 테스트가 마지막 단계에 몰려있어, 큰 결함이 발견되면 수정 비용이 올라갈 수 있다.
  • 일정 지연과 비용 폭증의 원인이 될 수 있음.

3. 고객 피드백 부족

  • 중간 산출물이 없어서, 고객은 결과를 맨 마지막에야 확인한다.
  • “내가 원한 게 아닌데…” 하는 상황이 자주 발생함.

4. 긴 개발 주기

  • 요구분석부터 운영까지 완료해야 첫 결과물이 나온다.
  • 개발 주기가 길어지면서 시장 변화가 빠른 환경에서는 경쟁력을 상실할 수 있음.

5. 문서 중심

  • 실제 돌아가는 소프트웨어보다 “문서 작성”이 더 중요하게 취급되는 경향이 있음.
  • 현업에서는 비효율적일 수 있음.

이러한 문제를 극복하기 위해 애자일(Agile)이 등장하였다.

Step 3. 애자일의 정의와 가치

1. 애자일(Agile)의 정의

애자일은 2001년 미국 유타에서 17명의 소프트웨어 전문가들이 모여 발표한 애자일 선언문(Agile Manifesto) 에서 출발했다.

  • 기존 폭포수 개발 형식의 한계를 극복하기 위한 등장
  • 변화에 대한 유연한 대응, 고객과의 협력, 짧은 주기의 반복 개발을 핵심으로 함.
  • “작동하는 소프트웨어”를 빠르게 제공하고, 피드백을 통해 점진적으로 개선하는 개발 철학

2. 애자일 가치 (Agile Manifesto의 4대 핵심 가치)

애자일 선언문에서는 우리는 다음을 더 가치 있게 여긴다라고 말한다.

  • 프로세스와 도구보다 개인과 상호작용
    • 정해진 절차보다 팀원 간 협업, 커뮤니케이션이 더 중요하다.
  • 방대한 문서보다 작동하는 소프트웨어
    • 문서를 줄이고, 고객이 실제로 쓸 수 있는 기능을 빠르게 제공.
  • 계약 협상보다 고객과의 협력
    • 계약서 문구에 얽매이지 않고, 고객과 함께 해결책을 찾아나감.
  • 계획을 따르기보다 변화에 대응
    • 초기 계획보다, 변화하는 상황에 맞춰 방향을 유연하게 조정

여기서 포인트는, 애자일은 방법론(methodology)이 아니라, 사고방식(mindset)문화(culture)라는 점이 중요하다.

Step 4. 대표적인 애자일 방법론

1. Scrum (스크럼)

스크럼은 애자일의 대표주자. 럭비 경기에서의 스크럼처럼, 작은 팀이 하나의 목표를 위해 짧은 시간 집중해서 나아가는 방식을 차용했다고 한다.

  • 작동 방식
    • 프로젝트는 Sprint라는 2~4주 단위 반복 주기로 진행
    • 해야 할 기능들은 Product Backlog에 정리
    • 매일 15분짜리 Daily Scrum 회의로 진행 상황을 점검
  • 역할(Role)
    • Product Owner: 고객 요구사항 우선순위 관리
    • Scrum Master: 팀이 Scrum 규칙을 잘 따르도록 코치
    • Development Team: 실제 개발을 수행하는 자율적 팀
  • 장점
    • 짧은 주기마다 결과물이 나오니 고객은 바로 피드백 가능, 팀은 빠르게 개선 가능

2. XP (eXtreme Programming)

XP는 이름처럼 개발 기법을 극한으로 밀어붙이는 방식. 좋은 습관을 조금만 하는 게 아니라, 아예 극단적으로 철저히 해보자!라는 발상에서 출발했다고 한다.

  • 작동 방식
    • 짝 프로그래밍(Pair Programming): 두 명이 짝을 지어 함께 코딩
    • 테스트 주도 개발(TDD): 테스트 코드를 먼저 작성 후 구현
    • 지속적 통합(Continuous Integration): 코드 변경 시마다 자동 빌드/테스트
    • 리팩토링(Refactoring): 코드 품질을 지속적으로 개선
  • 역할(Role)
    • 개발자: 짝 프로그래밍, 테스트 코드 작성, 리팩토링 수행
    • 고객/사용자: 사용자 스토리 제공, 수시 피드백
    • 코치/리더: XP 원칙 준수 관리, 기술적 의사결정 지원
  • 장점
    • 코드 품질 및 유지보수성 향상
    • 결함 조기 발견 및 수정 비용 절감
    • 팀원 간 지식 공유 및 협업 강화

3. Kanban (칸반)

칸반은 원래 일본 도요타의 생산 관리 방식에서 시작됨. 애자일에서는 이를 소프트웨어 개발에 적용해, 업무 흐름을 시각화하는 데 활용했다.

  • 작동 방식
    • 작업을 보드(Board)로 시각화 (예: To Do → Doing → Done)
    • WIP(Work In Progress) 제한으로 동시에 진행할 작업 수 제어
    • 작업 흐름의 병목 현상을 관리
  • 역할(Role)
    • 팀원: 각자 작업 항목을 보드에 업데이트
    • 관리자/리더: 병목 관리, 우선순위 조정
    • 이해관계자: 보드를 통해 현재 진행 상황을 투명하게 확인
  • 장점
    • 업무 흐름이 가시적으로 드러남
    • 병목 관리 및 우선순위 조정 용이
    • 유연한 변경 대응 가능

Step 5. 핵심 비교정리

구분Scrum (스크럼)XP (eXtreme Programming)Kanban (칸반)
초점팀 운영 방식, 프로세스개발 기법, 품질 관리작업 흐름, 시각화
핵심 개념스프린트, 데일리 스크럼, 백로그짝 프로그래밍, TDD, 지속적 통합, 리팩토링보드(Board), 작업 시각화, WIP 제한
장점빠른 피드백, 고객 만족도 향상코드 품질 향상, 팀 협업 강화, 결함 조기 발견진행 상황 가시성 ↑, 유연한 변경 가능
적합한 상황소규모~중규모 프로젝트, 고객 협업 중요품질이 중요한 프로젝트, 기술적 복잡도 높음작업량이 많고 흐름 관리가 중요한 팀

📚 참고자료

  • Agile Manifesto: https://agilemanifesto.org/iso/ko/manifesto.html
  • Scrum Guide (Ken Schwaber & Jeff Sutherland, 2020)
  • Ken Schwaber & Jeff Sutherland, The Scrum Guide, 2020
  • Kent Beck, Extreme Programming Explained, 2004
  • David J. Anderson, Kanban: Successful Evolutionary Change for Your Technology Business, 2010
This post is licensed under CC BY 4.0 by the author.