JAVA 환경에서의 CI( 지속적통합 ) 구축사례

Similar documents
Introduction to CTIP

PowerPoint 프레젠테이션

슬라이드 1

임베디드시스템의개발환경구축사례

목차 Ⅰ. 개요 Ⅱ. 추진배경 Ⅲ. 개발환경구축 ( 도구연계 ) Ⅳ. 도구연계성과 page 2

블로그_별책부록

슬라이드 1

소프트웨어 검증 및 설계

파워포인트

2. 기능요약 Parallel 빌드지원등빌드자동화기능을지원하며다양한도구 ( 형상관리도구, Issue Tracker, Test 도구, IDE) 와의연동을지원함. 주요기능 Parallel 빌드지원 ( 다수프로젝트동시빌드 ) 분산빌드웹기반관리 알림형상관리도구지원

PowerPoint Presentation

문서의 제목 나눔명조R, 40pt

PowerPoint Presentation

문서의 제목 나눔고딕B, 54pt

개발및운영 Eclipse 를이용한 ANT 활용방법

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Introduction to Junit, Eclipse, Build Environment

Spring Boot

Apache Ivy

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

슬라이드 1

슬라이드 1

표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1

JFeature & ANT Tools Summary

슬라이드 1

2. 기능요약 자바프로그래밍언어에서사용하는자동화된소프트웨어빌드도구 주요기능 IDE 통합및도구지원 원격코드 Build 자동화 지원여부 대부분의도구지원 (Eclipse, NetBeans 등 ) 지원 (FTP, SCP, SFTP, SVN) 자동화 Build 중 Unit Te

Software Verification Team 오준 임국현 주영진 김슬기

Angry MOMO Presentation

Microsoft PowerPoint - jfeature장범석서재원박동현.pptm

PowerPoint 프레젠테이션

목차 I. CI 정의 II. CI 필요성 III. CI 기능및특징 IV. CI 제품 V. Hudson VI. 적용방안 VII. 결론 - 1 -

ppt.glzy8.com提供海量PPT模板免费下载!

[Brochure] KOR_TunA

JUnit & Eclipse

슬라이드 1

Microsoft PowerPoint - 2번째발표(최종).pptx

문서의 제목 나눔고딕B, 54pt

Interstage5 SOAP서비스 설정 가이드

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인

개발환경 교육교재


서현수

ThisJava ..

Network Programming

슬라이드 1

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

대규모 자바스크립트 웹어플리케이션개발하기 with BackboneJS and RequireJS 넷스루개발 2 팀이병주

J2EE & Web Services iSeminar

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

<B1D4B0DDBCAD202D20C4DAB5E520B1E2B9DD2E687770>

Microsoft PowerPoint - Smart CRM v4.0_TM 소개_ pptx

쉽게 풀어쓴 C 프로그래밍

제11장 프로세스와 쓰레드

슬라이드 1

gnu-lee-oop-kor-lec06-3-chap7

JavaGeneralProgramming.PDF

ETL_project_best_practice1.ppt

JVM 메모리구조

Microsoft PowerPoint - 3조-최종발표.pptx

슬라이드 1

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint 프레젠테이션

문서의 제목 나눔고딕B, 54pt

Microsoft PowerPoint - aj-lecture1.ppt [호환 모드]

문서의 제목 나눔고딕B, 54pt

Intro to Servlet, EJB, JSP, WS

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

슬라이드 1

Spring Boot/JDBC JdbcTemplate/CRUD 예제

PowerPoint 프레젠테이션

Secure Programming Lecture1 : Introduction

소프트웨어공학개론 Tutorial #2: Junit Eun Man Choi

목차 1. SVN... 3 A. 소개... 3 B. 사용모델... 3 C. 기능... 4 D. 용어... 5 E. SVN 툴... 5 F. 사용방법 Mantis... 8 A. 소개... 8 B. 특징... 8 C. 설치및실행 JFeature

02 C h a p t e r Java

4S 1차년도 평가 발표자료

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

미친놈과 정상인

쉽게 풀어쓴 C 프로그래밊

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

Service-Oriented Architecture Copyright Tmax Soft 2005

Microsoft Word - src.doc

JUNIT 실습및발표

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

untitled

PowerPoint 프레젠테이션

Social Media and Social Computing

PCServerMgmt7

Level 학습 성과 내용 1수준 (이해) 1. 기본적인 Unix 이용법(명령어 또는 tool 활용)을 습득한다. 2. Unix 운영체계 설치을 익힌다. 모듈 학습성과 2수준 (응용) 1. Unix 가상화 및 이중화 개념을 이해한다. 2. 하드디스크의 논리적 구성 능력

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

