자격증/2020 정보처리기사 필기

2020 정보처리기사 필기 - 2.3 제품 소프트웨어 패키징(2)

지식냠냠 2020. 4. 16. 22:46
반응형



▶ 046 소프트웨어 버전 등록



소프트웨어 패키징의 형상 관리

형상 관리 : 소프트웨어의 개발 과정에서 소프트웨어의 변경 사항을 관리하기 위해 개발된 일련의 활동

- 소프트웨어 변경의 원인을 알아내고 제어하며, 적절히 변경되고 있는지 확인하여 해당 담당자에게 통보

- 형상 관리는 소프트웨어 개발의 전 단계에 적용되는 활동이며, 유지보수 단계에서도 수행됨

- 형상 관리는 개발의 전체 비용을 줄이고, 개발 과정의 여러 방해 요인이 최소화되도록 보증하는 것을 목적으로 함

*형상 : 소프트웨어 개발 단계의 각 과정에서 만들어지는 프로그램, 프로그램 설명 문서, 데이터 등을 통칭



형상 관리의 중요성

- 변경 사항을 체계적으로 추적 및 통제

- 무절제한 변경 방지

- 버그나 수정 사항 추적 가능

- 진행 정도를 확인하기 위한 기준으로 사용



형상 관리 기능

형상 관리는 품질 보증을 위한 중요한 요소

- 형상 식별 : 형상 관리 대상에 이름과 관리 번호를 부여하고, 계층 구조로 구분해 수정 및 추적이 용이하도록 하는 작업

- 버전 제어 : 다른 버전의 형상 항목을 관리하고, 이를 위해 특정 절차와 도구를 결합시키는 작업

- 형상 통제(변경 관리)

- 형상 감사 : 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업

- 형상 기록(상태 보고) 



소프트웨어의 버전 등록 관련 주요 용어

- 저장소(Repository) : 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장되어 있는 곳 

- 가져오기(import) : 버전 관리가 되고 있지 않은 아무것도 없는 저장소에 처음으로 파일을 복사

- 체크아웃(Check-Out) : 프로그램을 수정하기 위해 저장소에서 파일을 받아옴, 소스 파일과 함께 버전 관리를 위한 파일들도 받아옴

- 체크인(Check-In) : 체크아웃 한 파일의 수정을 완료한 후 저장소의 파일을 새로운 버전으로 갱신

- 커밋(Commit) : 체크인을 수행할 때 이전에 갱신된 내용이 있는 경우에 충돌을 알리고 diff 도구를 이용해 수정한 후 갱신을 완료

- 동기화(Update) : 저장소에 있는 최신 버전으로 자신의 작업 공간을 동기화 함



소프트웨어의 버전 등록 과정





▶ 047 소프트웨어 버전 관리 도구


공유 폴더 방식

버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되어 관리되는 방식

- 개발자들은 개발이 완료된 파일을 약속된 공유 폴더에 매일 복사함

- 담당자는 공유 폴더의 파일을 자기 PC로 복사한 후 이상 유무를 확인

- 이상 유무 확인 중 파일의 오류가 확인되면, 해당 파일을 등록한 개발자에게 수정 의뢰

- 파일을 잘못 복사하거나 다른 위치로 복사하는 것에 대비하기 위해 파일의 변경사항을 데이터베이스에 기록해 관리

ex) SCCS, RCS, PVCS, QVCS



클라이언트/서버 방식

버전 관리 자료가 서버에 저장되어 관리되는 방식

- 서버의 자료를 개발자별로 자신의 PC로 복사해 작업한 후 변경된 내용을 서버에 반영

- 모든 버전 관리는 서버에서 수행

- 하나의 파일을 서로 다른 개발자가 작업할 경우 경고 메시지 출력

- 서버에 문제 발생 시 협업 및 버전 관리 작업 중단 됨

ex) CVS, SVN(Suvbersion), CVSNT, Clear Case, CMVC, Perforce 등



분산 저장소 방식

버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 PC의 로컬 저장소에 함께 저장되어 관리되는 방식

