통합 구현 도구
03. 형상 관리 도구
1) 형상 관리 도구의 개념
- 소프트웨어 구성 관리(Software Configuration Management) 또는 형상 관리는 소프트웨어의 변경 사항을 체계적으로 추적하고 통제하는 것으로, 형상 관리는 일반적인 단순 버전 관리 기반의 소프트웨어 운용을 좀 더 포괄적인 학술 분야의 형태로 넓히는 근간을 의미
- 형상 관리 도구는 프로그램 소스 코드나 문서의 버전 관리, 이력 관리, 추적, 변경 사항을 체계적으로 관리할 수 있는 기능을 제공하는 프로그램
2) 형상 관리 도구의 기능
1. check-out
- 형상 관리 저장소로부터 최신 소프트웨어 형상을 개발자 PC로 가져오는 기능
- 저장소를 체크아웃하면 로컬 컴퓨터에 원하는 프로그램의 사본을 생성하며 이 사본은 지정된 저장소의 최신 개정판을 포함함
- 최신 버전이 아닌 원하는 버전으로 체크아웃하는 것도 가능함
2. check-in
- 개발자가 수정한 소스를 형상 관리 도구 저장소로 업로드하는 기능
3. commit
- 개발자가 소스를 형상 관리 도구 저장소에 업로드한 후 최종적으로 업데이트가 되었을 때 형상 관리 서버에 반영되도록 하는 기능
- commit을 수행하면 commit 이후 사용자는 최신 버전을 사용할 수 있음
4. update
- 변경 사항이 있는 경우 서버 형상을 로컬 형상으로 가져오는 기능
- 파일을 변경하기 전에 언제나 갱신을 수행하는 것이 최우선 원칙
5. import
- 아무것도 들어있지 않은 저장소에 맨 처음 소스를 넣는 기능
6. export
- check-out과 달리 버전 관리 파일을 뺀 순수한 소스 파일을 받아올 수 있음
- 오픈소스 프로젝트의 경우 소스를 압축하여 릴리즈할 때 사용
3) 형상 관리 도구
1. CVS(Concurrent Versions System)
- 가장 오랫동안 사용한 형상 관리 도구
- 중앙 집중형 서버 저장소에 클라이언트가 접속해서 버전 관리를 실행함
- 다수의 개발자가 동시에 범용적인 운영체제로 접근이 가능함
- Checkout, Update, Checkin, Commit을 사용함
- Diff를 통해 이전 버전과 현재 버전을 비교함
- 파일 단위로 변경 사항을 관리
- 직관적이고 비교적 단순한 명령 구조
- 유니코드 파일명 지원이 부족하고, 텍스트 기반 소스만 지원
- 등록된 파일이나 디렉토리명 변경이나 이동이 불편함
- Commit 실패 시 Rollback하지 못함
- 클라이언트 개발 도구인 Eclipse가 내장되어 있음
2. SVN(Subversion)
- 현재 가장 많이 사용하고 있는 형상 관리 도구
- CVS의 단점을 보완한 방식이며 CVS 대체 도구이기 때문에 CSV 사용자도 쉽게 도입하여 사용할 수 있음
- SVN은 CVS에 비해 속도, 저장 공간 절약 등이 개선됨
- CVS는 파일 단위로 변경 관리를 하지만 SVN은 작업 모음 단위로 변경 관리를 함
- 디렉터리나 파일을 자유롭게 이동해도 이력이 유지됨
- Auto Commit을 사용하기 때문에 실패 시 Rollback할 수 있음
- 다양한 서드 파티 GUI가 존재함
3. Git
- 공개 소프트웨어 커뮤니티 중심으로 사용하는 개발자가 많이 확대되고 있는 도구
- Git은 CVS, SVN과 기본 개념이 다른 방식이므로 적응 시간이 필요함
- CVS, SVN처럼 중앙 집중 방식이 아닌 분산형 방식
- Git은 중앙 집중 방식으로도 사용할 수 있는 융통성이 있음
- Diff를 통해 이전 버전과 현재 버전을 비교함
- Local 환경에서의 형상 관리가 가능
- 원격 저장소와 로컬 저장소를 사용하기 때문에 고장 시 쉽게 복구할 수 있음
- SVN과 다르게 Commit은 로컬 저장소에 이루어지고, PUSH 동작에 원격 저장소에 반영됨
- 바이너리 문서도 형상 관리가 가능함
4. Perforce(P4D)
- 2014년 출시된 형상 관리 툴이며, 코드와 바이너리 파일의 변환을 추적하기 위해 제작
- Merge 속도가 빠름
- 히스토리 검색이 편리함
- P4diff가 편리함
- P4diff : 로컬에서 자신이 수정한 파일을 쉽게 찾을 수 있는 명령
- 리비전 넘버링 인터페이스가 편리함
- 큰 리소스 관리에 좋음
- 바이너리 파일 처리가 매우 빠름
- 파일명이 바뀌면 히스토리 추적이 곤란함
- CLI(Command Line Interface)가 상대적으로 약함
04. 제품 소프트웨어 패키징의 형상 관리
1) 제품 소프트웨어의 형상 관리 파악
- 기본적으로 작성된 패키지의 변경 내용을 관리하는 것이 형상 관리 목적
- 소프트웨어의 변화를 시간에 따라 기록하고, 특정 시점의 버전을 다시 사용할 수 있도록 관리하는 체계
- 소프트웨어의 변경 통제 시점을 정하여 변경 사항 및 버전을 전체적으로 관리
2) 제품 소프트웨어의 형상 관리 중요성
- 제품 소프트웨어는 지속적으로 변경되므로 계속적인 개발 통제가 중요함
- 제품 소프트웨어의 형상 관리에 원만하지 않으면 배포판의 오류 제거 및 수정 시 부작용이 발생하거나 가시성(Visibility)의 결핍이 발생함
- 가시성이 결핍되면 소프트웨어의 계쇡, 분석, 개발, 테스트 등의 전체적인 흐름을 파악할 수 있게 된다는 것
3) 제품 소프트웨어의 형상 관리 역할
- 형상 관리를 통해 수정 정보나 버전에 대한 정보를 쉽게 접근할 수 있어 배포본 관리가 용이함
- 불필요한 원시 프로그램 소스의 수정을 제한할 수 있음
- 동일한 소프트웨어에 대해 여러 개발자가 동시에 개발이 가능함
- 오류가 발생했을 경우 빠른 시간 내에 복구가 가능함
- 사용자의 요구에 따라 최상의 소프트웨어를 공급할 수 있음
'정보처리기사 > 소프트웨어 개발' 카테고리의 다른 글
통합 구현 4 (1) | 2023.05.17 |
---|---|
통합 구현 3 (0) | 2023.05.16 |
통합 구현 1 (0) | 2023.05.14 |
데이터 입출력 구현 8 (0) | 2023.05.13 |
데이터 입출력 구현 7 (1) | 2023.05.13 |