[소프트웨어공학] 2.7 애자일 방법론

이두팔·2021년 4월 20일
0

소프트웨어공학

목록 보기
12/12

2.7 애자일 방법론

애자일(agile) 방법은 품질의 저하 없이 변화를 수용하고, 협업을 강조하며, 제품의 빠른 인도를 강조하는 반복적 방법이다. 진정한 개발 산출문은 코드임을 강조한다.

프로세스 중심이 아닌 사람 중심의 방법으로 개발을 즐기기 위해 요구사항이나 설계 문서를 최소화할 필요가 있다는 것이다. 소프트웨어 자체에 집중하고 기본적으로 명세, 개발 및 제품 인도에 반복적 방법을 적용한다.

1 익스트림 프로그래밍

약칭: XP

켄트 백의 저서에서 처음 등장한 용어로, 반복적 개발이나 고객의 개발 참여와 같은 기존의 좋은 실천 기술들을 extreme 수준으로 끌어올려라 또는 적극적으로 적용하라는 의미이다.

켄트 백은 TDD를 퍼뜨린 장본인이기도 한데, XP에서의 테스트 선행 프로그래밍과 관계있다.

실천 기술들

  • 작고 빈번한 릴리즈를 통해 점증적 개발을 지원한다
  • 고객은 개발 팀의 일원이 되며 요구사항 추가와 인수 테스트에 책임을 진다
  • 프로세스가 아닌 사람이 우선시되며 짝 프로그래밍을 통해 실현된다. 짝 프로그래밍을 통해 코드에 대한 공동 책임을 지고 과도한 작업 시간을 피할 수 있다.
  • 규칙적인 릴리즈와 단순한 설계를 통해 변화를 수용하며 테스트 선행 개발과 지속적인 통합을 실현한다.
  • 코드의 품질을 개선하기 위해 지속적인 리팩토링과 단순한 설계를 지향한다.

(1) 짝 프로그래밍

두 사람이 하나의 작업대에서 짝이 되어 함께 작업하는 기술이다. 한 사람은 코딩을 하며, 다른 사람은 코딩 과정을 검사한다. 30분 정도마다 두 사람의 역할을 맞바꾼다.

  • 시스템 코드에 대한 소유권과 지식을 공유하고 문제 해결에 대한 책임을 팀이 진다.
  • 적어도 두 사람이 코드를 살피기 때문에 비형식적 검토가 가능하다.
  • 코드 개선을 위한 리팩토링이 장려된다.
  • 두 사람이 독립적으로 작업하는 것보다 생산성이 떨어지지 않는다.

(2) 테스트 선행 개발(test-first development)

XP는 통합테스트를 매우 중요시하며, 새로운 점증의 추가로 인해 기존 소프트웨어에 오류가 생기는 가능성을 줄이고자 한다. 테스트 선행 개발은 테스트 케이스를 먼저 작성한 후, 이것을 통과하는 코드를 만들고 다듬어서 기능을 구현하는 것이다.

profile
Software Engineer

0개의 댓글