- 개발자별로 원격 저장소의 자료를 자신의 로컬 저장소로 복사해 작업한 후 변경된 내용을 로컬 저장소에서 우선 반영한 다음 이를 원격 저장소에 반영 함

- 원격 저장소에 문제가 생겨도 로컬 저장소의 자료를 이용해 작업 할 수 있음

ex) Git, GNU arch, DCVS, Bazaar, TeamWare, Bitkeeper 등



Subversion(서브버전, SVN)

- CVS를 개선한 것, 아파치 소프트웨어 재단에서 2000년에 발표

*CVS : 공동 개발을 편리하게 작업 할 수 있도록 버전 관리를 도와주는 시스템

- 클라이언트/서버 구조

- 커밋할 때마다 라비전(Revision)이 1씩 증가

- Subversion의 주요 명령어

> add : 새로운 파일이나 디렉터리를 버전 관리 대상으로 등록

> commit : 버전 관리 대상으로 등록된 클라이언트의 소스 파일을 서버의 소스 파일에 적용

> update : 서버의 최신 commit 이력을 클라이언트의 소스 파일에 적용

> checkout : 버전 관리 정보와 소스 파일을 서버에서 클라이언트로 받아옴

> lock/unlock : 서버의 소스 파일이나 디렉터리를 잠그거나 해제

> Import : 아무것도 없는 서버의 저장소에 맨 처음 소스 파일을 저장

> export : 버전 관리에 대한 정보를 제외한 순수한 소스 파일만을 서버에서 받아 옴

> info : 지정된 파일에 대한 정보 표시

> diff : 지정된 파일이나 경로에 대해 전 리비전과의 차이 표시

> merge : 다른 디렉터리에서 작업된 버전 관리 내역을 기본 개발 작업과 병합



Git(깃)

- 리누즈 토발즈가 2005년에 개발, 이후 주니오 하마노가 유지 보수

- 분산 버전 관리 시스템

- 지역 저장소에서 버전 관리가 이루어짐, 신속한 처리

- 원격 저장소나 네트워크에 문제가 발생해도 작업 가능

- 브랜치를 이용해 다양한 형태의 기능 테스팅 가능

- 파일의 변화를 스냅샷으로 저장, 버전의 흐름 파악 가능

- Git의 주요 명령어

> add : 작업 내역을 지역 저장소에 저장하기 전 스테이징 영역에 추가

> commit : 작업 내역을 지역 저장소에 저장

> branch : 새로운 브랜치 생성

> checkout : 지정한 브랜치로 이동

> merge : 브랜치 병합

> init : 지역 저장소 생성

> remote add : 원격 저장소에 연결

> push : 로컬 저장소의 변경 내역을 원격 저장소에 반영

> fetch : 원격 저장소의 변경 이력만을 지역 저장소로 가져옴

> clone : 원격 저장소의 전체 내용을 지역 저장소로 복제

> fork : 지정한 원격 저장소의 내용을 자신의 원격 저장소로 복제



▶ 048 빌드 자동화 도구



빌드 자동화 도구

빌드를 포함해 테스트 및 배포를 자동화하는 도구

- 지속적인 통합 개발 환경에서 유용

- 빌드 자동화 도구 : Ant, Make, Maven, 가장 대표적인 Gradle, Jenkins 등 



Jenkins

- 자바 기반의 오픈 소스 형태, 가장 많이 사용되는 빌드 자동화 도구

- 서블릿 컨테이너에서 실행되는 서버 기반 도구

- SVN, Git 등 대부분의 형상 관리 도구와 연동 가능

- Web GUI 제공

- 여러 대의 컴퓨터를 이용한 분산 빌드나 테스트 가능 



Gradle

- Groovy를 기반으로 한 오픈 소스 형태의 자동화 도구

- 안드로이드 앱 개발 환경에서 사용, 플러그인 설정 시 JAVA, C/C++, Python 등의 언어도 빌드 가능

- DSL을 스크립트 언어로 사용

- 실행할 처리 명령들을 모아 태스크로 만든  후 태스크 단위로 실행

- 빌드 속도 빠름




반응형