소프트웨어 버전 등록
소프트웨어 패키징 형상 관리
- 형상관리는 소프트웨어의 변경 사항을 관리하기 위한 활동
형상 관리의 중요성
- 지속적으로 변경사항을 체계적으로 관리 및 추적할 수 있음
- 발견된 버그나 수정 사항을 추적
- 무절제한 변경 방지
형상 관리 기능
- 형상 식별 : 대상에 이름과 관리 번호를 부여하고 계층 구조로 구분하여 수정 및 추적이 용이하도록 하는 작업
- 버전 제어 : 소프트웨어 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고 특정 절차와 도구를 결합하는 작업
- 형상 통제 : 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선이 잘 반영될 수 있도록 하는 작업
- 형상 감사 : 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
- 형상 기록 : 형상의 식별, 통제, 감사 작업의 결과를 기록, 관리하고 보고서를 작성하는 작업
소프트웨어 버전 등록 관련 주요 용어
- 저장소(Repository) : 형상에 대한 정보들이 저장되어 있는 곳
- 가져오기 : 아무것도 없는 저장소에 처음으로 파일 복사
- 체크아웃 : 저장소에서 소스 파일, 버전 관리를 위한 파일을 받아옴
- 체크인 : 체크아웃으로 받아온 파일을 수정 후 저장소에 새로운 버전으로 갱신
- 커밋 : 체크인 수행 시 이전에 갱신된 내용이 있는 경우 충돌을 알리고 diff 도구를 이용해 수정한 후 갱신
- 동기화 : 저장소에 있는 최신 버전을 동기화
소프트웨어 버전 관리 도구
공유 폴더 방식
- 버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되어 관리
클라이언트/서버 방식
- 버전 관리 자료가 서버에 저장되어 관리
- 서버의 자료를 자신의 PC로 복사하여 작업 후 변경 내용을 서버에 반영
- 모든 버전 관리는 서버에서 수행
분산 저장소 방식
- 버전 관리 자료가 하나의 원격 저장소와 분산된 PC의 로컬 저장소에 함께 저장되어 관리
- 원격 저장소의 자료를 자신의 로컬 저장소로 복사하여 작업 후 변경 내용을 로컬 저장소에서 버전 관리 후 이를 원격 저장소에 반영
Subversion(SVN)
- 아파치 소프트웨어 재단에서 2000년에 발표
- 클라이언트/서버 방식
- 모든 작업은 trunk 디렉토리에서 추가 작업은 branches 디렉토리 안에 별도의 디렉토리를 만들어 작업 후 trunk 디렉토리와 병합
- 커밋 시 커밋의 버전인 리버전이 1씩 증가
- 서버는 주로 유닉스에서 사용
- 명령어
-> add : 새로운 파일이나 디렉토리를 관리 대상으로 지정
-> commit : add한 소스파일을 서버의 소스파일에 적용
-> update : 서버의 최신 commit 이력을 클라이언트 소스에 적용
-> checkout : 서버에서 버전 관리 정보와 소스 파일을 받아옴
-> import : 아무것도 없는 서버의 저장소에 맨 처음 소스 파일을 저장
-> export : 버전 관리 정보 빼고 소스 파일만 서버에서 받아옴
-> info : 지정된 파일에 대한 정보를 표시
-> diff : 지정된 파일이나 경로에 대해 이전 리버전과의 차이를 표시
-> merge : 다른 디렉토리에서 작업된 버전 관리 내역을 기본 개발 작업과 병행
Git
- 리누스 토발즈가 2005년에 개발
- 분산 저장소 방식
- 버전 관리가 지역 저장소에서 진행되어 버전 관리가 신속하게 처리되고, 원격 저장소나 네트워크에 문제가 있어도 작업 가능
- 브랜치를 이용하여 기본 버전 관리 틀에 영향을 주지않으면서 다양항 형태의 테스팅 가능
- 파일의 변화를 스냅샷으로 저장하고 이전 스냅샷의 포인터를 가져 버전의 흐름 파악 가능
- 명령어
-> add : 작업 내역을 스테이징 영역에 추가하여 버전 관리 대상으로 지정
-> commit : 작업 내역을 지역 저장소에 저장
-> branch : 새로운 브런치 생성 / 삭제
-> checkout : 지정한 브런치로 이동
-> merge : 두 브랜치 병합
-> init : 지역 저장소 생성
-> remote add : 원격 저장소에 연결
-> push : 로컬 저장소의 변경 내용을 원격 저장소에 반영
-> fetch : 원격 저장소의 변경 이력만 지역 저장소에 반영
-> clone : 원격 저장소의 전체 내용을 지역 저장소로 복제
-> fork : 지정한 원격 저장소의 내용을 자신의 원격 저장소로 복제
빌드 자동화 도구
빌드 자동화 도구의 개념
- 소스 코드를 컴파일한 후 여러 개의 모듈로 묶어 실행 파일로 만드는 과정을 포함하여 테스트 및 배포를 자동화하는 도구
Jenkins
- Java 기반의 오픈소스
- 서블릿 컨테이너에서 실행되는 서버 기반 도구
- 형상 관리 도구와 연동 가능
- Web GUI 제공으로 사용이 쉬움
- 여러 대의 컴퓨터를 이용한 분산 빌드나 테스트 가능
Gradle
- Groovy를 기반으로 한 오픈 소스 형태의 자동화 도구
- 안드로이드 앱 개발 환경에 사용
- Java, C/C++, Python 등의 언어도 빌드 가능
- Groovy를 사용해서 만든 DSL을 스크립트 언어로 사용
- 실행할 처리 명령들을 모아 태스크로 만든 후 태스크 단위로 실행
- 이전의 태스크를 재사용하거나 다른 시스템의 태스크를 공유하여 빌드의 속도를 향상시킬 수 있음
필기 정리
'2020(개정) 이후 정보처리기사 > 2과목 : 소프트웨어 개발' 카테고리의 다른 글
2020 정보처리기사 필기 - 2.4 애플리케이션 테스트 관리(2) (0) | 2020.04.15 |
---|---|
2020 정보처리기사 필기 - 2.4 애플리케이션 테스트 관리(1) (0) | 2020.04.15 |
2020 정보처리기사 필기 - 2.3 제품 소프트웨어 패키징(1) (0) | 2020.04.14 |
2020 정보처리기사 필기 - 2.2 통합 구현 (0) | 2020.04.14 |
2020 정보처리기사 필기 - 2.1 데이터 입출력 구현 (3) | 2020.04.13 |