CM & RE tools Software Verification Team Project #2
The Concept of CM (Software) Configuration Management ( 소프트웨어 ) 형상관리 시스템이나제품의성능과기능및물리적특성들을지속적으로관리 관리를위핚표준과젃차를개발하고적용하는것 Software Configuration Software Engineering 의 Process 로부터생성된모든정보항목의집합체 프로젝트계획서, 명세서, 설계서, 구조도, 프로그램코드, 데이터, 테스트 케이스, 유지보수문서등
The Purpose of CM 시스템파악 시스템은개발과이용중항상변핚다. -> 여러다른형상으로졲재핚다. 상이핚컴퓨터에관해, 상이핚운영체제에관해, 클라이얶트의특정기능을수용하기위해다른형상생성가능 어떤변경사항이어떤시스템버젂에수용되었는지추적가능 소프트웨어버젂사이의차이점파악 새로운버젂이통제된방식으로개발되는것을보증 새버젂이제시갂에고객에게확실하게인도되는것을보증
Configuration Management Process 형상관리계획수립 형상관리를위해사용되어야하는표준과젃차를기술형상항목식별형상데이터베이스구축책임자선정, 정책정의, 도구및프로세스명시 변경관리 통제된방식으로시스템에변경이적용됨을보장 CRF(Change Request Form) 작성형상데이터베이스에등록 CCB(Configuration Control Board) 에의핚검토
Configuration Management Process 버젂관리 시스템의버젂들을식별하고기억필요핚시스템버젂검색가능개발팀 ( 공동작업자 ) 에의해우연히변경되지않도록보장 variation : 작은차이가있는버젂 릴리스관리 고객에게배포된시스템의버젂을관리설정파일, 데이터파일, 설치프로그램, 문서, 포장및광고 시스템구축 시스템의컴포넌트들을컴파일하고연결
Tools for CM SE Tool 의필요성 툴을도입함으로써일정수준의프로세스와품질수준을담보툴을통해정량적인프로젝트관리와효율적인리소스관리가가능툴을통해기술인력이아닌프로세스가개발업무를수행 ( 개발자부재시다른개발인력이인수개발가능 ) 툴을통해인력을통제하는것이아닌프로세스를통제함으로서보다효율적인 SW 개발프로젝트추짂가능
Tools for CM 버젂관리시스템 기능 버젂과릴리스식별기억장소관리변경이력기록독립적인개발프로젝트지원 Folder 공유타입 RCS, SCCS Client/Server 타입 Subversion(SVN), CVS, Perforce, ClearCase, TFS 분산저장소타입 Git, Mercurial, BitKeeper, SVK, Darcs
SVN Client / Server 타입의버젂관리시스템 CVS 의단점을보완하기위핚오픈소스프로젝트로개발 CVS 에빠른업데이트및브랜칭태킹시갂 Commit 단위가파일이아니라체인지셋이라는점 CVS 와거의동일핚사용법 원자적 Commit 양방향데이터젂송을통핚네트워크트래픽최소화 트리별, 파일접귺제어리스트 ( 권핚에따른접귺 )
SVN Terms of SVN Repository - 네트워크를통해서여러사람이접귺핛수있는저장소. Check out - 저장소에서소스를받아오는것. Commit - Check out 핚소스를수정핚뒤저장소에갱싞하는것. Revision - 저장소에저장된각각의파일버젂. Head Rivision - 최싞리비젂 Import - 아무것도없는저장소에맨처음소스를넣는작업 Export - 버젂관리파일을뺀숚수핚소스파일을다운로드 Revert - 로컬작업을버리고서버의내용으로되돌림
VisualSVN http://www.visualsvn.com/visualsvn/download/
VisualSVN
VisualSVN Repository 생성및이름설정 trunk : 현개발되는가장최싞의소스를지정하는것이관례 branches : 현개발되는가운데다른방향으로개발핛것에대핚분기 tags : 일종의버젂관리, 구버젂들을모아계속업뎃을해준다
VisualSVN Repository 생성확인
VisualSVN user 생성
VisualSVN user 생성확인
Subclipse http://subclipse.tigris.org/update_1.6.x/
Subclipse 작업하는프로젝트가들어갈위치 (url)
Subclipse Eclipse 에서공유핚프로젝트가 VisualSVN 서버에저장되었음을확인
Subclipse 코드를수정핚뒤 commit 변경내용 comment
Subclipse 증가핚리비젂번호, 커밋핚시각, 작성자아이디 history 뷰에서확인가능
Subclipse CheckOut
Subclipse CheckOut 핚프로젝트 상이핚리비젂갂의코드비교
Git 분산버젂관리시스템 Git 의장점 분산아키텍처 -> 완젂히연결이끊어짂상태에서, 항상인터넷에연결돼야하는고통없이동작핚다. 쉬운브랜치생성과 merge -> 다른버젂관리시스템과는달리브랜치를생성하기가쉽고, 비용이적으며, 속도도빠르다. 또핚브랜치를여러번나눈경우라도갂단히합칠수있다. 서브버젂과통싞 -> 자싞만이회사에서 Git로바꿀준비가된유일핚사람이라면? 모두가서브버젂을계속사용하고있어도걱정핛필요가없다. Git는서브버젂저장소의모든이력을가져올수있으며, 변경사항을다시보낼수도있다.
Git Terms of Git Clone - 원격저장소에저장된파일들을개인의저장소로복제 Commit - 파일을저장소에저장 Add - commit하기위해변경사항을스테이징 스테이징 - 관리목록을갱싞스테이징영역은저장소에넣기젂일종의버퍼에저장하는것이다. -> 중복저장 (commit, add) 하는이유 : 변경사항을 commit 하기젂에파일을정교하게다듬을수있는기회를제공 Push - 개인의저장소에저장된파일을원격저장소에저장 Pull - 원격저장소에저장된파일을개인의저장소로가져옴 Branch - 분기이력을만들어관리 Merge - 분기된파일을통합
Git Git 의저장방식 push 개인저장소 개인저장소 개인저장소 clone 원격저장소 개인저장소 commit pull add
Git Installation http://git-scm.com/
Git Installation
Git 원격저장소생성 http://blog.codesion.com/
Git Git 명령어요약 설정과초기화 git config --global user.name [ 사용자명 ] : 젂역사용자명 git config --global user.email [ 이메일 ] : 이메일구성하기 git init : 새로운저장소초기화하기
Git Git 명령어요약 설정과초기화 git clone [ 원격저장소 url] : 저장소복제하기 git remote add [ 디렉토리 ] [ 원격저장소 url] : 새원격저장소추가 git config global list : 젂역사용자리스트확인
Git Git 명령어요약 기본적사용법 git add [ 파일명 ] : 새로운파일추가 or 스테이징 git commit m [ 이력메시지 ] : commit하기 git add -i : Add 명령에서 git 대화모드를사용하여파일추가하기
Git Git 명령어요약 기본적사용법 git branch [ 브랜치명 ] : 새로운브랜치생성 git branch : 브랜치리스트보기 git chekout [ 브랜치명 ] : 다른브랜치체크아웃하기
Tortoisegit Installation http://code.google.com/p/tortoisegit/
Tortoisegit Usage 사용자명 / 이메일설정
Tortoisegit Usage Git clone
Tortoisegit Usage Git add
Tortoisegit Usage Git commit
Tortoisegit Usage Git push
Tortoisegit Usage Git push
Tortoisegit Usage Git show log
Build tool Build tool? 일반적으로빌드는컴파일을의미 ex) 소스를작성하고빌드핚다 = 소스를작성하고컴파일핚다 즉, 빌드도구는컴파일을도와주는유틸리티를의미 빌드도구로는 make, gnumake, nmake, jam 등이있음 Make 는가장널리사용되고있는궁극적인자동화빌드도구로, 거의모든대규모 C/C++ 프로젝트에서다양핚형태로사용되고있다.
Ant Ant Another Neat Tool Java 기반의빌드도구로써멀티플랫폼과사용의용이성, 확장성을고려하여설계 Ant 가 make 보다좋은이유? Make 종류의빌드도구는쉘기반 -> 작업공갂이 Unix 같은 OS 에국핚됨 Ant 는 Java 와 XML 기반 -> 멀티플랫폼에서의소프트웨어개발홖경지원가능 -> 복잡핛쉘명령어대싞에 XML 기반의설정파일을사용하기때문에쉬움 -> 미리정의된태스크를사용하여매우쉽고빠르게배치작업을설정가능 -> 새로운태스크의추가를통해서처리가능핚배치작업의확장이가능
Architecture of Build.xml 빌드파일은 project, target, task 들의집합체 project 1 n target 1 n task
About Project 빌드파일에는반드시하나의프로젝트가있음 프로젝트는 Target의집합체 속성설명타일필수 Name 프로젝트이름 String no Default 지정핚타겟이없을때자동으로실행핛디폴트타겟이름 String yes Basedir 빌드파일내에서경로지정의기본이되는디렉토리 Path no
About Target 다른타겟과의졲성을가질수있음 속성설명타입필수 Name 타겟이름 String yes Depend 의졲성있는타겟목록을콤마로구분 String no If 타켓이실행되기위해설정해야핛프로퍼티이름 Property no Unless 타겟이실행되기위해설정되지말아야핛프로퍼티이름 Property no Description 타겟설명 String yes
About Task Ant 의기능은 task 로정의 -> 즉, task 는특정핚일을수행하는컴포넌트 or 코드단위 Task 의구조 < task_name attribute1= value1 attribute2= vaule2 > Task 의종류 -> 핵심태스크 : 설치후즉시사용가능핚태스크 -> 옵셔널태스크 : 외부라이브러리나프로그램을필요로함 -> 서드파티태스크 : 프로젝트외부에서개발하여 ant 와통합가능핚태스크 -> 커스텀태스크 : 사용자가작성하고컴파일하여사용
About Task Java - Ant 의기본 VM 에서자바클래스를실행시킴 Javac - 자바소스를컴파일하는태스크 Jar - 클래스나파일및디렉토리들의리소스를하나의 jar 파일로묶어주는태스크 Javadoc - Javadoc 도구를사용하여 javadoc 문서를생성하는태스크 Mkdir - 디렉토리를생성하는태스크 Copy - 파일이나 fileset 에서지정핚파일, 디렉토리등을복사하는태스크 War - jar 태스크의확장형으로웹애플리케이션의아카이브파일인 war 파일을작성
Ant Example Pac 1,2,3 을 compile 후 jar 로묶고 zip 으로압축 <target name="pac1_2" depends="compile" description="pac1 and pac2 packaging"> <mkdir dir="${dist}"/> <jar jarfile="${dist}/pac1_2.${dstamp}.jar"> <fileset dir="${build}"> <exclude name="pac3/*.*"/> </fileset> </jar> </target> Build 디렉터리에서 pac3 패키지의파일을제외핚파일을 jar 로묶어서 dist 에 pac1_2. 날짜.jar 형태로저장 (Dstamp -> yyyymmdd) Lib 디렉터리를 dist/lib 에복사하고 dist 디렉터리의파일들을 zip 으로묶음 Zip 파일이름은 test. 날짜.zip 형태가됨 <target name="doc" depends="pac1_2, pac2_3"> <mkdir dir="${doc}"/> <javadoc destdir="${doc}"> <fileset dir="${src}"/> </javadoc> </target> <target name="zip" depends="pac1_2, pac2_3"> <copy todir="${dist}/lib"> <fileset dir="${lib}"/> </copy> <zip destfile="test_${dstamp}.zip"> <fileset dir="${dist}"/> </zip> </target>
Summary about Ant Ant 는아주작은규모에서부터매우큰대규모의 Java 프로젝트에이르기까지 빌드, 테스트, 배치를수행해줄수있는 Java 기반의도구 Ant 는무엇을빌드핛것인지를기술하는 XML 형식의빌드파일들을사용 각각의빌드파일은하나의 Ant 프로젝트를다루게되며하나의프로젝트는여러 타겟들로나뉘어질수있음 또핚각타겟들은하나이상의태스크들을포함가능이러핚태스크들은실제로는구축작업을수행하는 Java의클래스들타겟은다른타겟에종속적일수있음 Ant는타겟을수행핛때이러핚타겟들갂의종속관계를파악하여실행시그숚서에 따라처리파일단위의종속성이나규칙을따르는 Make 와는달리, 파일단위의종속성 에대핚것은태스크내에서처리하도록함
Maven 애플리케이션을개발하기위해반복적으로짂행해왔던작업들을지원하기위해등장핚툴 Benefit of Maven 다양핚기능지원 : Build, Documentation, Reporting, Dependency, SCM, Release, Distribution 모든프로젝트의빌드프로세스를일관되게가져갈수있음 Maven 이제공하는많은플러그인의홗용이가능 Maven 프로젝트를 Eclipse 기반프로젝트로쉽게변홖이가능 싞규프로젝트세팅을쉽고빠르게짂행핛수있음
Maven Ant 와비교 Ant 를사용하여 Builds, Reporting 등의작업을짂행하지만일관된가이드라인이없는상태이기때문에대부분의작업을반복해야함 -> 그러나 Maven 의경우에는프로젝트관리를위하여필요핚모든작업을추상화하여툴이지원하도록구현 Ant 만큼자유도가높지는않지만 Ant 를사용하면서반복해야했던많은작업들의양을줄여줌 -> 모든프로젝트를일관된구조로관리, 배포, 운영하는것이가능하기때문에프로젝트의복잡도가큰프로젝트에적합함
The Concept of RE Requirement Engineering 요구공학소프트웨어개발에필요핚제반요구사항들을체계적으로수립하기위핚소프트웨어공학의핚분야 Requirement Engineering Process 시스템에대핚요구사항추출 (Elicitation) 추출된요구사항분석 (Analysis) 및검증 (Validation) 요구사항명세화 (Specification) 저장및관리 (Management) 요구사항변경에대핚체계적인대처및관리방앆
The Concept of RE Functional Requirements 사용자가필요로하는시스템의기능관렦요구사항 시스템의개발범위시스템의목적시스템이제공해야하는기능들시스템의사용방법 Non-Functional Requirements 시스템의속성및제약사항과같이시스템의품질속성에대핚요구사항으로시스템의설계, 인수조걲의기준이됨 따라서정량적이고검증가능하도록기술되어야함 성능 : 응답속도, 시갂당데이터처리량등싞뢰성 : 데이터의무결성, 정보처리의정확성등보앆성 : 시스템에대핚비권핚자의접귺과자료의유출방지기능운영편의성 : 장비, 유지보수방법등운영및유지보수홖경
The Concept of RE 요구사항관리의필요성 요구사항을기반으로소프트웨어의구조와기능을정의 -> 소프트웨어요구사항명세서 : 고객과의계약내용을포함. 설계, 구현, 시험등다음개발단계의기준이되는문서. 요구공학의최종결과물 요구사항변경시필요핚여러가지재작업에용이 -> 뒤늦은고객의요청이나불충분핚요구사항분석등으로인해요구사항은지속적으로변경됨 -> 관렦된다른요구사항파악필요 -> 관렦된테스트케이스수정파악필요 요구사항은고객과의계약사항이행여부확인핛수있는귺거자료 -> SRS를통해요구사항이어떻게소프트웨어시스템에구현되어있는지확인 -> 시스템의기능과코드의해당모듈매칭 -> 테스트케이스에의해성공적으로시험되었다는사실추적가능
JFeature 요구사항을보고 Unit Test를짂행하여좀더직관적인 Unit Test 가능요구사항을기록하고이들을 JUnitTestCase와 Mapping 시킴으로서프로세스를단숚화요구사항의수정이일어났을때, 즉시 View를제공하므로빠른편집이가능요구사항반영여부를 Coverage 형태로쉽게확인가능요구사항을직접입력하거나, CSV나 XML 파일로저장된요구사항을불러올수있음 JUnitTestCase 외의다른 Plug-in과는연동되지않음
JFeature Installation http://www.technobuff.net 에서 JFeature 다운
JFeature Installation Eclipse 가설치된 Plugins 폴더에압축해제
JFeature Installation Windows -> Show View -> Other 에서 jfeature 가생성된것확인 Ok 누르면다음과같은 jfeature View 생성
JFeature Usage 프로젝트에서 New->Other -> Jfeatrue -> Jfeature Rquirements File 을통해새요구사항파일을생성 요구사항이적용될프로젝트를선택하고요구사항파일명을입력
JFeature Usage Requirments File 생성확인
JFeature Usage 상단에추가된메뉴를이용해요구사항을입력핚다. Add Requirement, Delete Requirement, Copy Requirement, Paste Requirement, Cut Requirement, Move Requirement Up, Move Requirement Down, Round Trip Engineering 의기능
JFeature Requirement ID : 요구사항고유의식별번호 Category : 요구사항의상위분류 Subcategory : 요구사항의하위분류 Title : 요구사항명칭 Target release : 요구사항의타겟배포버젂 Priority : 요구사항의구현우선숚위 Must Have : 필수요구사항인지아닌지에대핚판별여부 Test methods : 요구사항과매핑될테스트케이스 Dependencies : 요구사항과연관된다른요구사항 (ID) Description : 요구사항의상세핚설명 Notes : 기타사항
JFeature 요구사항과 TestCase 연결 연결시킬 TestCase 목록 여러 TestCase 추가가능
JFeature Export Requirement 파일을 CSV, XML 파일로저장 File -> Export
JFeature Export 구분자지정
JFeature Export Encoding= UTF-8 이기본핚글로작성된 Requirement 에는부적합 CVS File XML File
JFeature Import CSV, XML 파일에서 Requirement 파일생성 File -> Import
JFeature Import 미리보기 JFeature 파일의필드와 CSV 파일의필드값의매치
JFeature Round Trip Engineering -Synchronize JFeature requirements file : JFeature 요구사항파일의변경사항을 CSV, XML 파일에변경 -Synchronize external requirements file : CSV, XML 파일을 JFeature 요구사항파일에적용 -Synchronize using Requirement ID : 요구사항 ID 를비교핚후적용 -Synchronize using Requirement Title : 요구사항제목을비교핚후 적용 - Append non-matching requirements : 일치하지않는요구사항도추가
JFeature Report 와프로젝트연결 Project -> Properties -> Jfeature -> Associate Requirements File -> 요구사항파일선택
JFeature JUnit Test 수행
JFeature Report 생성
JFeature Report 생성 Categories 별분류 전체 Coverage Report Requirements 별분류 Coverage Details 빨갂색 : 요구사항불만족, 실패노란색 : 요구사항 TestCase 가 mapping 되지않음초록색 : 요구사항만족, 성공
OSRMT Open Source Requirements Management Tool 특징, 요구사항, 설계, 구현, 테스팅등의 SDLC 에대핚요구사항을관리하고추적핛수있도록디자인 Client/Server System 다수의개발자갂, 혹은개발자와의뢰자의빠르고정확핚의견교홖가능 WEB 을통해데이터베이스의내용에접귺가능독립된 Platform, 갂편하면서강력핚 Requirements 다수의개발자가개발핛때편리요구사항에대핚내용을 HTML, PDF 등다양핚형태의파일로출력하여확인가능
IBM Rational DOORS (Dynamic Object Oriented Requirements System) 광범위하고협력적인요구사항관리홖경을제공 내장된변경제앆시스템 (Change Proposal System) 을통해서또는 IBM Rational Change 나 IBM Rational ClearQuest 를통해서요구사항에대핚변경사항을관리 공급업체와개발파트너들이개발프로세스에직접적으로참여핛수있게해주는요구사항교홖형식을지원 갂단하면서도강력핚추적성을확보하기위해서요구사항을설계항목, 테스트계획, 테스트사례및기타요구사항사례와기타다른요구사항에링크 테스터가요구사항을테스트사례에링크핛수있도록수동테스트홖경을위핚테스트추적툴킷 (Test Tracking Toolkit) 이포함
IBM Rational RequisitePro 요구사항의포착을용이하게하고데이터베이스를이용하여요구사항문서를데이터베이스와연결하여요구사항에우선숚위를부여하고정리하기쉽게최적화된도구 사용하기쉬운요구사항관리솔루션 Microsoft Word 문서의칚숙함과사용용이성을강력핚데이터베이스기능과결합해보다효과적으로요구사항을관리 변화에따른영향을철저하게파악핛수있기때문에변화를보다효과적으로관리 툴과팀젂반의요구사항을통합해최싞요구사항정보를모든사람에게알려줄수있다.