Ver. T3_DWS.UTP-1.0 Unit Testing Plan for Digital Watch System Test Plan Test Design Specification Test Cases Specification Date Team Infor

PowerPoint 프레젠테이션

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

Chapter #01 Subject

슬라이드 1

Microsoft PowerPoint - CSharp-10-예외처리

PowerPoint Presentation

Angry MOMO Presentation

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Æí¶÷4-¼Ö·ç¼Çc03ÖÁ¾š

Transcription:

JAVA 환경에서의 CI( 지속적통합 ) 구축사례

목차 Ⅰ. 개요 Ⅱ. 추진배경 Ⅲ. 개발환경구축 ( 도구연계 ) Ⅳ. 도구연계성과 page 2

Ⅰ. 개요 S사 E프로젝트개요 아시아통신시장을목표로통신분야에특화된기능을 Template 기반으로제공하는서비스솔루션개발 도메인 : 차세대이동통신 개발형태 : 시스템통합개발 개발언어 : Java 개발인력 : 약 20 명 개발기간 : 약 10 개월 프로젝트상세 아키텍처특성 J2EE 기반 Open Architecture One DB를통한 True Single View 객체지향 Application Architecture Easy Customization & Configuration 기능적특성 Telco 특화 Framework 기반솔루션 통신프로세스에특화된 Order/Inventory 영역강화 End-to-End Integrated Solution - Customer Care, Billing, Mediation, Rating page 3

Ⅱ. 추진배경 : 1. 기존개발환경 개발및프로젝트관리 형상관리오픈소스도구인 SVN(Subversion) 과이슈 ( 결함 ) 관리오픈소스도구인 Mantis 를활용하여소스코드형상관리및이슈 ( 결함 ) 관리수행 잦은요구사항변경으로인하여개발초기설계된아키텍처가업데이트되지않음 통합빌드 통합담당자를할당하여개발이어느정도완료된시기에통합빌드수행 테스트 각개발자별수동으로코드를작성하여단위테스트수행 기존개발환경구성및개발흐름도 page 4

Ⅱ. 추진배경 : 2. 문제점분석, 계속 1. 개발막바지에이르러통합작업수행 개발자간잘못된의사전달로인해수많은오류발생 각종오류를한꺼번에처리해야만하는 Integration Hell 현상발생 통합시점에이미소스코드가방대해져오류의원인파악및해결을위해많은시간할애 기존통합방식 page 5

Ⅱ. 추진배경 : 2. 문제점분석, 계속 2. 수작업에의한테스트수행 개별단위테스트는수행되지만테스트케이스가보존되지않음 별도의테스트커버리지를측정하지않아테스트수행정도를가늠하기어려움 회귀테스트 * 수행시테스트케이스를새로작성해야하기때문에막대한공수를필요로함 * 회귀테스트 : 개발과테스트를완료한모듈에서오류제거및수정과같은변경이일어날경우, 이러한변경에의해유입된오류가없는지를확인하는일종의반복시험 기존단위테스트방식 1. 테스트코드직접작성 2. 테스트커버리지측정미수행 Java Class method1() method2() method3() Main() { 테스트코드 } 재테스트시테스트수행공수증가 기능변경에대한 Side-Effect 발생가능 테스트시실행된코드의정도파악불가 실행되지않은코드에서결함이발생할가능성내포 page 6

Ⅱ. 추진배경 : 2. 문제점분석, 계속 3. 패키지간의존성관리부족 아키텍처가존재하기는하나, 잦은요구사항변경으로인해최신으로유지되지않음 개별단위테스트및통합빌드를통해도출된결함수정시패키지간의존성을파악하지못하여 Side-effect 발생 패키지간순환의존성존재가의심스러우나이에대한확인및대처방법이없음 기존의존성관리방식 1. 패키지간의존성관리부족 2. 순환의존성확인및대처방안미흡 패키지 A (rev 1) 사용실패 패키지 A 사용 사용 사용 패키지 B (rev 1) 결함해결 패키지 B (rev 2) 패키지 B 결함수정에따른 Side-effect 발생 패키지 B 에대한결함을수정하면서패키지 A 와의의존성을고려하지않아수정된패키지 B 를패키지 A 가제대로사용하지못하는문제발생 소프트웨어의복잡성증가 패키지병행개발및모듈화를저해하는요인이됨 page 7

