2020년/정처기
[2020 정보처리기사 실기]Section 11.제품 소프트웨어 패키징 <2>
위지원
2020. 5. 10. 20:42
이전글
2020/05/10 - [2020년도 상반기/정처기] - [2020 정보처리기사 실기] Section 11.제품 소프트웨어 패키징 <1>
소프트웨어 버전 정보
형상 관리
소프트웨어의 변경사항을 관리하기 위해 개발된 일련의 활동
형상관리의 기능
- 형상 식별 : 이름과 관리번호를 부여하고 계층구조로 구분
- 버전 제어 : 형관 항목 관리를 위한 절차와 도구를 결합
- 형상 통제(변경 관리) : 현재의 기준선(Base Line)이 잘 반영될 수 있도록 조정하는 작업
- 형상 감사 : 기준선의 무결성을 평가하기 위해 공식적으로 승인하는 작업
- 형상 기록(상태 보고) : 보고서 작성
소프트 웨어 버전 등록 관련 주요 용어
- 저장소 : 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장
- 가져오기(import) : 초반에 아무것도 없는 저장소에 파일을 복사
- 체크 아웃 : 저장소에서 파일을 받아옴
- 체크 인 : 수정이 완료 된 파일을 저장소에 갱신
- 커밋 : 체크인을 수행 할 때 이전에 갱신된 내용이 있는 경우 충돌을 알리고 diff도구를 이용해 수정한 후 갱신
- diff : 코드에서 이전버전과 새로운 버전의 서로 다른 부분을 찾아줌
- 동기화(update) : 저장소에 있는 최신 버전으로 자신의 작업 공간을 동기화
소프트웨어 버전 등록 과정
가져오기 > 체크 아웃 > 커밋 > 업데이트 > diff
소프트웨어 버전 관리 도구
- 공유 폴더 방식 : 개발이 완료된 파일을 약속 된 공유 폴더에 매일 복사해서 관리
- SCCS, RCS, PVCS, QVCS 등
- 클라이언트/서버 방식 : 중앙 시스템(서버)에 저장하고 관리되는 방식
- CVS, SVN, SVSNT, Clear Case, CMVC, Perforce
- 분산 저장소 방식 : 원격 저장소와 개발자의 pc의 로컬 저장소에 함께 저장관리
- Git, GNU arch, TeamWare 등
Subversion(SVN)
CVS를 개선한 것으로 아파치 소프트웨어 재단에서 00년도에 발표
- cvs의 문제였던 파일/디렉터리의 이름 변경/이동 가능
- 클라이언트/서버 구조
- 모든 개발 작업은 TRUNK 디렉터리에서 수행
- 추가 작업은 BRANCHES디렉터리 안에 별도의 디렉터리를 만들어 완료후 TRUNK 디레겉리와 MERGE
- commit 할때마다 revision+=1
- 서버는 주로 유닉스
- 오픈 소스
- 명령어
add | 새로운 파일이나 디렉터리를 버전 관리 대상으로 등록 |
commit | 클라이언트 소스 파일을 서버의 소스 파일에 적용 |
update | - 최신 commit 이력을 클라이언트 소스 파일에 적용 - commit 전에는 매번 update 수행 |
checkout | 서버에서 클라이언트로 받아옴 |
lock/unlock | 서버의 파일/디렉터리 lock/unlcok |
import | 맨 처음 소스파일 저장, 초기에 한번만 사용 |
export | 순수한 소스 파일만을 서버에서 받아옴 |
info | 지정 파일의 위치/마지막 수정일자 등에 대한 정보 표시 |
diff | 이전 리비전과 파일 차이 표시 |
merge | 다른 디렉터리에서 작업된 버전 관리 내역을 기본 개발 작업과 병합 |
Git
리누스 토발즈가 05년에 리눅스 커널 개발에 사용할 관리 도구로 개발
- 분산 버전 관리 시스템으로, 로컬/원격 저장소가 존재
- 브랜치를 이용하면 기본 버전 관리 틀에 영향을 주지 않으면서 다양한 형태의 기능 테스팅이 가능
- 파일의 변화를 스냅샷(영/소문자가 혼합된 40자리 문자열로 표시)으로 저장
- 스냅샷은 이전 스냅샷의 포인터를 가짐
- 명령어
add | - 지역 저장소에 저장하기 위해 스테이징 영역(바로 지역 저장소에 저장하지 않고 잠깐)에 추가 - --all 옵션으로 모든 파일 스테이징 영역 추가 가능 |
commit | - 지역 저장소에 저장 - -m 옵션으로 메시지 부여 가능 |
branch | - 새로운 브랜치 생성 - 최초로 commit하면 master 브랜치 생성 - commit 할때마다 해당 브랜치는 가장 최근의 commit한 내용을 가르킴 - --d 옵션으로 브랜치 삭제 가능 |
checkout | - 지정한 브랜치로 이동 - 브랜치를 이동하면 이동한 곳을 head 포인트가 가르키게 됨 |
merge | 지정한 브랜치와 head가 가르키는 브랜치를 병합 |
init | 지역 저장소 생성 |
remote add | 원격 저장소에 연결 |
push | 원격 저장소에 로컬 저장소 변경 내역 반영 |
fetch | 원격 저장소의 변경 이력만 가져옴 |
clone | 원격 저장소의 전체 이력을 가져옴 |
fork | 지정한 원격 저장소의 내용을 자시니의 우너격 저장소로 복사 |
예시
> subtest 브랜치 생성 후 subtest 브랜치로 이동해 변경 내용 저장
> master 브랜치로 이동한 후 subtest 브랜치의 커밋 내역을 마스터 브랜치에 병합
$ git branch subtest
$ git checkout subtest
$ git add --all
$ git commit -m "subtest commit"
$ git checkout master
$ git merge subtest
빌드 자동화 도구
빌드
소스 코드 파일들을 컴파일한 후 여러 개의 모듈을 묶어 실행 파일로 만드는 과정
Jankins
java 기반의 오픈 소스 형태로 가장 많이 사용 됨
- 서블릿 컨테이너에서 실행되는 서버 기반 도구
- 클라이언트의 요청 처리용 작은 프로그램(server side applet)인 서블릿을 실행하고 서블릿의 생명주기를 관리하는 역할
- SVN, Git등 대부분 형상 관리 도구와 연동 가능
- 여러 대의 컴퓨터를 이용한 분산 빌드/테스트 가능
Gradle
Groovy 기반으로 한 오픈 소스 형태의 자동화 도구, 안드로이드 앱 개발 환경에서 사용
- 안드로이드 뿐만 아니라 플러그인 설정하면 다른 언어로 빌드 가능
- Groovy를 사용해서 만든 DSL(Domain Specific Language)를 스트립트 언어로 사용
- DSL : 영역이나 용도에 맞게 기능을 구성한 언어
- 실행할 처리 명령들을 모아 Task로 만든 후 태스크 단위로 실행
- 빌드 캐시 기능 지원으로 속도 향상
모든 내용이 끝났습니다 이제 다시 책에 표시된 중요 등급(ABC)를 토대로 한번 더 공부하면 된다!!! 아싸 호랑 나비보벳따우
요약 보러가기
2020/05/20 - [2020년도 상반기/정처기] - [정보처리기사 실기 요약] 요구사항 분석