본문 바로가기

6. With IT/6.8 DevTools

개발 도구 설명

출처 : http://happystory.tistory.com/89#recentTrackback


CI(Continuous Integration) 지속적인 통합

--------------------------------

[정의]

- 지속적으로 퀄리티 컨트롤(품질 관리)을 적용하는 프로세스를 실행하는 것.

- 모든 개발을 완료한 뒤에 퀄리티 컨트롤을 적용하는 고전적인 방법을 대체하는 방법으로서 소프트웨어의 질적 향상과 소프트웨어를 배포하는데 걸리는 시간을 줄이는데 초점

- 초기에 그리고 자주 통합해서 통합 시 발생하는 여러가지 문제점을 조기에 발견, 피트백사이클을 짧게 하여 소프트웨어 개발의 품질과 생산성을 향상시키는 것


[시스템 적용의 필요성]

- 적용 전



CI시스템을 구축하지 않은 경우, 각 개발자가 개발 후, 대부분 개발이 끝난 막바지에 통합을 하여 테스트 진행. ==>개발중 잘못된 소스코드를 반영하였을 경우 발생되는 문제가 개발 후반에 모두 장애로 발견됨.


-적용후


형상관리 서버에 Commit된 소스코드를 주기적으로 폴링, 컴파일, 단위테스트, 코드 인스펙션 등의 과정을 수행하며 신규 또는 수정된 소스코드가 결함이 있는지의 여부를 지속적으로 검증.

 검증 결과는 이메일, RSS 등의 피드백 메커니즘을 통해 개발자들에게 전달되고, 이를 통해 조기에 결함을 발견하여 해결할 수 있음.


[핵심 구성요소]

1. CI Server

- 빌드 프로세스를 관리하는 서버

- Jenkins, Hudson, CruiseControl.NET, TeamCity


2. SCM(Source Code Management)

- 소스코드 형상관리 시스템

- 소스코드의 개정과 백업 절차를 자동화하여 오류 수정 과정을 도와줄 수 있는 시스템

- 여러사람이 같은 프로젝트에 참여할 경우, 각자가 수정한 부분을 팀원 전체가 자동으로 동기화할 수 있는 시스템

- Subversion, Git, Mercurial


3. Build Tool

- 컴파일, 테스트, 정적분석 등을 실시해 동작 가능한 소프트웨어를 생성.

- Ant, Maven, MSBuild, Make


<참고>

- 컴파일 : 소스코드 파일 등의 원시파일을 실행파일, 라이브러리등의 Object파일로 바꾸는 작업

- 빌드 : 소스코드 파일들을 컴퓨터에서 실핼할 수 있는 소프트웨어로 변환하는 일련의 과정


4. Test Tool

- 작성된 테스트 코드에 따라 자동으로 테스트를 수행해주는 도구로, 빌드 툴의 스크립트에서 실행

JUnit, CppUnit, CppTest, MSTest, Selenium(사용자테스트 자동화 가능)


여기에서 테스트는 '단위 테스트'를 말함

(단위 테스트는 테스트 대상이 되는 코드 기능의 아주 작은 특정 영역을 실행해 보는 것으로, 개발자가 작성한 테스트 코드로 특정 메소드를 시험해보는 것이 일반적)


5. Test Converage Tool

- 테스트 코드가 대상 소스 코드에 대해 어느정도 커버하는지 분석하는 도구

- Emma, Cobertura, TestCocoon, Sonar


개발자가 작성한 테스트코드가 테스트 대상 소스코드에 대해서 어느정도 테스트를 수행하는지를 코드 라인과 백분율을 통해 리포팅하는 것으로 단위테스트 수행 시 테스트 커버리지를 분석하기 위하여 부가적으로 사용하는 툴


6. Inspection Tool

- 프로그램을 실행하지 않고, 소스코드 자체로 품질을 판단할 수 있는 정적분석 도구

- 코딩 표준 준수 검사, 코드 메트릭 측정, 중복코드 검사, 코드 인스펙션 검사 등.

- CheckStyle, FindBugs, Cppcheck, Valgrind


정적분석도구로, 프로그램을 실행하여 분석하는 동적분석(JUnit도 일종의 동적 분석에 속함)과는 달리 소스코드 자체로 프로그램 상의 예상되는 잠재적인 결함을 검출하는 도구.