Introduction
애자일 개발 프로세스란 어느 특정 개발 방법론을 가리키는 말은 아니고 "애자일(Agile=기민한, 좋은것을 빠르고 낭비없게 만드는 것) 개발을 가능하게 해 주는 다양한 방법론 전체를 일컫는 말이다. 예전에는 애자일 개발 프로세스는 "경량(Lightweight)" 프로세스로 불렸다. 익스트림 프로그래밍 (XP:eXtreme Programming)이 애자일 개발 프로세스의 대표적인 방법이라 볼 수 있다.

  • Long term 계획보다 최소한의 계획을 가진 작은 increment 단위를 선택
  • 타임박스로 불리는 작은 단위의 프레임을 반복함. 프레임의 시간 단위는 2~4주 정도 임.
  • 각각의 iteration은 planning, analysis, design, coding, testing등의 완전한 소프트웨어 개발 사이클을 가짐
  • Iteration 단위 하나는 프로덕트를 양산하는데 못 미치는 기능을 가진 산출물을 생성하지만 각각의 마지막 단계의 목표는 최소한의 버그와 함께 릴리즈 될 수 있다.
  • Agile 메서드는 서면 작성된 문서를 넘어 face to face 커뮤니케이션을 강조한다.

   

Agile process

  • 커스터머가 무엇을 필요로 하는지에 대한 description, 즉 시나리오 driven 개발 방식이다
  • 짧은 기간 에서의 요구사항을 인지함.
  • 소프트웨어 개발은 반복적인 컨스트럭션 액티비티를 매우 강조함.
  • 다수의 소프트웨어 increment를 델리버함.
  • 변화가 있을 때 적응 하기 쉬움.

   

Extreme Programming

  • 가장 널리 agile 프로세스로 사용됨, 켄트 벡에 의해서 제시 되었음.
  • XP Planning
    • 유저 시나리오를 만드는 것 부터 시작함
    • Agile 팀은 각각의 스토리를 평가하고 cost를 부가함.
    • 각각의 스토리는 델리버리가 가능한 increment 단위로 그릅화 됨
    • 델리버리 날짜를 commitment함
    • 처음 increment 후 project velocity는 순차적인 다른 increment 델리버리 일정을 정의하는데 도움을 줌.
  • XP Design
    • KIS principle을 따름
    • CRC 카드 사용을 장려함
    • 어려운 문제를 위해서 Spike solution을 만들 것을 장려함, 일종의 프로토타입
    • 리팩토링을 장려함, 내부적인 프로그램 설계에 있어서 반복적인 정제 작업
  • XP Coding
    • 코딩을 시작하기 전에 유닛 테스트를 생성 하는 것을 추천함
    • 페어 프로그래밍을 추천
  • XP Testing
    • 모든 유닛 테스트는 매일 실행
    • 테스트는 커스터머에 의해 정의 되며 커서터머의 functionality를 평가하기 위해 사용됨.

   

ASD, Adaptive Software Development

  • 구분되는 feature
    • 미션 driven planning
    • 컴포넌트 기반에 포커스
    • Time boxing을 사용함
    • 리스크를 명시적으로 고려함.
    • 요구사항 수집을 위한 협동을 강조함
    • 프로세스 도처에 learning을 강조함.

   

Scrum

  • 30일 정도의 단위로 동작 가능한 제품을 제공하는 스프린트를 중심으로한 개발 프로세스
  • 매일 정해진 시간에 정해진 자오셍서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심의 방법론
  • 구별되는 특징
    • Packet단위로 개발 일이 파티션 됨
    • 제품이 생산되는 시점 부터 테스팅과 문서의 작성읜 계속 진행됨
    • 스프린트 내에서 현재 요구사항의 백로그로부터 일이 전개 됨
    • 미팅은 매우 짧고 가끔 의장도 없음.
    • 할당된 타임 박스 마다 커스터머에게 데모를 델리버리 함.

   

FDD, Feature Driven Development

  • feature마다 2주 간격으로 반복 개발을 실시한다. UML을 이용한 설계 기법과도 밀접한 관련이 있다.
  • 구별되는 특징
    • 2주나 그 이하에 구현이 가능한 커스터머의 요구 기능을 feature라고 부름.
    • Feature를 정의 하는 것을 강조함.
      • <action> the <result> <by | for | of | to> a(n) <object>
    • Feature 리스트가 장성되고 feature에 의한 plan이 실행 된다.
    • 디자인과 컨스트럭션이 융합된 형태.

'Fundamental Notes > Software Engineering' 카테고리의 다른 글

Design Quality  (0) 2009/05/01
Design Pattern  (0) 2009/05/01
Agile Software Development  (0) 2008/11/02
Prescriptive Process Models #2  (0) 2008/11/02
Prescriptive Process Models  (0) 2008/11/02
Generic view of Practice  (0) 2008/11/02