랑아
article thumbnail

통합 구현 도구

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
profile

랑아

@RangA

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!