형상 관리 / 버전 관리 도구

2023. 2. 15. 20:58정처기 필기/2과목 - 소프트웨어 개발

형상 관리

1. 소프트웨어 패키징의 형상 관리 (SCM : Software Configuration Management)

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

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

 

2. 형상 관리의 중요성

- 소프트웨어의 변경 사항을 체계적으로 추적하고 통제할 수 있음

- 제품 소프트웨어에 대한 무절제한 변경 방지

- 진행 정도를 확인하기 위한 기준으로 사용될 수 있다.

 

3. 형상 관리 기능

- 형상 식별

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

 

- 형상 통제(변경 관리)

  : 식별된 형상 항목에 대한 변경 요구를 검토하여 현재의 기준선이 잘 반영될 수 있도록 조정하는 작업

 

- 형상 감사

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

 

- 형상 기록(상태 보고)

  : 형상의 식별, 통제, 감사 작업의 결과를 기록하고 관리하고 보고서를 작성하는 작업

 

- 버전 제어

  : 소프트웨어 업그레이드나 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고, 이를 위해 특정 절차와 도구를 결합시키는 작업

 

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

 

 

5. 소프트웨어 버전 등록 과정

가져오기(Import) --> 인출(Check-Out) --> 예치(Commit) --> 동기화(Update) --> 차이(Diff)

 

6. 제품 소프트웨어의 형상 관리 역할

- 형상 관리를 통해 이전 버전에 대한 정보에 접근 가능하여 배포본 관리에 유용

- 불필요한 사용자의 소스 수정 제한

- 동일한 프로젝트에 대해 여러 개발자 동시 개발 가능


버전 관리 도구

1. 공유 폴더 방식

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

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

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

- 파일의 변경 사항을 데이터베이스에 기록하며 관리

# SCCS, RCS, PVCS, QVCS

 

2. 클라이언트 / 서버 방식

- 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식

- 서버의 자료를 개발자별로 자신의 PC(클라이언트)로 복사해 작업한 후 변경된 내용을 다시 중앙 서버에 반영

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

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

- 서버에 문제가 생기면 다른 개발자와의 협업 및 버전 관리 작업은 중단된다.

# CVS, SVN

 

3. 분산 저장소 방식

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

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

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

- 로컬 저장소에서 작업을 수행할 수 있어 처리속도가 빠르다.

# Git, Bitkeeper

 

4. SVN (Subversion) ------클라이언트/서버 방식

- CVS를 개선한 것으로 아파치 소프트웨어 재단에서 발표함

- 모든 개발 작업은 trunk 디렉터리에서 수행되며, 추가 작업은 branches 디렉터리 안에 별도의 디렉터리를 만들어 작업을 완료한 후 trunk 디렉터리와 병합

- 커밋할 때마다 리비전이 1씩 증가

- 서버는 주로 유닉스(UNIX) 사용

- 오픈 소스로 무료사용 가능

- CVS의 단점이었던 파일이나 디렉터리의 이름 변경, 이동 등이 가능

 

5. Git(깃)

- 원격 저장소는 여러 사람들이 협업을 위해 버전을 공동 관리하는 곳으로, 자신의 버전 관리 내역을 반영하거나 다른 개발자의 변경 내용을 가져올 때 사용

- 로컬 저장소는 개발자들이 본인의 실제 개발을 진행하는 장소로 버전관리가 수행됨

- 브랜치(Branch)를 이용하면 기본 버전 관리 틀에 영향을 주지 않으면서 다양한 형태의 기능 테스팅 가능

- 파일의 변화를 스냅샷으로 저장

- 스냅샷은 이전 스냅샷의 포인터를 가지므로 버전의 흐름 파악 가능