• [2020 정보처리기사 실기]Section 11.제품 소프트웨어 패키징 <2>

    2020. 5. 10. 20:42

    by. 위지원

    이전글

    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년도 상반기/정처기] - [정보처리기사 실기 요약] 요구사항 분석