티스토리 뷰

 

성공으로 이끄는 팀 개발 실천 기술
이케다 타카후미,후지쿠라 카즈아키,이노우에 후미아키 공저/김완섭

 

차례

CH 1. 팀 개발이란?

CH 2. 팀 개발에서 발생하는 문제

CH 3. 버전 관리

CH 4. 티켓 관리

CH 5. CI(지속적 통합)

CH 6. 배포 자동화(지속적 전달)

CH 7. 회귀 테스트

 

 

본문 중에서...

 

"소프트웨어 공학에서 리팩토링(refactoring)은 주로 '결과의 변경 없이 코드 구조를 재조정함'을 뜻한다." - 위키피디아

 

테스트 코드를 사용하지 않고 레거시 코드를 양산하면 소프트웨어 품질이 저하된다. '바른 것'을 확인하기 위한 수단이 눈으로 확인하는 테스트뿐이라면, '바른 것'을 확인하기 위한 시간이 늘어나서 회귀 테스트 실행이 비현실적이 된다. 테스트로 시간을 낭비하면서 점점 테스트 코드 작성을 위한 시간을 확보할 수 없게 되고, 더 많은 레거시 코드를 양산하게 되는 악순환이 발행하게 된다. 이런 식으로 수년간 반복하면 신규 기능은 고사하고 버그 수정도 제대로 이루어지지 않게 돼서 시대를 따라가지 못하는 구식 소프트웨어로 남는 경우가 적지 않다.

 

프로젝트가 가진 목표를 신속하고 실수 없이 달성하려면 자동화할 수 있는 것은 모두 도구에 맡기도록 한다. 그래서 고객 가치와 연결되지 않는 작업이나 고민할 필요 없는 헛된 작업에 아까운 시간을 낭비하지 않는 것이 중요하다. 이를 통해 프로젝트 멤버는 원래 주력해야 할 것, 즉 프로젝트 목표를 달성할 수 있을지, 하고 있는 것이 원래 노선에서 벗어나고 있지나 않은지 등에 집중해 최종적으로 훌륭한 결과를 만들어 내는 것이 중요하다.

 

이상적인 프로젝트란?

1. 티켓 관리 시스템에 이슈 등이 집약되어 있다

2. 가능한 버전 관리 시스템을 이용한다

3. 반복 검증 가능한 CI 시스템을 도입한다

4. 환경의 영향을 최소화하고 항상 배포 가능한 상태로 둔다

5. 모두 기록해서 추적 가능하게 한다

 

 

이상적인 개발 흐름의 예

 

 

- James Song

댓글