프로젝트를 진행함에 있어 가장 중요한 요소 중의 하나가 자동화라고 생각합니다.
IBM developerWorks의 자동화 관련된 내용을 오픈마루 강규영님께서 정리해 주셨네요.
진행하고 있는 프로젝트와 비교해 보시고 적용 점을 찾아 보시면 많은 도움이 있을 것 같습니다.
제가 올해 부터 진행하는 프로젝트에 하나 씩 적용하면서 어떻게 적용하였고 어떤 장,단점이 있는지를 정리하려고 합니다.
인프라(툴), 프로세스, 테스트(기법)의 내용이 주된 내용이 될 것 같습니다.
less..
어느 정도 경험이 있는 개발자라면, 혹은 마틴 파울러의 "리팩토링"을 읽어본 개발자라면, 소스 코드 중복이 왜 문제이며
중복을 어떻게 하면 효과적으로 제거할 수 있는지 잘 알고 있을 것입니다. 하지만 제거해야 할 중복은 소스 코드에만 있는 것이
아닙니다.
소프트웨어를 빌드할 때마다 반복적으로 입력하는 명령어들, 코드를 수정한 후 수동으로 수행하는 반복적 테스트, 주기적으로 작성하는 각종 리포트 등은 소스 코드 중복은 아니지만 "행위의 중복"이며 제거해야 할 대상입니다.
이 연재는 다양한 자동화 기법을 통해 이러한 "행위의 중복"을 제거하는 효과적이고 검증된 방법들을 상세히 설명합니다. 이를 통해
반복적이고 지루한 작업은 컴퓨터에 떠넘기고, 여러분은 더 창의적이고 가치 있는 일에 집중할 수 있게 될 것입니다.
1편: 빌드 스크립트에서 나는 “악취(smell)” 제거하기 (한글)
빌드 스크립트에 대하여 "악취(bad smells)" 개념을 적용하고 아홉 가지 꼭 피해야 할 악취들을 소개합니다.
2편: 연속 테스팅 (한글)
연속 테스팅(continuous testing)을 소개합니다. 연속 테스팅이란 저장소의 코드가 바뀔 때마다 자동으로 테스트를 수행하게 하는 방식으로, 코드 수정에 대한 피드백 주기를 크게 줄여줄 수 있습니다.
3편: Eclipse 플러그인으로 코드 품질 높이기 (한글)
코딩 표준, 코드 중복, 코드 커버리지, 의존성 분석, 복잡성 감시 등 이른바 "5대 코드 분석 영역"을 설명하고, 다양한 정적 코드 분석 플러그인을 통해 이러한 분석을 자동으로 수행하는 방법을 소개합니다.
4편: Continuous Integration 서버 선택하기 (한글) 지
속적 통합(continuous integration)을 위한 오픈 소스 소프트웨어들을 소개하고 각각의 특징을 분석합니다. 지속적
통합은 앞서 소개된 연속 테스팅 등과 함께 행위의 중복을 제거하고 피드백 주기를 줄이기 위해 필수적인 실천법(practice)
중 하나입니다.
5편: Continuous Inspection (한글) 앞
서 소개한 코드 분석 기법들을 통해 자동으로 코드 검사를 수행하여, 이를 통해 짝 프로그래밍, 주간 코드 리뷰 등을 통해 얻을
수 있는 유용함을 얻을 수 있는 방법을 소개합니다. 저자는 한편, 모든 수동 소스 검사를 자동화할 수는 없고 다만 수동 소스
검사 과정을 더 효율화한다는 개념으로 접근해야 한다는 것을 강조합니다.
6편: 지속적인 피드백 (한글) 다
양한 소프트웨어, 하드웨어 장치를 통해 자동화 결과에 대한 피드백을 받는 방법을 소개합니다. 저자가 강조하는 것은 이 연재에서
소개되는 모든 장치를 적용하는 것이 아니라 상황에 맞는 적절한 장치를 선택적으로 적용해야 한다는 점입니다.
7편: 아키텍처 건전성 (한글)
아키텍처 수준에서의 디자인 문제를 정량적으로 측정하는 방법, 앞서 소개한 정적 소스 분석 도구들을 이용하여 이러한 검사를 자동으로 수행하는 방법, 그리고 디자인 문제가 발생하면 빌드 프로세스가 멈추도록 하는 방법 등을 소개합니다.
8편: Raven으로 자바 프로젝트 구현하기 (한글)
Ruby를 기반으로 구현된 빌드 플랫폼인 Raven을 사용하여 빌드 스크립트 내에서 Ruby의 힘과 유연성을 확인해 봅시다.
9편: Continuous Integration 반패턴(anti-pattern) (한글) 자
동화 전문가이자, Continuous Integration: Improving Software Quality and
Reducing Risk 의 공동 저자인 Paul Duvall이 CI 반패턴(anti-pattern)을 설명하고, 이를 피하는
방법을 설명합니다.
less..