임베디드시스템의개발환경구축사례 2012. 12.
목차 Ⅰ. 개요 Ⅱ. 추진배경 Ⅲ. 개발환경구축 ( 도구연계 ) Ⅳ. 도구연계성과 page 2
Ⅰ. 개요 : 1. 조사대상소개 H사 I프로젝트개요 안드로이드플랫폼기반자동차인포테인먼트 (information+entertainment) 시스템개발 도메인 : 자동차 개발형태 : 임베디드시스템개발 개발언어 : Java 개발인력 : 약 80 명 개발기간 : 약 24 개월 프로젝트상세 Key Features 자동차 Audio, Video, Navigation을통합한종합인포테인먼트환경지원 안드로이드플랫폼기반의스마트폰어플리케이션을차량내부시스템을통해다운로드및실행가능 page 3
Ⅱ. 추진배경 : 1. 기존개발환경 개발및프로젝트관리 기존 C 언어계열의프로그래밍언어를사용한개발에서안드로이드플랫폼기반 Java 언어로개발플랫폼및프로그래밍언어변경 내부조직구성원인력부족 다수의협력업체직원상주및협업 이슈및결함관리 이슈및결함등록의창구가다양하여이슈및결함의분석 ( 중복여부, 영향력분석 ) 에많은공수할애 코드리뷰 협력업체직원이개발한일부분의코드에대해서만내부구성원들이형식적으로코드리뷰수행 형상관리및통합빌드 별도의시스템없이공유서버를두어개발된소스코드에대해공유만하는형태 빌드담당자가주기적으로공유서버의소스코드들에대하여통합빌드를수행하는형태 page 4
Ⅱ. 추진배경 : 2. 문제점분석 1. 통합이슈및결함관리미흡 다양한이슈및결함수집창구존재 중복된이슈및결함에대한재확인공수발생 각개발자별별도문서를이용하여이슈및결함관리 이슈및결함진척및해결여부확인이어려움 팀수준에서해결되어야할이슈및결함에대한공유부족기존이슈및결함관리방식 이슈 List page 5 개발자 이슈및결함리스트가전화, 이메일, 시스템등여러경로를통해개발자에게전달 이슈및결함의분석에많은공수사용 개발자각각이슈및결함관리를수행해이슈및결함상태확인어려움 이슈및결함에대한공유부족
Ⅱ. 추진배경 : 2. 문제점분석, 계속 2. 개발산출물에대한검증부족 내부조직구성원수에비해상당히많은수의협력업체직원이상주하여개발하는형태 협력업체직원이개발한코드에대한검증활동미흡 협력업체개발코드에대한내부조직구성원의코드리뷰활동수행이요구되나해당활동에상당히많은공수투입필요 기존협력업체산출물검증방식 협력업체 A 개발및저장 소스코드공유서버 조직구성원 ( 내부직원 ) 협력업체 B 개발및저장 일부산출물에대해서만형식적리뷰수행 협력업체 C 개발및저장 내부직원, 협력업체직원구분없이소스코드개발후직접공유서버에업로드 협력업체개발산출물에대한검증수행에있어내부직원의업무로드증가 프로젝트소스코드에대한보안불투명 개발산출물의품질저하 page 6
Ⅱ. 추진배경 : 2. 문제점분석, 계속 3. 형상관리시스템및통합빌드환경부재 기존프로젝트에서는공유서버의형태로소스코드저장및공유 보안이슈및관리편의적인측면에서신규형상관리시스템도입요구증대 통합빌드의경우전담담당자를두어주기적으로소스코드통합및빌드수행 담당자의업무에대한불만사항증가 통합빌드환경의도입요구증대 기존형상관리및통합빌드방식 소스코드공유서버 개발및저장 주기적다운로드후통합빌드수행 개발자 통합담당자 프로젝트소스코드에대한보안이슈증대 잘못된버전의소스코드가릴리즈되는경우발생 소스코드의변경히스토리정보누락 통합담당자의업무에대한불만사항증가 ( 반복되는수작업에많은공수투입 ) page 7
Ⅱ. 추진배경 : 3. 개선방향 1. 통합이슈및결함관리미흡 2. 개발산출물에대한검증부족 3. 형상관리시스템및통합빌드환경부재 통합이슈및결함관리, 코드리뷰, 형상관리및통합빌드를위한 개발환경구축필요 page 8
Ⅲ. 개발환경구축 : 1. 구축시고려사항 ( 구축제약사항 ) 개발환경구축목적확인 신규프로젝트의특성에맞는형상관리, 이슈및결함관리, 통합빌드, 코드리뷰를아울러수행할수있는통합개발환경필요 자동화대상기능선정 형상관리시스템및이슈관리시스템신규구축 형상관리시스템에서관리중인소스코드들을자동으로빌드하는환경구축 개발된코드에대한검증활동을손쉽게수행할수있는코드리뷰시스템구축 개별도구선정 선정조건 1: 개발언어에특화된도구선정 - Java 선정조건 2: 오픈소스도구로만구성 page 9
Ⅲ. 개발환경구축 : 2. 통합개발환경구성및개발흐름도 개발자 1 2 3 소스코드 Repository (with GIT) 7 8 이슈관리시스템 (with Mantis) 6 빌드서버 (with Jenkins+ANT) 배포산출물 4 5 이슈 List 코드리뷰시스템 (with Gerrit) 모듈관리자 (Code Reviewer) 1 이슈등록 ( 고객 / 내부테스트결과, 내부개발이슈등 ) 2 이슈할당 3 소스코드체크아웃 ( 업데이트 ) 4 소스코드체크인 ( 체크인보류상태 ) 5 소스코드검토 6 ( 검토완료된 ) 소스코드자동체크인 7 소스코드자동체크아웃 ( 업데이트 ) 8 정해진시간에자동빌드수행 page 10
Ⅲ. 개발환경구축 : 3. 개별도구상세 (Mantis) Mantis: 웹기반의이슈관리를위한오픈소스도구 1. Mantis 개요 Mantis 개요 웹기반의이슈관리를위한오픈소스도구 (GNU GPL 라이선스 ) PHP 스크립트언어를사용하여개발됨 MySQL, MS SQL, PostgreSQL 과같은다양한 DB 와연동하여작동 2. Mantis 장점 각각의이슈 ( 작업 ) 와전체프로젝트이슈에대한진행상태도식화가능 이슈추적및관리, 이슈우선순위설정, 프로젝트별이슈관리, 타포멧 ( 엑셀등 ) 으로의출력지원 이슈알림메일서비스지원 스마트폰서비스 ( 유료 ) 지원 * http://www.mantisbt.org 담당자변경 ( 개발담당자 ) Mantis 이슈상태관리프로세스예시 이슈등록 ( 고객, 내부평가팀, 내부개발팀 ) 새로운이슈 (New) 할당된이슈 (Assigned) 이슈해결 ( 개발담당자 ) 이슈해결내용확인 ( 설계 PM) 이슈해결확인 (SQA) 해결된이슈 (Resolved) 검증된이슈 (Verified) 폐쇄된이슈 (Closed) 이슈할당 ( 설계 PM) 이슈재할당 ( 설계 PM) 버그정보부족 ( 개발담당자 ) 미개선이슈 (SQA) 미개선이슈 ( 설계 PM) 정보부족 (Feedback) page 11
Ⅲ. 개발환경구축 : 3. 개별도구상세 (GIT) GIT: 소프트웨어형상관리를위한분산형버전관리시스템 1. GIT 개요 GIT 개요 소프트웨어형상관리를위해분산형버전관리개념을사용한오픈소스도구 (GNU GPL 라이선스 ) GIT 분산형버전관리시스템개념 Remote Repository 2. GIT 장점 타형상관리시스템에비해전반적인퍼포먼스향상 서버접근없이로컬에서대부분의작업가능 손쉬운 Branch 및 Merge 가능 변경히스토리관리를통한작업복구가능 Pull Fetch Push Local Repository Commit Index (cache) Checkout HEAD Add Working directory * http://git-scm.com page 12
Ⅲ. 개발환경구축 : 3. 개별도구상세 (Gerrit) Gerrit: 웹기반의코드리뷰를위한오픈소스도구 Gerrit 개요 Gerrit 을활용한코드리뷰 1. Gerrit 개요 Git 전용웹기반소스코드리뷰도구 구글에서안드로이드플랫폼개발시코드리뷰를위해개발 개발자가 Git 형상관리시스템에 commit 을수행할경우, 수정된코드내용이소스코드 Repository 에바로반영되지않고코드리뷰어의코드리뷰를통과해야만실제로소스코드 Repository 에반영되는방식 2. Gerrit 장점 자체소스코드비교기능을지원하여변경된소스코드부분에대한확인가능 코드리뷰어가해당코드에대한검토의견기술가능 소스코드작성자가코드리뷰어의검토의견을손쉽게확인가능 개발자 코드리뷰어검토의견확인및반영 코드수정후 Commit 요청 코드리뷰시스템 (with Gerrit) 모듈관리자 (Code Reviewer) N 승인완료? 개발자등록코드에대한리뷰수행 Y 반영 소스코드 Repository (with GIT) * http://code.google.com/p/gerrit page 13
Ⅲ. 개발환경구축 : 3. 개별도구상세 (Jenkins) Jenkins: 프로젝트의빌드스케줄링및빌드내역관리를위한오픈소스 CI 도구 Jenkins 개요 Jenkins Dash Board 1. Jenkins 개요 Continuous Integration 환경세팅을지원하는오픈소스도구 프로젝트의빌드스케줄링및빌드내역관리수행 소스코드의변경또는스케줄링에의해자동빌드요청수행가능 관리화면을통한명시적인요청에의해수행가능 2. Jenkins 장점 대쉬보드를통해그래피컬하게빌드결과및이력관리가능 형상관리시스템, 빌드스크립트도구, 테스트지원도구등의연동을 Plug-in 형태로지원하여손쉬운 Continuous Integration 환경세팅지원 사용자관리, 빌드내역관리, 빌드스케줄링관리, 작업결과관리등지원 * http://jenkins-ci.org page 14
Ⅲ. 개발환경구축 : 3. 개별도구상세 (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 15
Ⅳ. 도구연계성과 주요성과 [ 도입전 ] [ 도입후 ] 1. 통합이슈및결함관리미흡 이슈및결함분석에많은공수투입 이슈및결함상태확인어려움 이슈및결함에대한공유부족 2. 개발산출물에대한검증부족 협력업체개발산출물에대한검증에대해내부직원업무로드증가 개발산출물품질저하 1. 통합이슈및결함관리시스템구축 이슈및결함등록창구일원화를통해이슈및결함분석 ( 중복이슈, 영향력파악 ) 이이전에비해적은공수로수행가능 이슈및결함의상태확인이수월해짐으로써프로젝트일정관리에도움을줌 이슈및결함에대한팀차원공유를통해함께해결해야할이슈및결함에대한다각적협의및해결이가능해짐 2. 코드리뷰시스템구축 협력업체개발자들이작성및수정한소스코드에대한내부구성원들의리뷰수행이수월해짐 내부구성원의업무로드감소로인해다른품질활동에추가공수투입이가능해지면서소스코드를포함한전반적인개발산출물품질이향상됨 3. 형상관리시스템및통합빌드환경부재 프로젝트소스코드에대한보안이슈증대 잘못된버전의소스코드가릴리즈되는경우발생 소스코드의변경히스토리정보누락 통합담당자의업무에대한불만사항증가 ( 반복되는수작업에많은공수투입 ) 3. 형상관리시스템및통합빌드환경구축 형상관리시스템의권한관리기능을활용하여프로젝트소스코드에대한보안수준이강화됨 소스코드버전관리및변경히스토리관리가수월해짐 통합담당자의업무로드감소및통합시간단축 page 16
END of DOCUMENT