Ⅱ. 추진배경 : 3. 개선방향 1. 개발막바지에이르러통합작업수행 2. 수작업에의한테스트수행 3. 패키지간의존성관리부족 통합빌드, 단위테스트및테스트 커버리지측정, 디자인품질분석을위한 개발환경구축필요 page 8

Ⅲ. 개발환경구축 : 1. 구축시고려사항 ( 구축제약사항 ) 개발환경구축목적확인 형상관리, 이슈관리, 통합빌드, 단위테스트수행및테스트커버리지측정, 디자인품질분석을아울러수행할수있는통합개발환경필요 자동화대상기능선정 기존의형상관리시스템에서관리중인소스코드들을자동으로빌드하는환경구축 빌드시단위테스트수행및테스트커버리지측정, 디자인품질분석수행필요 -> 해당내용자동화 빌드결과는확인할수있는환경이필요하지만빌드오류의경우담당자확인후이슈등록필요 -> 빌드오류에대한이슈등록은자동화부문에서배제 개별도구선정 선정조건 1: 개발언어에맞는도구선정 - Java 선정조건 2: 오픈소스도구로만구성 도구간연계성파악 기존형상관리시스템인 SVN 및개발서버 (FTP) 와의연계가가능한도구위주로선정 page 9

Ⅲ. 개발환경구축 : 2. CTIP 환경소개 CI (Continuous Integration) 개발기간동안개별개발된모듈에대한빌드를지속적으로수행하기위해 XP(eXtream Programming) 에서도입한빌드자동화개념 CTIP (Continuous Test & Integration Platform) CI 개념에테스트자동화개념을더하여빌드도구, 테스트도구및기타개발시유용한도구들이유기적으로동작하도록묶은도구집합 (Tool Chain) 환경 page 10

Ⅲ. 개발환경구축 : 3. CTIP 환경구성및개발흐름도 개발자 9 이슈관리시스템 (with Mantis) 8 CTIP Tool Chain Build Script (with Ant) 4 스테이징서버 1 개발서버 형상관리 Repository (with SVN) 2 3 Build Scheduling (with CruiseControl) 5 6 7 Unit Test (with JUnit) Test Coverage Analysis (with Clover) Package Dependency Analysis (with JDepend) Unit Test Report Test Coverage Report JDepend Report 1 소스코드개발및관리 2 최신소스코드자동체크아웃 ( 업데이트 ) 3 정해진스케쥴링에따라빌드요청 4 빌드자동수행및배포 6 빌드시커버리지분석자동수행 7 빌드시의존성분석자동수행 8 빌드후문제점확인및등록 ( 통합담당자 ) 9 등록된오류확인및해결 ( 개발자 ) 5 빌드시단위테스트자동수행 page 11

Ⅲ. 개발환경구축 : 4. 개별도구상세 (CruiseControl) CruiseControl: 프로젝트의빌드스케줄링및빌드내역관리를위한오픈소스 CI 도구 CruiseControl 구성요소 CruiseControl Architecture Diagram 1. Build Loop CruiseControl 의 Core 시스템 소스코드의변경또는스케줄링에의해자동수행가능 관리화면을통한명시적인요청에의해수행가능 config.xml 에수행작업과스케줄정보설정 Reporting / Dashboard Web Container 모니터링 사용자 2. Reporting 빌드결과및이력관리 각종빌드산출물 ( 빌드로그, 테스트수행결과, API 문서, 빌드된어플리케이션모듈 ) 에접근가능 xml logs 산출물 빌드결과 (rss, IM, email) 형상관리 Repository 3. Dashboard 설정된모든프로젝트의빌드현황을그래피컬하게제공 Build Loop 소스코드 체크아웃 빌드프로젝트및스케쥴설정 * http://cruisecontrol.sourceforge.net config.xml page 12

Ⅲ. 개발환경구축 : 4. 개별도구상세 (Ant) ANT: 지속적인프로젝트빌드및통합을위한자바기반의자동빌드도구 Ant 개요 샘플빌드파일 (build.xml) 1. Ant 개요 자바기반의자동빌드도구 XML 형식으로빌드스크립트파일작성 <project name= sample" default="compile"> <property name="outputdir" value="/ant/output/sample1" /> 2. Ant 장점 대부분의자바 IDE 에서지원 (de facto standard) 대부분의테스트도구 (Junit, Caltus 등 ) 에서지원 Core 태스크이외에도빌드파일작성에쉽게사용될수있는많은 Optional 태스크제공 뛰어난확장성제공 3. Ant 빌드파일구조 (XML 형식 ) <project>, <property>, <target>, <task> 등의항목으로구성 다양한 <task> 항목기본제공 필요에따라 <task> 항목추가확장가능 http://ant.apache.org/manual/index.html 참조 <target name= init" > <tstamp/> <mkdir dir="${outputdir}/classes" /> </target> <target name="compile" depends= init" > <javac srcdir="./xptoolkit" destdir="${outputdir}/classes" /> </target> </project> * http://ant.apache.org page 13

