[2021년 정보시스템감리사][소프트웨어공학] 40번
40. 소프트웨어 버전 관리에 대한 다음 설명 중 가장 적절하지 않은 것은?
① Git과 Subversion 모두 commit 명령으로 새로운 버전을 생성할 수 있다.
② 분산 버전 관리 시스템인 Git은 버전 저장소에서 컴포넌트 버전 간 차이인 델타를 이용하여 공간을 절약한다.
③ Subversion은 하나의 마스터 저장소에 모든 컴포넌트의 버전을 유지하는 중앙집중 버전 관리 시스템이다.
④ 베이스라인은 시스템을 구성하는 컴포넌트 버전들의 집합을 의미한다. 소프트웨어 개발 과정 중 특정 시점이나 목적을 위하여 만들어진 산출물의 집합이다.
[해설]
▣ SW 형상 관리 활동
-
버전 관리 : 시스템 컴포넌트들의 여러 버전들을
추적 관리하고 여러 개발자들에 의한 컴포넌트 변경이 서로 방해받지 않도록 보장하는 것
-
시스템 구축 : 컴포넌트, 데이터, 라이브러리들을 조립하고,
실행가능한 프로그램을 생성하기 위해 이것들을 컴파일하고 링킹하는 프로세스
-
변경 관리 : SW에 대한 고객과 개발자들의
변경 요청을 추적관리하고, 이런 변경을 수행하기 위한 비용과 영향을 파악하고, 이런 변경을 구현할 것인지, 한다면 언제 할 것인지를 판단하는 것
-
릴리스 관리 : 고객 사용을 위해 릴리스되는
시스템 버전들을 추적 관리하는 것
▣ SW 형상 관리 주요 용어
|
용어 |
정의 |
|
베이스 라인 |
• 시스템을 구성하는 컴포넌트 버전들의 모음 • 베이스라인들은 통제되는데, 이것은
베이스라인에서 사용되는 컴포넌트 버전들은 변경될 수 없다는 것을 의미 • 베이스라인은 그것의 구성 컴포넌트들로부터 항상 다시 생성될 수 있음 |
|
코드라인 |
• 소프트웨어 컴포넌트 그리고 컴포넌트가 의존하는 다른 형상 항목들의 버전들의
집합 |
|
형상 항목 |
• 형상 관리를 받는 소프트웨어의 프로젝트에 관련된 모든 것(설계, 코드, 테스트
데이터, 문서 등) • 형상 항목은 항상 유일한 식별자를 갖음 |
|
메인라인 |
• 시스템의 여러 버전들을 나타내는 일련의 베이스라인들 |
|
저장소 |
• SW 컴포넌트의 버너들과 컴포넌트들의 변경에 관한 메타 정보의 공유된 데이터베이스 |
|
작업공간 |
• 개발자가 SW를 사용 또는 수정하고
있는 다른 개발자들에게 영향을 미치지 않고 그 SW를 변경할 수 있는 곳 |
|
버전 |
• 형상 항목의 다른 인스턴스와 어떤 식으로든 구별되는 인스턴스 • 버전들은 항상 유일한 식별자를 갖음 |
▣ 버전 관리
시스템 유형
|
구분 |
설명 |
|
중앙집중 시스템 |
• 하나의 마스터 저장소가 개발 중인 소프트웨어 컴포넌트의 모든 버전들을 유지 • ex) Subversion |
|
분산 시스템 |
• 컴포넌트 저장소의 복수 버전들이 동시에 존재 • ex) Git |
▣ 주요 명령어
▣ 델타(deltas)를 사용한 저장소 관리
-
버전 관리 시스템이 처음 개발되었을 때, 저장소
관리는 가장 중요한 기능중의 하나였음
-
디스크공간의 값이 비쌌으므로, 컴포넌트의 여러
복사본들에 의해 사용되는 디스크 공간을 최소화하는 것이 중요했음
-
각각의 버전의 완전한 내용을 유지하는 것 대신, 버전
사이의 차이(delta)들의 목록을 저장함
-
공간을 아낄 수 있으나 모든 delta를 적용하는데
시간이 많이 소요됨
-
Git은 delta를 사용하지 않고 저장된 파일들 그리고
연관된 메타 정보에 대해 표준 압축 알고리즘을 적용함( delta를 포함한 packfile 개념 사용)


댓글
댓글 쓰기