- 3 - 제품 소프트웨어 패키징
5. 소프트웨어 버전 등록
1) 소프트웨어 패키징의 형상 관리
형상 관리는 소프트웨어 개발 과정에서 소프트웨어 변경 사항을 관리하기 위해 개발된 일련의 활동이다. 변경의 원인을 알아내고 제어하며, 적절히 변경되고 있는지 확인하여 해당 담당자에게 통보한다.
2) 형상관리의 중요성
지속적인 소프트웨어의 변경사항을 체계적으로 추적하고 통제할 수 있다.
제품 소프트웨어에 대한 무절제한 변경을 방지할 수 있다.
제품 소프트웨어에서 발견된 버그나 수정 사항을 추적할 수 있다.
소프트웨어는 형태가 없어 가시성이 결핍되므로 진행 정도를 확인하기 위한 기준으로 사용될 수 있다.
3) 형상 관리 기능
품질 보증을 위한 요소로서 다음의 기능을 수행
형상 식별 : 관리 대상의 이름과 관리 번호를 부여하고, 계층(Tree)로 구분해 수정 및 추적이 용이하도록 합니다.
버전 제어 : 소프트웨어 업그레이드나 유지보수 과정에서 생성된 버전의 형상 항목을 관리하고, 이를 위해 특정 절차와 도구를 결합시킵니다.
형상 통제 : 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선이 잘 반영될 수 있도록 조정합니다.
형상 감사 : 기준선의 무결성을 평가하기 위해 확인, 검증 과정을 통해 공식적으로 승인
형상 기록 : 위의 절차에 따른 내용을 기록하고 보고서를 작성
4) 소프트웨어 버전 등록 관련 용어
저장소(Respository) : 저장소
가져오기(Import) : 아무것도 없는 저장소에서 처음으로 파일을 복사
체크아웃(Check-Out) : 파일 받기
체크인(Check-In) : 체크아웃 한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신한다.
커밋(Commit) : diff도구(비교 대상이 되는 파일 들의 내용을 비교하여 서로 다른 부분을 표시해주는 도구)를 이용해 충돌을 알리고 내용을 갱신한다.
동기화(Update) : 최신 버전으로 동기화
5) 소프트웨어 버전 등록 과정
가져오기 -> 인출 -> 커밋 -> 동기화 -> 차이(Diff:수정 기록을 확인하면서 변경된 내용을 확인)
6. 소프트웨어 버전 관리 도구 <중요>
* 소프트웨어 버전을 관리하는데 여러가지 방식이 있어요. 방식과 특징을 암기하세요! 같이 쓰는 엑셀 파일을 상상하시면 이해하기가 편해요.
1) 공유 폴더 방식
공유 폴더 방식은 버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되어 관리되는 방식이다.
개발이 완료된 파일을 약속된 공유 폴더에 매일 복사
담당자는 컴파일하여 이상 유무를 확인
파일을 잘못 복사하거나 다른 위치로 복사하는 것에 대비하기 위해 파일의 변경 사항을 데이터베이스에 기록
종류에는 SCCS, RCS, PRVCS, QVCS가 있다.
2) 클라리언트/서버 방식
버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식
서버의 자료를 개발자별로 자신의 PC(클라이언트)로 복사하여 작업한 후 변경된 내용을 서버에 반영한다.
모든 버전 관리는 서버에서 수행된다.
하나의 파일을 서로 다른 개발자가 작업할 경우 경고메시지를 출력한다.
서버에 문제가 생기면 서버가 복구되기까지 협업 및 버전 관리 작업이 중단된다.
종류에는 CVS, SVN, CVSNT, Clear Case, CMVC, Perforce 등이 있다.
3) 분산 저장소 방식
하나의 원격 저장소와 분산된 개발자의 PC 로컬 저장소에 함께 저장되어 관리되는 방식이다.
개발자 별로 원격 저장소의 자료를 자신의 로컬 저장소로 복사하여 작업한 후 변경된 내용을 로컬저장소에 우선 반영한 다음 이를 원격저장소에 반영한다.
종류에는 Git, GNU arch, DCVS, Bazaar, Mercurial, TeamWare, Bitkeeper, Plastic SCM이 있다.
* 원격 저장소 = 분산 저장소입니다!
4) Subversion(SVN)
CVS를 개선한 것으로 아파치 소프트웨어 재단에서 2000년에 발표함
- 클라이언트/서버 구조로 최신 버전의 파일들과 변경 내역이 관리된다.
- 서버의 자료를 클라이언트로 복사해와 작업 한 후 변경 내용을 서버에 반영(Commit)한다.
- 모든 개발 작업은(trunk(몸통,줄기:가장중심이되는메인디렉터리))에서 수행되며 추가 작업은 branches(서브 디렉터리) 안에 별도의 디렉터리를 생성해 작업한 후 trunk 디렉터리와 병합한다.
- 커밋할 때마다 리비전이 1씩 증가한다.
- 서버는 주로 유닉스를 사용한다.
- CVS의 단점이었던 파일이나 디렉터리의 이름 변경, 이동 등이 가능하다.
- 주요 명령어 : diff(지정된 파일이나 경로에 대해 이전 리비전과의 차이를 표시한다.)
5) Git(깃)
리누스 토발즈가 2005년 리눅스 커널 개발에 사용할 관리 도구로 개발한 이후 주니오 하마노에 의해 유지보수 되고 있다.
Git은 분산 버전 관리시스템으로 2개의 저장소, 로컬 저장소와, 원격 저장소가 존재한다.
버전 관리가 로컬 저장소에서 진행되므로 버전 관리가 신속하게 처리되고, 원격 저장소나 네트워크에 문제가 있어도 작업이 가능하다.
브랜치(토픽 브랜치, 피처 브랜치라고도 함)를 이용하면 기본 버전 관리 틀에 영향을 주지 않으면서 다양한 형태의 기능 테스팅이 가능하다.
파일의 변화를 스냅샷(영문자와 숫자가 혼합된 40자리 문자열)으로 저장하는데, 스냅샷은 이전 스냅샷의 포인터를 가지므로 버전의 흐름을 파악할 수 있다.
7. 빌드 자동화 도구
1) 빌드 자동화 도구의 개념
빌드란 소스 코드 파일들을 컴파일 한 후 여러 개의 모듈을 묶어 실행 파일로 만드는 과정이며, 이러한 빌드를 포함하여 테스트 및 배포를 자동화 하는 도구를 빌드 자동화 도구라고 한다.
- 애자일 환경에서는 하나의 작업이 마무리될 때마다 모듈 단위로 나눠서 개발된 코드들이 지속적으로 통합되는데, 이러한 지속적인 통합 개발 환경에서 빌드 자동화 도구는 유용하게 활용된다.
- 빌드 자동화 도구에는 Ant, Make, Maven, Gradle, Jenkins등이 있으며, Jekins와 Gradle이 가장 대표적입니다.
2) Jenkins
JAVA 기반의 오픈소스 형태로, 가장 많이 사용되는 빌드 자동화 도구이다.
서블릿 컨테이너에서 실행되는 서버 기반 도구이다.
SVN, Git등 대부분의 형상 관리 도구와 연동이 가능하다.
친숙한 Web GUI을 제공한다.
여러 대의 컴퓨터를 이용한 분산 빌드나 테스트가 가능하다.
3) Gradle
Groovy(자바에 파이썬 등의 장점을 결합한 동적 프로그래밍 언어)를 기반으로 한 오픈소스형태의 자동화 도구로, 안드로이드 앱 개발 환경에서 사용된다.
플러그인을 설정하면 Java, C, C++, 파이썬 등의 언어도 빌드가 가능하다.
Groovy를 사용해서 만든 DSL을 스크립트 언어로 사용한다.
Gradle은 실행할 처리 명령들을 모아 Task로 만든 후 태스트 단위로 실행한다.
이전에 사용했던 태스크를 재사용하거나 다른 시스템의 태스크를 공유할 수 있는 빌드 캐시 기능을 지원하므로, 빌드의 속도 향상이 가능하다.
'2020 정보처리기사 필기 > 2과목 - 소프트웨어 개발' 카테고리의 다른 글
[2020 정보처리기사 필기 요약] 2과목 - 소프트웨어 개발(인터페이스 구현_1) (0) | 2020.07.23 |
---|---|
[2020 정보처리기사 필기 요약] 2과목 - 소프트웨어 개발(애플리케이션 테스트 관리_3) (0) | 2020.07.22 |
[2020 정보처리기사 필기 요약] 2과목 - 소프트웨어 개발(애플리케이션 테스트 관리_2) (0) | 2020.07.21 |
[2020 정보처리기사 필기 요약] 2과목 - 소프트웨어 개발(애플리케이션 테스트 관리_1) (0) | 2020.07.20 |
[2020 정보처리기사 필기 요약] 2과목 - 소프트웨어 개발(통합 구현, 제품 소프트웨어 패키징) (0) | 2020.05.30 |