Ⅲ. 개발환경구축 : 4. 개별도구상세 (JUnit) JUnit: 자동화된단위테스트수행을위한자바기반의오픈소스테스트프레임워크 JUnit 개요 테스트케이스구성및실행흐름 1. JUnit 개요 자바기반의오픈소스테스트프레임워크 Erich Gamma, Kent Beck 에의해서개발 2. JUnit 장점 자동화된단위테스트구현 Ant 와연결하여빌드시자동테스트구현가능 테스트케이스작성을위한여러 API 제공 뛰어난확장성 (Junitee, Cactus, HttpUnit, JUnitPerf) 대부분의자바 IDE 에서지원 (de facto standard) 구성 public class AnotherOperationTest extends TestCase { protected void setup() throws Exception { super.setup(); // 아래의각테스트수행전에처리할작업구현 // 서버연결설정, DB 내용설정, 변수초기화등 } } protected void teardown() throws Exception { super.teardown(); // 아래의각테스트수행후에처리할작업구현 // 서버연결해제, DB 내용초기화등 } public void testoperation1() { // 테스트데이터를이용하여기능호출 // 기능실행결과비교로테스트결과확인 // 여러번의기능호출이가능 // 메소드이름은항상 test 로시작되어야함 } public void testoperation2() { } 테스트시작 실행흐름 Operation1() 테스트 setup() testoperation1() teardown() * http://www.junit.org Operation2() 테스트 setup() testoperation2() teardown() 테스트종료 page 14

Ⅲ. 개발환경구축 : 4. 개별도구상세 (Clover) Clover: JUnit 단위테스트를통해수행된코드의전체코드대비커버리지를분석하기위한테스트커버리지분석도구 Clover 개요 Clover Report 1. Clover 개요 자바기반의테스트커버리지분석툴 CTIP 에서수행하는 JUnit 테스트결과를분석하여전체코드대비몇 % 가테스트되었는지를알수있음 테스트커버리지관련 Metric 정보제공 테스트커버리지 2. Clover 장점 자동화된단위테스트커버리지분석을통해개발대상소프트웨어의품질향상가능 Ant 와연결하여빌드시자동테스트커버리지분석구현가능 Eclipse 플러그인제공으로개발 IDE 에서사용가능 테스트수행된코드 * http://www.atlassian.com/software/clover/ page 15

Ⅲ. 개발환경구축 : 4. 개별도구상세 (JDepend) JDepend: 자바패키지간의존성을분석하고소프트웨어의설계품질을측정하기위한오픈소스도구 JDepend 개요 JDepend Report 1. JDepend 개요 자바기반의디자인품질분석툴 클래스파일을분석하여자바패키지에대한설계품질관련지표제공 패키지간디자인품질지표 2. JDepend 측정항목 Number of Abstract Classes and Interfaces 패키지의확장성분석 Afferent Couplings (Ca) 패키지의책임성분석 Efferent Couplings (Ce) 패키지의독립성분석 Abstractness 패키지의추상화정도분석 Instability 패키지의안정화정도분석 Package Dependency Cycles 순환되는의존성을가지는패키지식별 순환되는의존성을가지는패키지정보 패키지별의존성상세정보 * http://clarkware.com/software/jdepend.html page 16

Ⅲ. 개발환경구축 : 5. 도구연계 ( 설치개요 ) 설치절차 먼저 CruiseControl 을설치한후미리준비된디렉토리복사를통해 CTIP 에서추가적으로필요한프로그램, 설정파일, 라이브러리파일, 디렉토리를생성하고 CruiseControl 설치시생성된기본샘플프로젝트관련파일들을삭제함 1 2 3 4 CruiseControl 설치 CTIP 기본디렉터리복사 CruiseControl 기본빌드프로젝트삭제 CTIP 환경변수설정 설치프로그램실행을통한 CruiseControl(ANT 포함 ) 설치 CTIP 에서사용되는기타 프로그램복사 - Subversion - JUnit - Clover - JDepend 필요설정파일복사 CruiseControl 설치시에생성되는기본빌드프로젝트관련파일삭제 (CruiseControl 기본샘플프로젝트인 connectfour 프로젝트디렉토리삭제 ) CTIP 빌드를위해필요한시스템환경변수설정 (JAVA_HOME, ANT_HOME 등 JVM 및 ANT 실행을위해필요한환경변수설정 ) 필요라이브러리복사 필요디렉토리복사 * CTIP 서버에컴파일을위한컴파일도구는사전에설치되어있어야함 page 17

Ⅲ. 개발환경구축 : 5. 도구연계 ( 연계스크립트 ) 연계스크립트 본사례에서는 CTIP 운영을위해서 config.xml( 구성스크립트 ), pre-build.xml( 빌드스크립트 ), build.xml( 빌드스크립트 ) 3 개의스크립트파일이사용됨 보통한개의구성스크립트와한개의빌드스크립트가사용되나, 본사례의경우여러프로젝트빌드를다른방식으로수행하기위하여두개의빌드스크립트를사용 1 config.xml CruiseControl 에서빌드프로젝트위치및스케줄링을설정하는파일 전체빌드를위한 XXX 프로젝트및 ProFrame Application, Batch, UI, Integration, MiPlatform Web Application 개별빌드를위한프로젝트가설정되어있음 설정된모든프로젝트에대해빌드주기또는빌드시간이설정되어있음 2 pre-build.xml XXX 시스템빌드루트디렉터리및체크아웃설정 config.xml 에설정된각프로젝트를위한 ANT 빌드태스크정의 관련서브버전프로젝트를체크아웃하고 build.xml 에정의되어있는태스크를호출하여빌드수행 3 build.xml 체크아웃을제외한실제 XXX 프로젝트빌드를위한모든 ANT 빌드태스크가정의되어있음 전체빌드를위한태스크및 ProFrame Application, Batch, UI, Integration, MiPlatform Web Application 개별빌드를위한태스크가정의되어있음 Staging 서버디플로이를위한태스크가정의되어있음 JUnit, Clover, JDepend 등프로젝트문서화를위한태스크 * 가정의되어있음 * JUnit, Clover, JDepend와같은도구들은 build.xml에서 task 설정및 property 설정 ( 해당실행파일폴더, 실행후결과저장폴더등 ) 을통해간단히연동가능 page 18

Ⅲ. 개발환경구축 : 5. 도구연계 ( 연계스크립트 ), 계속 1. config.xml ( 구성스크립트 ) 빌드프로젝트관리와스케줄링에대한설정이정의되며, CI 서버인 CruiseControl 에서사용됨. 스케줄링은특정빌드시간을지정하거나빌드 Interval 을지정할수있음 config.xml 파일구조 <cruisecontrol> <project> <bootstrappers/> <modificationset/> <schedule/> <log> <merge/> </log> <publishers> <onsuccess/> <email/> </publishers/> </project> </cruisecontrol> * http://cruisecontrol.sourceforge.net 1) 빌드시간설정예제 <schedule> <ant anthome="apache-ant-1.7.0" </schedule> 2) 빌드 Interval 설정예제 <schedule interval="864000"> <ant anthome="apache-ant-1.7.0" </schedule> buildfile="projects/xxx/pre-build.xml target="build.xxx_ui" /> 10 일 (86,400 초 ) 간격으로 pre-build.xml 빌드파일의 build.xxx_ui 타겟실행 buildfile="projects/xxx/pre-build.xml target="build.xxx.full time= 0200 /> 매일 02 시 00 분에 pre-build.xml 빌드파일의 build.xxx.full 타겟 실행 page 19

Ⅲ. 개발환경구축 : 5. 도구연계 ( 연계스크립트 ), 계속 2. pre-build.xml ( 빌드스크립트 ) SVN 으로부터최신소스를체크아웃하는타겟및빌드타겟이정의되어있으며 CruiseControl 의 config.xml 에스케줄링되어호출됨. 빌드관련타겟은 build.xml 에정의된타겟을호출하는것으로구현됨 3. build.xml ( 빌드스크립트 ) 체크아웃을제외한실제 XXX 프로젝트빌드를위한모든 ANT 빌드태스크가정의되어있음 * 참고. ANT 에서사용하는빌드스크립트기본구조 기본적으로 project, target, task 의집합으로구성됨 (project : target = 1 : n, target : task = 1 : n) 추가적으로 class path 지정을위한 path, 속성값설정을위한 property 와같은요소가사용됨 빌드스크립트구조 <project> <property name="catalina.home" value="c:/tomcat5.5"/> <property name="build.home" value="c:/graph/build"/> <path id="compile.classpath"> <path element location="${catalina.home}/common/classes"/> </path> property path <target name="clean"> <delete dir= ${build.home}"/> </target> <target name="compile"> <mkdir dir= ${build.home}/classes"/> <javac srcdir = ${build.home}/src" destdir = ${build.home}/classes "/> </target> </project> task target target project page 20

Ⅲ. 개발환경구축 : 5. 도구연계 ( 연계스크립트 ), 계속 본사례에서사용된 pre-build.xml 각구성요소별설명예시 구분이름설명 Property xxx.root.dir xxx 빌드루트디렉토리 (D:/CTIP/xxx) 설정 Property xxx.checkout.dir xxx 체크아웃루트디렉토리 (D:/CTIP/xxx/checkout) 설정 Taskdef svntask.properties 서브버전태스크정의 Target build.xxx.full xxx 전체빌드타겟 (1 일간격으로스케줄링됨 ) mi_integration, xxx_ui, integration 빌드및 Staging Server 디플로이수행 Target build.xxx.part xxx 부분빌드타겟 (2 시간간격으로스케줄링됨 ) xxx_ui, integration 빌드및 Staging Server 디플로이수행 Target build.xxx_ui xxx_ui 빌드및 Staging Server 디플로이수행 Target build.mi_integration mi_integration 빌드및 Staging Server 디플로이수행 Target build.integration integration 빌드및 Staging Server 디플로이수행 Target build.batch batch 빌드수행 Target checkout 서브버전으로부터모든프로젝트 (xxx_unittest, mi_integration, xxx_ui, integration) 체크아웃수행 Target checkout.xxx_ui 서브버전으로부터 xxx_ui 프로젝트체크아웃수행 Target checkout.mi_integration 서브버전으로부터 mi_integration 프로젝트체크아웃수행 Target checkout.integration 서브버전으로부터 integration 프로젝트체크아웃수행 page 21

Ⅲ. 개발환경구축 : 5. 도구연계 ( 연계스크립트 ), 계속 본사례에서사용된 build.xml 각구성요소별설명예시 구분이름설명 Property ctip.root.dir CTIP 설치루트디렉토리 (D:/CTIP) Property xxx.checkout.dir 서브버전, FTP 로부터가져온파일을놓아둘디렉토리 Property ant.home Ant 설치디렉토리 Property jdepend.home JDepend 설치디렉토리 Property testresult.dir JUnit 단위테스트결과생성디렉토리 Property clover.dir Clover 테스트커버리지보고서생성디렉토리 TaskDef cloverlib.xml Clover 관련 Ant 태스크정의 TaskDef java2html 자바소스를 html 형태로생성해주는 java2html 관련 Ant 태스크정의 Target compile.proframe.test 프로프레임어플리케이션의 JUnit 테스트케이스를빌드디렉토리로컴파일함 Target run.ctip.proframe.test 프로프레임어플리케이션의 JUnit 테스트케이스를실행함 테스트케이스실행전 / 후에 CTIP WebLogic 서버를시작, 중지함 Target jdepend 오픈소스코드인스펙션지원도구인 JDepend를사용하여패키지간의존성분석 및코드품질결과보고서를생성함 Target clover.report Clover 테스트커버리지보고서를생성함 프로프레임어플리케이션에대한 JUnit 테스트케이스가먼저실행되어테스트결과가생성되어있어야함 page 22

Ⅳ. 도구연계성과 도구연계효과개요 지속적통합자동화 테스트자동화 디자인품질분석자동화 개발자노력, 소프트웨어품질 주요성과 [ 도입전 ] [ 도입후 ] 1. 개발막바지에이르러통합작업수행 수많은오류발생 Integration Hell 현상발생 오류의해결을위해많은시간할애 1. 통합측면 통합소요시간감소 개발자간코드충돌조기발견 통합후오류발생률감소 2. 수작업에의한테스트수행 테스트수행공수증가 기능변경에대한 side-effect 발생 테스트실행정도파악불가 2. 테스트측면 테스트케이스재사용으로인한개발시간단축 테스트코드커버리지증가 3. 패키지간의존성관리부족 결함수정에대한 side-effect 발생 소프트웨어복잡성증가 3. 디자인품질측면 유지보수성증가 ( 기능변경, 결함수정에대한공수감소 ) 아키텍처확장성및재사용성증가 page 23

END of DOCUMENT