12. 4. 6, Presentation #2 CM Tools & RE Tools 200511318 김희재 T2 200511326 박현진 200711436 서영주 200913987 이승효
Contents 1. CM Tools Configuration Management CVS - CVSNT SVN - Subclipse Github 2. RE Tools Requirement Engineering JFeature OSRMT
CM Tools - Configuration Management - CVS(Concurrent Version System) - SVN(SubVersioN) - Github 3 (CM&RE Tools)
Configuration Management Configuration Management 형상관리 특정항목의변화에대해관리하면서시스템의통합과일치를보장 Software Configuration Management 소프트웨어버전관리 버전관리 - 소프트웨어개발시에발생하는모든작업을버전화하고소스를버전별로 관리하는것 버전관리시스템의필요성 1. 개발버전과릴리즈버전을섞이지않고쉽게관리할수있다. 2. 소스를잘못수정했더라도기록이남고되돌리기가쉽다. 3. 수정, 추가, 삭제등의기록이모두남고변경사항을추적하기쉽다. 4. 개발자들이따로따로백업을하지않아도된다. 4 (CM&RE Tools)
Configuration Management 버전관리사용 (x) 버전관리사용 1 3 2 4 1 3 2 4 쓰기금지 1 남자가파일을열람하여수정 2 여자가수정하기전파일을 open 3 남자가수정하여파일을저장 4 여자가수정하기전파일을그대로저장 파일에는남자가수정하기전의파일이저장되어있음. 1 남자가파일을열람하여수정 2 여자가수정하기전파일을 open 3 남자가수정하여파일을저장 4 여자가수정하기전파일을저장하려하나, CVS 서버에서여자가업로드한파일이이전버전이므로쓰기가금지됨 5 (CM&RE Tools)
CM Tool 의종류 CVS (Concurrent Version System) VSS (Visual SourceSafe) Clear-Case 시각적소스비교 X O O 빌드관리 X X X CLI O O O 지원플랫폼 Linux, Unix, Win Windows Linux, Unix, Win 버전관리방식 수정병합 예약잠금 예약잠금 제조사 Cyclic S/W MS Rational 가격 무료 80~90만원선 사용자당 800만원 6 (CM&RE Tools)
CM Tools - Configuration Management - CVS(Concurrent Version System) - SVN(SubVersioN) - Github 7 (CM&RE Tools)
CVS (Concurrent Version System) CVS 대부분의오픈소스프로젝트에서사용 혼자하는개발, 팀을이루는개발, 다국적개발등에유용 클라이언트서버구조로잠금상태를예약하지않는수정병합방식으로같은소스의동시작업이가능 수정병합방식 - 동시에하나의파일을작업해도충돌되는부분을확인, 수정가능하다. - 동시작업이가능하므로시간의구애를덜받는다. 종류 WinCVS, CVSNT 등의클라이언트프로그램이존재 이클립스, NetBeans, JBuilder, Idea(inteliJ) 등개발툴에기본으로통합 8 (CM&RE Tools)
CVS (Concurrent Version System) 기능 History 변경사항저장 병합 Branch Tag 소스파일의추가 / 수정 / 삭제. 즉, 모든 History 가 CVS 서버에기록. 작업완료시에작업내용을기록에남길수있음. 버전간의변경사항만을저장하므로백업용량을적게차지 각개발자가작업을끝마쳤을때, 그작업을병합시켜줌으로써, 팀원이하나의공동프로젝트를수행하고자할때도움을줌 개발의주된흐름인메인줄기 (trunk) 의특정진행시점에서갈라져나와소스를변경해도메인줄기에는영향을미치지않음 개발의특정시점에버전을따는기능 Diff 버전과버전, 태그와태그간에소스의차이점을비교 9 (CM&RE Tools)
CVS (Concurrent Version System) 작업사이클 프로젝트생성단계 : 프로젝트를생성하고, CVS 서버에모듈을 import 프로젝트진행단계 - 모든개발자는 import된프로젝트모듈을다운로드 (Checkout). - 다운로드한모듈의소스를변경 / 추가 / 삭제하는등프로젝트를진행 리드개발자 모든개발자 1 init 3 checkout 2 import 4 add/remove 5 update 4 commit 6 conflict 7 반복 (4/5/6) 프로젝트생성단계 프로젝트진행단계 8 tag/ 반복 10 (CM&RE Tools)
CM Tool - CVS << CVSNT >> - Eclipse와연동이가능 - 모든옵션을찾아서선택하므로, GUI를이용한직관적인관리가가능 - 무료!! 11 (CM&RE Tools)
CVSNT CVSNT 의설치 http://www.march-hare.com/cvspro/ 에서설치파일다운로드하여설치 12 (CM&RE Tools)
CVSNT CVSNT 의설치 Server and Client 선택하여설치 13 (CM&RE Tools)
CVSNT CVSNT 의환경설정 CVS 접속계정에관한내용 14 (CM&RE Tools)
CVSNT Repository Configuration Local 에서 Repository 가될경로를지정 Location : 소스를저장할별도의폴더 Name : Location 폴더의드라이브명을제외한절대경로 15 (CM&RE Tools)
CVSNT Service 재가동 Service 를 Stop Start 하여재기동한다. 16 (CM&RE Tools)
CVSNT Repository 경로아래파일생성 지정한경로아래 CVSROOT 폴더와화일들이자동생성된다. 17 (CM&RE Tools)
CVSNT Eclipse 와연동 Windows Open Perspective - Other - CVS Repositories 18 (CM&RE Tools)
CVSNT Repository 설정 CVSNT 서버가설치된컴퓨터 IP ( 여기서는내로컬 PC 이므로 127.0.0.1) Repository 가설치된경로 현재윈도우사용자, 비밀번호 19 (CM&RE Tools)
CVSNT Repository 설정완료 에러없이아래와같이등록이되었다면실질적인작업이마무리되었다고볼수있다. 20 (CM&RE Tools)
CVSNT 프로젝트공유설정 프로젝트공유설정 21 (CM&RE Tools)
CVSNT 모듈의이름을선택하고 프로젝트창에서소스를살펴보면아래와같이파일명뒤에소스버전정보가나타난것을알수있다. 22 (CM&RE Tools)
CVSNT 공유프로젝트폴더생성 CVS Repository 한자료가생성됨. 23 (CM&RE Tools)
CM Tools - Configuration Management - CVS(Concurrent Version System) - SVN(SubVersioN) - Github 24 (CM&RE Tools)
SVN (SubVersioN) SVN Subversion 은 CVS 를대체하기위해개발 소스코드, 바이너리파일등의여러가지형식의파일을관리할수있다. 동작원리 Command Line GUI Client Interface Working copy Management library Client library DAV SVN local Internet Repository Interface SVN Server Subversion Repository 25 (CM&RE Tools)
SVN (SubVersioN) 기존 CVS 와의차이점 SVN CVS 버전관리중앙저장소 ( 형상관리 ) 파일별 파일수정시디렉토리전체의버전이달라짐파일하나의버전이달라짐 즉, 프로젝트를수정시 SVN 은기본적환경을돌려주고, CVS 는일부만돌려줌. 작업상태를 3 일전으로돌릴때 CVS 각파일별로작업 SVN 한번작업으로 3 일전상태로복구 26 (CM&RE Tools)
SVN 의장점 디렉토리이동이편리 CVS 에서는이력을남길수없음 초기프로젝트셋업시디렉토리이동이나파일삭제 / 이름변경이편리 오프라인사용이용이 CVS 에서는항상서버와비교하기때문에오프라인에서는불가 마지막버전과 Diff 가가능 27 (CM&RE Tools)
SVN 의장점 서버하드공간이절약 CVS 를 CVS2SVN 으로변환해본결과 25% 이상의공간이절약됨 초기에는업로드를원본으로올리지만, Diff 내용을 gzip 으로압축 28 (CM&RE Tools)
CM Tool - SVN << Subclipse >> - Eclipse 내에 Subversion 과같은역할을하는플러그인 29 (CM&RE Tools)
Subclipse Subclipse 의실행과정 SVN Repository Exploring 30 (CM&RE Tools)
Subclipse Subclipse 의실행과정 외부저장소 (repository) 설정 사용할주소입력 31 (CM&RE Tools)
Subclipse Subclipse 의실행과정 Checkout 을통해외부저장소에서최신버전을다운받는다. 32 (CM&RE Tools)
Subclipse Subclipse 의실행과정 Export( 업로드 ) 할폴더설정 33 (CM&RE Tools)
Subclipse Subclipse 의실행과정 Show History 지금까지 Export 한기록 34 (CM&RE Tools)
Subclipse Subclipse 의실행과정 Compare 다른버전의기록들과비교가능 35 (CM&RE Tools)
Subclipse Syjsmktest 86 과 syjsmktest 85 36 (CM&RE Tools)
CM Tools - Configuration Management - CVS(Concurrent Version System) - SVN(SubVersioN) - Github 37 (CM&RE Tools)
Github Github 리눅스커널의개발자로유명한리누스토발즈가개발한형상관리툴 분산형형상관리 여러개의로컬저장소를가진다. 38 (CM&RE Tools)
Github 일반 SVN 과 Github 의차이 일반 SVN COMMIT 및 UPDATE시중앙서버로파일이업로드 Commit 전까지의변경사항이사라질수있다. 39 (CM&RE Tools)
Github 일반 SVN 과 Github 의차이 Github 에서는 Push 개념도입. COMMIT : 파일및디렉토리에대한변경사항을 Git의인덱스 ( 로컬 ) 에기록 PUSH : 로컬인덱스및오브젝트변경정보를사용하여원격저장소를업데이트한다. Pull : Fetch From a Remote Repo and Try to merge into the current branch Fetch : Download new branches and data from a remote repository 40 (CM&RE Tools)
Github 설치과정 환경설정 Repository 생성 Push Branch Merge Clone 41 (CM&RE Tools)
Github 설치과정 42 (CM&RE Tools)
Github 환경설정 - Git Bash SSH(Secure SHell) : 보안로그인쉘전통적 ftp, pop, telnet 같은서비스들은보안에취약 Ssh 를통한모든데이터는암호화, 트래픽은압축되어더빠른전송효율얻을수있음. 43 (CM&RE Tools)
Github 환경설정 - Git Bash 입력한메일주소를통해서공개키파일이생성 공개키에대한패스워드를입력하면, 공개키가파일로저장됐음을알림 44 (CM&RE Tools)
Github 환경설정 - Git Bash 윈도우 7 의경우공개키파일이로그인한사용자폴더하위폴더에저장 공개키파일 45 (CM&RE Tools)
Github 환경설정 - Git Bash 공개키파일들을사용자폴더하위에.ssh 폴더생성하여이동한다. 46 (CM&RE Tools)
Github 환경설정 - 계정생성및공개키등록 www.github.com/ 으로접속하여계정을생성 47 (CM&RE Tools)
Github 환경설정 - 계정생성및공개키등록 계정에로그인하여 Account Setting 을한다. 48 (CM&RE Tools)
Github 환경설정 - 계정생성및공개키등록 아까생성했던.ssh 폴더의파일의내용 (txt) 을 Key 에집어넣는다. 49 (CM&RE Tools)
Github 환경설정 - 계정생성및공개키등록 공개키를생성할때의패스워드를입력한다. 50 (CM&RE Tools)
Github 환경설정 - 계정생성및공개키등록 환경설정이다완료되었고, 계정화면이뜬다. 등록해놓은프로젝트들 최근프로젝트의활동내역 51 (CM&RE Tools)
Github Repository 생성 프로젝트이름과프로젝트에대한설명을쓴다. 52 (CM&RE Tools)
Github Repository 생성 생성된 Repositiory 에대한로컬저장소생성명령 프로젝트이름과프로젝트에대한설명을쓴다. 53 (CM&RE Tools)
Github Repository 생성 생성된 Repositiory 에대한로컬저장소생성명령 프로젝트이름과프로젝트에대한설명을쓴다. Git Init 명령전까지는 bash 를통해서만가능 Git init 명령부터 gui 를통해서도가능하다. 54 (CM&RE Tools)
Github Repository 생성 bash 명령어입력을이용시 55 (CM&RE Tools)
Github Repository 생성 init 부터 gui 이용시 56 (CM&RE Tools)
Github Repository 생성 새로운 Repository 가생성됐음을알수있다. 57 (CM&RE Tools)
Github Repository 생성 해당폴더가로컬저장소가됐음을알수있다. 58 (CM&RE Tools)
Github Git 의 gui 사용 GUI 로하는모든기능들은 콘솔명령어로도가능, 그러나 GUI 화면이더이해하기 쉬우므로, 가급적이면 GUI 위주로할것임. 방금추가했던 temp 파일정보와내용 59 (CM&RE Tools)
Github Push PUSH : 로컬인덱스및오브젝트변경정보를사용하여원격저장소를업데이트 COMMIT : 파일및디렉토리에대한변경사항을 Git의인덱스에기록 60 (CM&RE Tools)
Github Push Ssh 파일생성시의패스워드입력 61 (CM&RE Tools)
Github Push Push 완료시버전값이해시값으로나온다. 62 (CM&RE Tools)
Github Push 추가된파일 Push 한파일의수정된내용 63 (CM&RE Tools)
Github Branch & Merge Github 는프로젝트작업내용이시간순으로만일렬로배열되는게아니라, 개발과정에따라동시에병렬로이루어질수있다. 프로젝트의병렬로진행하여 여러부분으로나누거나 Branch 하나로합칠수있다. Merge 64 (CM&RE Tools)
Github Branch 의생성 Git History 를보면현재 Branch 의상태를볼수있다. 녹색태그가브렌치, 현재 4 개로나눠진상태 65 (CM&RE Tools)
Github Branch 의생성 Create new branch 를통해새로운 Branch 를생성한다. 66 (CM&RE Tools)
Github Branch 의생성 프로젝트를병렬로진행하는경우에는어떤게먼저만들어지고, 나중에만들어졌는지알수없기때문에 ID 를해쉬값으로표시 67 (CM&RE Tools)
Github Branch 의생성 생성된브렌치들을로컬저장소에서마우스우클릭을통해작업할브렌치로이동할수있다. 68 (CM&RE Tools)
Github Git history 에서도작업할브렌치를변경할수있다. 69 (CM&RE Tools)
Github Branch 의 commit, push 3/28 일에 commit 3/27 까지반영되어있음 로컬저장소에만 commit 된것이기에 원격저장소에는반영되지않았음 70 (CM&RE Tools)
Github Branch 의 commit, push Branch 생성전 Branch 생성후 71 (CM&RE Tools)
Github Branch 의 commit, push Branch 중 master 를 push Push 결과가원격저장소에반영됨 72 (CM&RE Tools)
Github Branch 의 commit, push 각 branch 별로 push 현황을볼수있다. 73 (CM&RE Tools)
Github Branch 의 commit, push 74 (CM&RE Tools)
Github Merge 병렬로진행된개발과정에서나누어진두 branch 를다시합치는것 75 (CM&RE Tools)
Github Merge 실행과정 Test_4_2_branch 에 test_4_branch 를 Merge 하는과정 Test_4_2_branch 에 test_4_branch 를 Merge 76 (CM&RE Tools)
Github Merge 실행과정 Test_4_2_branch 에 test_4_branch 를 Merge 하는과정 Merge 가완료시 Test_4_2_branch 에 Test_4_branch 가반영됨 77 (CM&RE Tools)
Github Merge 실행과정 Test_4_2_branch 에 test_4_branch 를 Merge 하는과정 78 (CM&RE Tools)
Github Commit 이전상태로돌리는과정 2 1 Commit History 에서원하는버전으로브렌치를설정 79 (CM&RE Tools)
Github Commit 이전상태로돌리는과정 2 Rescan 후에 Revert Changes 하게되면해당버전으로돌아간다. 1 80 (CM&RE Tools)
Github clone 그렇다면다른사람과이프로젝트로협업을하게된다면? git clone을사용하면저장소소스코드를그대로 checkout 받을수있다. 다른계정의프로젝트주소값 git clone 명령어를이용해다른계정의프로젝트를복사하여작업할수있음. 81 (CM&RE Tools)
Github clone 다른계정의프로젝트주소값 82 (CM&RE Tools)
CM Tools Summary. CVS 파일단위의 commit SVN Atomic commit 디렉토리이동이편리 오프라인에서사용이용이 log 확인등의관리가용이 빠른속도와효율적인용량 구성요소가많아설치가불편 Github 분산형형상관리 - 네트워크환경이좋지않은곳에서도빠르게 Repository에반영가능. - 로컬마다별도의형상관리를할수있다. Social Coding - 다른개발자들의흥미있는프로젝트에언제든지참여할수있다. 83 (CM&RE Tools)
RE Tools - Requirement Engineering - JFeature - OSRMT 84 (CM&RE Tools)
Requirement Engineering 정의 시스템요구사항문서를생성, 검증, 관리하기위하여수행되는 구조화된활동의집합 목표 개발하려는소프트웨어특징과개발과정에서제약요소를 분명히파악하고명세화해야함 소프트웨어사용분야의증가 복잡하고다양한요구사항을수용해야함 요구사항분석을명확히파악하는과정또한복잡하고어려워짐. 전체개발싸이클에최신의요구사항을 적용시키기위한관리체계필요 RE Tool!! 85 (CM&RE Tools)
RE Tools - Requirement Engineering - JFeature - OSRMT 86 (CM&RE Tools)
JFeature Jfeature 요구사항작성가능 Eclipse 에서손쉽게작동가능 Junit 과 Testcase 와요구사항을연결 (Mapping) 시켜 Coverage Report 를생성 Jfeature 로정의된요구사항을 CSV 와 XML 로 Import / Export 가능 87 (CM&RE Tools)
JFeature Jfeature 설치 : Eclipse Plugin 88 (CM&RE Tools)
JFeature Jfeature 설치과정 89 (CM&RE Tools)
JFeature Jfeature 설치과정 90 (CM&RE Tools)
JFeature Jfeature 사용 : Coverage Report 생성 91 (CM&RE Tools)
JFeature Jfeature 사용 : Coverage Report 생성 기존프로젝트에서 Jfeature 파일을추가할프로젝트를선택 92 (CM&RE Tools)
JFeature Jfeature 사용 : Coverage Report 생성 + 를눌러항목을추가하면새항목이추가된다. 93 (CM&RE Tools)
JFeature Jfeature 사용 : Coverage Report 생성 테스트하려는클래스이름입력 해당클래스에서테스트하려는 Method 선택한후, Append 한다. 94 (CM&RE Tools)
JFeature Jfeature 사용 : Coverage Report 생성 95 (CM&RE Tools)
JFeature Jfeature 사용 : Coverage Report 생성 Junit 으로프로젝트실행 Run as Junit Test 96 (CM&RE Tools)
JFeature Jfeature 사용 : Coverage Report 생성 Coverage Report 를생성 97 (CM&RE Tools)
JFeature Jfeature 사용 : Coverage Report 생성 Category 별분류 전체 Coverage 요구사항별분류 초록색요구사항만족, testcase 성공 빨간색요구사항불만족, testcase fail 노란색요구사항 testcase 가 mapping 되지않음 98 (CM&RE Tools)
JFeature Jfeature 사용 : Export 99 (CM&RE Tools)
JFeature Jfeature 사용 : Export 100 (CM&RE Tools)
JFeature Jfeature 주의사항 프로젝트시작이름이 Test* 의형태라면 JFeature가내부의클래스들을인식을못함. 폴더이름 Java로지어도말아먹음. JUnit쓰는데에러뜸. 101 (CM&RE Tools)
RE Tools - Requirement Engineering - JFeature - OSRMT 102 (CM&RE Tools)
OSRMT OSRMT(Open Source Requirements Management Tool) 무료요구사항관리도구 요구사항을 Feature / Requirement / Design / Implementation / TestCase 로구분하여기술할수있다. 정의된 Requirement 들간의의존성을설정하여추적관리가가능 Requirement 가변경된경우, 어떤 Requirement 에영향을미치는지여부를그림으로확인할수있다. 103 (CM&RE Tools)
OSRMT OSRMT 사용 104 (CM&RE Tools)
OSRMT 새프로젝트의생성 105 (CM&RE Tools)
OSRMT 프로젝트내의요구사항기술 요구사항을 Feature / Requirement / Design / Implementation / TestCase 로구분하여기술할수있다. 106 (CM&RE Tools)
OSRMT Requirement 변경시 Requirement 가변경된경우, 어떤 Requirement 에영향을미치는지여부를그림으로확인 107 (CM&RE Tools)
Jfeature & OSRMT 비교 JFeature OSRMT 플랫폼 Eclipse Plug-in 독립플랫폼 언어 JAVA 에제한적언어에독립적 자동화 요구사항에대한테스트케이스연동 요구사항변경에대한추적관리 사용자수개인다수 비용무료 + 상용무료 보고서제공제공 108 (CM&RE Tools)
References. Books 실용주의프로그래머버전관리 Using CVS 이클립스기반 프로젝트 필수유틸리티 URL CVSNT : http://blog.naver.com/fbstar?redirect=log&logno=100115354707 Git : http://wiki.kldp.org/wiki.php/docbooksgml/ssh-kldp#aen77 http://soyoja.com/429 http://binggrec.tistory.com/116 http://occamsrazr.net/tt/254 109 (CM&RE Tools)