Agile Software Development
Rapid software development
요즘 빠른 개발과 배포는 소프트웨어 시스템을 위해 가장 중요한 요구사항중 하나이다.
=> because 변화가 빠르고, 요구사항의 변화가 빈번해 안정적인 요구사항을 찾기 불가능
빠른 개발을 위해서는 다음과 같은 요구사항이 주어진다.
- 명세와 설계가 중첨됨
- system이 여러 버전의 시리즈로 만들어짐 (이렇게 하는 것이 더 빨리 작업됨)
- 각 version마다 고객이 관여함으로 고객의 요구사항에 빠르게 대처
- User interfaces는 tool을 사용해 빠르게 하는 경우가 많음
하지만 기존의 waterfall 같은 방법으로는 overhead가 너무 많아 새로운 방법이 필요해짐
agile methods
* waterfall같은 기존의 방법에 대한 대안으로 agile method가 등장.
* agile method의 특성
- 오랜 설계는 낭비이므로 코드에 집중해 개발을 진행
- 소프트웨어 개발을 양방향에 기반을 두고 작업함
- 변화하는 요구사항을 충족하기 위해 빠르게 진화하고 더 많이 배포한다.
* agile method의 목적
- 소프트웨어 프로세서상의 오버헤드를 줄인다.
- 지나친 재작업 없이 변화하는 요구사항에 빠르게 반응할 수 있다.
* agile method의 법칙
- 고객의 협조 : 고객은 요구사항 및 이들간의 우선순위를 제공하고 반복된 평가를 수행
- 단위 개발 : 고객이 각 increment에 포함되어야 할 요구사항을 명세
- 단계에 얶매이지 않는다. : 별도의 process를 강제하지 않고 자신의 방법대로 개발
- 변화를 바로 느껴라 : 요구사항에 변동이 있을 것을 예측, 시스템이 변동에 빨리
적응 할 수 있도록 설계
- 간단하게 유지하라 : 절차나 문서등을 간단하게 유지
* agile method의 특징
- 소형 또는 중형크기의 제품, 특정 사용자를 위한 시스템에 적합 (ex. 대학교 전산)
- 고객이 직접 개발과정에 참여가 가능
- 작고, 뭉쳐져있는 팀에 의해 진행되기 쉬움
* plan-driven and agile development
: 주된 차이점은 요구사항 명세가 없다는 것이다. 이를 통해 명세, 설계, 구현 및 테스트가
중첩되어 같이 일어나고 그 결과 속도가 plan-driven에 비해 더 빨라진다.
agile development의 예시
Extreme programming
: 최고로 잘 알려지고 널리 사용되고 있는 agile method.
- 새로운 버전이 하루에 몇 개씩 나온다. => 빡세게 programming 하기
- 2주마다 새로운 increment를 배포
- 수 많은 코딩과 테스트의 반복을 통해 단점을 보안함
==> 짧은 기간에 많은 코딩과 테스트를 반복하고 짧은 기간안에 출시되기 때문에
고객과 잦은 소통이 가능하다. 이러한 원인들 때문에 계획이나 제제없이
좋은 프로그램이 나올수 있다.
==> 다른 모델들과 달리 requirement specification을 하지 않고 user stories를 고려한다. ==> 이는 명확한 명세가 필요없어 시간을 더욱 단축한다.
댓글 없음:
댓글 쓰기