상세 컨텐츠

본문 제목

지속적인 통합: 소프트웨어 품질을 높이고 위험을 줄이기

by techbard 2008. 3. 31. 08:55

본문

반응형
사용자 삽입 이미지 사용자 삽입 이미지

Continuous Integration이라는 제목의 책이 역서가 나온 모양이다. 이름하여, 지속적인 통합인데, 사실 당연한 얘기가 안 지켜진다는 것은 그만큼 사람들의 타성과 관성이 무서운 것이며, 다른 방식을 배척하고 고집을 부리는 것이 일견 엔지니어들의 특성 중 하나라고 할 수 도 있을 듯 하다. (모든 사람들의 특성인가? ^^)

아래는 목차...


PART I 지속적 통합의 배경: 원칙과 실천 방법

chapter1 시작하기
    변경할 때마다 소프트웨어를 빌드하기
    개발자
    버전 관리 저장소
    지속적인 통합 서버
    빌드 스크립트
    피드백 메커니즘
    통합 빌드 머신
    지속적인 통합의 특징
    소스 코드 컴파일
    데이터베이스 통합
    테스트
    검사 (Inspection)
    배포
    문서와 피드백
    요약
    질문

    chapter2 지속적인 통합 도입하기
    지속적인 통합과 함께 하는 하루 일과
    지속적인 통합에는 어떤 가치가 있을까요?
    위험을 줄여줍니다
    반복적인 프로세스를 줄여줍니다
    배포할 수 있는 소프트웨어를 생성합니다
    프로젝트 가시성을 더 높입니다
    제품에 대해 보다 큰 자신감을 갖게 됩니다
    지속적인 통합을 왜 도입하지 못할까요?
    '지속적인' 통합을 도입하려면 어떻게 해야 할까요?
    언제, 어떻게 프로젝트에 지속적인 통합을 도입해야 할까요?
    통합의 진화
    지속적인 통합은 다른 개발 실천 방법을 어떻게 보완할까요?
    지속적인 통합을 수립하려면 얼마나 걸릴까요?
    지속적인 통합과 나
    코드를 자주 커밋하세요
    깨진 코드를 커밋해선 안 됩니다
    빌드가 깨지면 즉시 고치세요
    자동화된 개발자 테스트를 작성하세요
    테스트와 검사는 모두 통과해야 합니다
    개인 빌드를 돌리세요
    깨진 코드는 가져오지 마세요
    요약
    질문

    chapter3 지속적인 통합을 이용해 위험 줄이기
    위험 요소: 배포 가능한 소프트웨어의 부재
    시나리오: “내 컴퓨터에선 되는데요”
    시나리오: 데이터베이스와 동기화하기
    시나리오: 버튼을 안 눌렀어요
    위험 요소: 뒤늦은 결함 발견
    시나리오: 회귀 테스트
    시나리오: 테스트 적용범위 (Test Coverage, 테스트 커버리지)
    위험 요소: 프로젝트 가시성의 부재
    시나리오: “제가 남긴 메모 보셨나요?”
    시나리오: 소프트웨어를 시각화할 역량의 부재
    위험 요소: 저품질의 소프트웨어
    시나리오: 코딩 표준 준수
    시나리오: 설계 지침 준수
    시나리오: 중복 코드
    요약
    질문

    chapter4 변경될 때마다 소프웨어를 빌드하기
    빌드를 자동화하기
    명령어 하나로 빌드를 수행하기
    IDE에서 빌드 스크립트를 분리해내기
    소프트웨어 자산을 중앙 집중화하기
    일관성 있는 디렉터리 구조를 만들기
    빌드를 빨리 실패하게 만들기
    어떤 환경에서라도 빌드하기
    빌드 유형과 메커니즘
    빌드 유형
    빌드 메커니즘
    빌드 시작시키기
    전용 통합 빌드 머신을 사용하기
    지속적인 통합 서버를 사용하기
    사람이 직접 통합 빌드를 돌리기
    빌드 시간을 짧게 만들기
    빌드 메트릭 수집하기
    빌드 메트릭 분석하기
    개선 방안을 고르고 실행하기
    빌드를 여러 단계로 나누기
    다시 평가하기
    이런 게 과연 효과가 있을까요?
    요약
    질문

    PART II 완전한 기능을 갖춘 지속적인 시스템 만들기

    chapter5 지속적인 데이터베이스 통합
    데이터베이스 통합을 자동화하기
    데이터베이스 만들기
    데이터베이스 조작하기
    빌드 데이터베이스 편성 스크립트 만들기
    로컬 데이터베이스 샌드박스를 사용하기
    버전 관리 저장소를 사용해서 데이터베이스 자산을 공유하기
    지속적인 데이터베이스 통합
    개발자에게 데이터베이스를 수정할 권한을 주기
    팀이 다 함께 깨진 빌드를 고치는 일에 집중하기
    DBA를 개발 팀의 일원으로 만들기
    데이터베이스 통합과 통합 버튼
    테스트
    검사
    배포
    피드백과 문서화
    요약
    질문

    chapter6 지속적인 테스트
    단위 테스트 자동화하기
    컴포넌트 테스트 자동화하기
    시스템 테스트 자동화하기
    기능 테스트 자동화하기
    개발자 테스트를 여러 범주로 나누기
    시간이 덜 걸리는 테스트부터 실행하기
    단위 테스트
    컴포넌트 테스트
    시스템 테스트
    결함 검사용 테스트 작성하기
    컴포넌트 테스트를 반복할 수 있게 만들기
    테스트 케이스 하나에 어썰트(assert) 하나로 제한하기
    요약
    질문

    chapter7 지속적인 검사
    검사와 테스트는 무엇이 다를까요?
    검사기를 얼마나 자주 돌려야 할까요?
    코드 메트릭: 그 역사
    코드 복잡도를 줄이기
    설계 검토를 지속적으로 수행하기
    코드 심사(Audit)를 하여 조직에서 정한 표준을 잘 지키게 하기
    중복 코드를 줄이기
    PMD-CPD 사용하기
    Simian 사용하기
    코드 적용범위를 평가하기
    코드 품질을 지속적으로 평가하기
    적용범위 테스트 수행 빈도
    적용범위 테스트와 성능
    요약
    질문

    chapter8 지속적인 배포
    작동하는 소프트웨어를 언제, 어느 곳에서든 릴리즈하기
    저장소 안의 자산에 꼬리표 붙이기
    깨끗한 환경 만들기
    각 빌드에 꼬리표 붙이기
    테스트를 모두 돌리기
    빌드 피드백 보고서 만들기
    릴리즈를 롤백할 수 있는 능력 확보하기
    요약
    질문

    chapter9 지속적인 피드백
    적절하게
    적절한 정보
    적절한 사람
    적절한 시기
    적절한 방법
    지속적인 피드백 메커니즘 사용하기
    이메일
    SMS (문자 메시지)
    앰비언트 오브와 X10 디바이스
    윈도우 작업 표시줄
    소리
    와이드 스크린 모니터
    요약
    질문

    epilogue 지속적인 통합의 미래

    appendixA CI 관련 리소스
    지속적인 통합 도구와 제품
    빌드 스크립트 리소스
    버전 관리 리소스
    다른 버전 관리 리소스
    데이터베이스 리소스
    테스트 리소스
    자동화된 검사 리소스
    배포 리소스
    피드백 리소스
    문서화 리소스

    appendixB CI 도구 평가하기
    도구를 평가할 때 고려할 점
    기능성
    내가 일하는 환경과의 호환성
    안정성
    수명
    사용자 편의성
    자동화된 빌드 도구
    Ant
    Maven 1
    Maven 2
    NAnt
    Rake
    빌드 스케줄러 도구
    AnthillPro
    Continuum
    CruiseControl
    CruiseControl.NET
    Draco.NET
    Luntbuild
    결론
반응형

관련글 더보기

댓글 영역