Agile 방법론
개발 과정에서의 시스템 변경사항을 유연하고 기민하게 대응할 수 있도록 하는 개발 방법론을 뜻하는 총칭이다.
Able to move quickly with skill and control
Able to think quickly and intelligently
Agile 주요 방법론
-
XP(eXtreme Programming) : 개발방법론 혹은 개발 기법 중심
-
SCRUM : 프로젝트 관리 방법론 중심
-
RUP : 반복, 점진적인 개발방법론을 대표
-
LSD(Lean Software Development) : 식스시그마 품질 선도
-
DSDM(Dynamic System Development Method) : 점진적 개발, 일정 확정, 범위예측
-
FDD(Feature-Driven Development) : 기능주도 개발
XP (eXtreme Programming)
1) XP 개요
-
1990년대 후반 만들어진 개발 기법 중심의 Agile 방법론 중 하나이다.
-
반복형 모델의 개발주기를 극단적으로 짧게 함으로써 개발자가 설계, 구현, 테스트 활동을 전체 소프트웨어 개발 기간에 걸쳐 조금씩 자주 실시하도록 하고 소프트웨어 변경의 비용을 최소화하는 기법이다.
2) XP 목적
-
기본 가치, 원칙, Pracices을 통하여 변경 비용 및 일정 감소
3) XP 주요 활동
- Coding : 시스템 개발활동의 진짜 중요한 산출물은 코드이다.
- Testing : 단위테스트는 코딩의 불확실성을 검증하고 승인테스트는 의도에 대한 불확실성을 검증한다.
- Listening : 비즈니스에 의하여 기능 결정, 기능 결정에 의하여 비즈니스를 파악해야 한다.
- Designing : 시스템의 복잡성, 종속성 회피를 위한 방법이다.
4) XP 프로세스
프로세스 | 내용 |
유저스토리 |
|
스파이크솔루션 |
|
메타포어 |
|
릴리즈계획 |
|
주기 |
|
승인테스트 |
|
5) XP 핵심가치
-
의사소통 : 단순한 디자인, 공통의 메타포어, 사용자/개발자간 협업, 빈번한 구두 의사소통, 피드백
-
단순성 : 단순한 솔루션, 단순한 설계, 단순한 코드(의사소통의 질 향상)
-
피드백 : 시스템, 고객, 팀으로부터의 피드백
-
용기(Courage) : Practice 수행을 위하여 용기 필요. 간단한 디자인, 간단한 코딩
6) XP 원칙
-
피드백, 단순한 가정, 변화 수용
7) XP Practices
-
정교한 피드백 : 페어 프로그래밍, 게임 계획, TDD, 전체 팀
-
지속적 프로세스 : 지속적 통합, 리팩토링 또는 디자인 개선, 작은 배포주기
-
이해의 공유 : 코딩 표준, 코드 공동 소유, 간단한 설계, 시스템 메타포어
8) XP 활용 분야
-
모바일이나 쇼핑몰처럼 소비자의 변화에 따라 짧은 시간에 민첩하게 변화되어야 하는 분야
-
요구사항 등의 변화가 자주, 많이 발생하거나 개발자가 소규모이고 같은 공간을 사용하는 경우에 높은 효과
-
유동성이 큰 프로젝트, 단 기간의 프로젝트
-
기술적으로 신기술을 도입하였거나 경험이 없거나 한 경우
SCRUM
1) SCRUM 개요
-
비즈니스 요구를 충족시키는 소프트웨어를 개발하는데 초점을 맞추기 위해 복잡함을 제거하는 관리 및 제어 프로세스이다.
-
사람들이 효과적으로 협업할 수 있게 해주며 그로 인해 복잡하고 정교한 제품을 생산할 수 있게 해준다.
-
프로젝트 관리 방법론 중심의 Agile 방법론이며 XP의 실천 방법으로 사용한다.
-
작은 개발팀, 짧은 개발주기(4~6주) 반복 등의 특징이 있다.
2) SCRUM Process
제품 백로그(Product Backlog) |
|
스프린트(Sprint) |
|
스프린트 백로그(Sprint Backlog) |
|
스크럼 마스터(SCRUM Master) |
|
일일스크럼(Daily SCRUM) |
|
TDD (Test Driven Development)
1) TDD 개념
-
미리 작성되는 테스트를 기반으로 짧은 반복주기를 이용하여 소프트웨어를 개발하는 기법이다.
-
테스트 작성을 통해 요구사항을 정의한다.
-
TDD는 단순한 테스트 기법이 아닌 소프트웨어 설계의 한 기법이다.
2) TDD 요구사항
-
테스트 작성 -> 코드 작성 -> 테스트 실행 -> Refactoring
-
반복주기 1~n 수행
-
테스트작성 : 요구사항을 명확히 이해, 유스케이스, 유저스토리 등 이용
-
테스트검증 : 테스트케이스의 올바른 작동 여부 확인
-
코드 작성 : 완벽하지는 않지만 테스트는 성공할 수준
-
자동화된 테스트 실행 : 모든 테스트 요구사항 충족 확인
-
Refactoring : 불필요한 코드, 중보코드 제거
-
반복 : TDD 사이클이 길어지면 규모 조정 필요
-
3) TDD 효과
-
품질 및 생산성 향상
-
더 빠르고 좋은 소프트웨어 빌드
-
작성 코드에 대한 테스트 커버리지 보장
-
모듈화, 유연한/확장 가능한 코드 생성
4) TDD 제약
-
성공 확인을 위하여 모든 기능을 테스트 하여야 하는 경우 적용 어렵다.
-
관리자의 지지가 필수적으로 필요하다.
-
전통적으로 테스트에 대하여 개발자가 아키텍트에 비하여 상대적으로 낮은 인식을 가지고 있다.
-
테스트 자체가 프로젝트 유지보수 오버해드가 된다.
이 글은 스프링노트에서 작성되었습니다.
'05번. 3년 후, 기술사 > ▶ 소프트웨어공학' 카테고리의 다른 글
TDD (0) | 2011.11.23 |
---|---|
OR MAPPING (0) | 2011.11.23 |