728x90
Ch25. 형상 관리
📌 [교재] 소프트웨어 공학 10판
[형상 관리] : Configuration management
✅소프트웨어 시스템은 개발과 사용 중에 변경됨
- 오류 수정, 요구사항 변경, 플랫폼 변경
- 시스템은 버전들의 집합, 각 버전을 유지하고 관리
✅형상 관리는 변화하는 시스템을 관리하기 위한 정책, 프로세스, 도구와 관련
- 각 시스템 버전에 어떤 변경이 반영되었는지, 어떤 컴포넌트 버전이 포함되었는지 관리
- 개발 팀에 개발 중인 시스템에 대한 접근을 제공하고 코드에 수행한 변경을 관리
- 여러 개발자들이 동시에 작업하는 팀 프로젝트에서 필수적 (Git)
[형상 관리의 4가지 활동] Configuration management activities
✅버전관리 : 컴포넌트의 버전을 관리
✅시스템 구축 : 컴포넌트와 라이브러리 등으로 프로그램 생성
✅변경관리 : 고객과 개발자의 변경 요청(change request)을 관리
✅릴리스 관리 :외부에 릴리스되는 시스템 버전을 관리
[형상 관리 도구] : Configuration management tools
✅형상 관리에서는 도구 지원이 필수적
- 관리하는 정보와 형상 항목들의 관계가 복잡함
- 컴포넌트와 시스템이 자주 변경되는 애자일 개발에서는 필수
✅형상 관리 도구의 기능
- 컴포넌트의 버전을 저장
- 컴포넌트의 버전으로부터 시스템을 구축
- 시스템 버전의 릴리스를 추적
- 변경 요청을 추적하고 관리
✅형상 관리 도구의 사용 방식
- 컴포넌트의 버전은 공유 저장소에 보관됨
- 공유 저장소에서 개인 작업 공간으로 복사하여 수정
- 변경된 컴포넌트를 저장소에 기록하면 다른 개발자가 이용할 수 있음
[CM 용어] : CM terminology
✅베이스라인(baseline)
- 시스템을 구성하는 ‘컴포넌트 버전의 모음’.
- 베이스라인은 그것을 구성하는 컴포넌트 버전들이 변경되지 않도록 제어됨.
- 베이스라인은 구성 컴포넌트로부터 다시 생성할 수 있음
✅코드라인(codelind)
- 컴포넌트의 일련의 버전 집합 (e.g. 한 소스코드 파일의 버전들)
✅분기(branching)
- 기존 코드라인 내 버전에서 새로운 코드라인을 생성.
새로은 코드라인은 독립적으로 개발 가능
✅형상/버전 제어(configuration/version control) : 그냥 넘어감
- 시스템과 컴포넌트의 버전을 기록하고 유지하는 프로세스, 변경사항을 관리하고 컴포넌트의 모든 버전을 저장/식별할 수 있게 함
✅소프트웨어 형상 항목(software configuration item)
- 형상 제어를 받는 소프트웨어 프로젝트와 관련된 모든 것 (설계, 코드, 테스트 데이터, 문서 등), 형상 항목은 유일한 이름을 가짐.
✅메인라인 (mainline)
- 일련의 베이스라인
✅병합 (merging)
- 서로 다른 코드라인의 버전들을 병합하여 새로운 버전을 생성, 이 코드라인들은 일반적으로 분기에 의해 생성된 것임
✅릴리스 (release)
- 사용을 목적으로 고객에게 인도하는 시스템의 버전
✅저장소 (or 공유 저장소) : (repository)
- 컴포넌트의 버전들과 변경사항에 대한 메타정보(meta-information)가 저장되는 공유 데이터베이스
✅시스템 구축 (system building)
- 적절한 컴포넌트 버전과 라이브러리를 컴파일하고 링크하여 실행 가능한 시스템 버전을 생성
✅버전 (version)
- 형상 항목의 다르 인스턴스(instance)와 구분되는 인스턴스, 버전은 유일한 식별자를 가짐
✅작업공간 (workspace)
- 소프트웨어를 사용하거나 수정하고 있는 다른 개발자에게 영향을 미치지 않고 소프트웨어를 수정할 수 있는 개인 작업 공간(ex. 내 PC 파일 시스템)
25-1. 버전관리
[버전 관리] Version management
✅버전 관리
- (버전 관리의 단위는 파일 단위). (파일에서는 라인 단위로 변경을 관리함)
- 컴포넌트의 버전과 컴포넌트들이 사용되는 시스템의 버전을 추적 관리하는 프로세스
- 코드라인과 베이스라인을 관리
✅코드라인 *** 꼭 알 것**
- 소스코드의 일련의 버전. 이전 버전으로부터 나중 버전이 유도됨
- 코드라인은 컴포넌트에 적용됨
✅베이스라인 *** 꼭 알 것**
- 특정 시스템(의 버전)에 대한 정의
- 시스템에 포함되는 컴포넌트, 라이브러리, 설정 등의 (정보)를 명시
[버전 제어(관리) 시스템] : VC (Version control system)
✅버전 제어 시스템
- 컴포넌트의 버전을 저장하고 식별하고 접근을 제어
✅버전 제어 시스템의 두 가지 유형
(1) 중앙집중 시스템 : ‘하나’의 마스터 저장소 (DB)에 컴포넌트의 모든 버전을 유지
- Subverwion : https://subversion.apache.org/
- CVS :://savannah.ongnu.org/projects/cvs
- https
(2) 분산 시스템 : 컴포넌트 저장소의 ‘여러’ 버전이 존재
- Git :
- https://github.com/
✅버전 제어 시스템의 주요 기능
(1) 버전과 릴리스 식별 : 버전의 식별자 할당
(2) 변경 이력 기록 : 변경에 대한 기록을 유지, 태그 붙이기(tagging)
(3) 독립적 개발 지원 : 개발자들이 동시에 같은 컴포넌트에 대해 작업
(4) 프로젝트 지원 : 컴포넌트를 공유하는 여러 프로젝트 개발을 지원
(5) 저장공간 관리 : delta를 이용한 컴포넌트 버전의 효율적 저장
▷ [중앙 집중 버전 제어] Centralized version control
**: 체크아웃/인/공유저장소/개인 ...**
✅프로젝트 저장소(공유저장소) 와 개인 작업 공간 ****
- 방해받지 않는 독립적 개발을 지원
- 프로젝트 저장소는 모든 컴포넌트의 마스터 버전을 유지
- 개발자가 컴포넌트를 수정하기 위해 저장소에 개인 작업공간으로 복사(check-out) **
- 컴포넌트를 수정
- 변경을 완료하면 변경된 컴포넌트를 프로젝트 저장소로 반납(check-in) **
✅중앙집중 버전 제어
- 체크아웃->작업->체크인 방식
- 서로 다른 개발자가 같은 컴포넌트를 동시에 체크아웃
: 이미 체크아웃 되었다는 것을 알리거나
: 체크인 시 두 버전이 생성되도록 함
▷ 분산 버전 제어 [Distributed version control]
✅분산 버전 제어
- 마스터 저장소가 서버에 생성됨
- 개발자는 프로젝트 저장소를 복제(clone)하여 개인 컴퓨터에 설치
- 개인 저장소에서 작업하고 버전을 유지 관리
- 변경을 완료하면 커밋(commit) = 체크인으로 개인 저장소를 갱신(새 버전 생성)
- 개인 저장소의 변경을 프로젝트 저장소에 반영(push)할 수 있음
- 프로젝트 저장소의 변경을 개인 저장소로 가져올(pull) 수 있음
✅분산 버전 관리의 특성
- 저장소 백업 지원
- 같은 조직 내에서 작업하지 않고 여러 사람이 참여하는 오픈 소스개발에 적합
[분기와 병합] Branching and merging
✅분기(branch)
- 동일한 컴포넌트에 대한 독립적인 개발을 위해 코드라인의 분기가 필요함
- 다양한 목적으로 분기가 일어날 수 있음
✅병합(merge)
- 서로 다르 코드라인의 버전을 병합하여 새로운 버전을 생성
- 서로 다른 부분을 수정하였다면 자동 병합이 가능함
- 변경 작업이 겹치는 경우 수동 병합이 필요하며 충돌(conflict)을 해결해야 함
[저장공간 관리] Storage management
✅저장공간 관리
- 버전 간의 차이(delta)를 이용하여 컴포넌트 버전을 저장
- 각각의 완전한 버전을 저장하는 것보다 저장공간을 줄일 수 있음
- 델타를 적용하는데 시간이 걸린다는 문제가 있음
✅델타(delta) = 버전 사이의 차이를 의미 ***
- 전향 델타(forward delta)
: 가장 초기 버전을 완전하게 저장하고 이후 버전을 생성하기 위한 델타를 관리
- 후향 델타(backward delta)
: 가장 최근 버전을 완전하게 저장하고 이전 버전을 생성하기 위한 델타를 관리
→ 추가 25장 자료
[태그] Tags * (label)**
- a user-defined name
- can be attatched to any version of an element to identify that version easily
- 즉, 식별 쉽게 하기 위해 사용자가 붙이는 이름 정도로 생각하면 된다.
- 붙이는 이유 : 특정 베이스라인 찾아내기 위해 태그(레이블) 붙인다.
- -> 추가 자료 그림 보기 (강의 13-1강 뒷부분 설명 다시 듣기)
[형상 관리 개념] --> 시험X 참고O
✅형상 관리 절차
- 형상 식별(Configuration Identification)
: 형상 항목 선정
: 형상 식별자 규칙 선정
: 베이스라인 기준 선정
- 형상 통제(Configuration Control)
: 변경 요청
: 변경 심사
: 변경 확인
- 형상 상태 보고(Configuration Status Reporting)
- 형상 감사 (Configuration Audit)
형상 관리에 대한 역할과 책임
- 형상 관리 담당자(Configuration Manager)
- 형상통제위원회(Configuration Control Board)
728x90
'[전공] 학교 전공 공부 > [학교] 소프트웨어 공학' 카테고리의 다른 글
[과제]_Activity network와 Bar chart 과제 (0) | 2022.06.10 |
---|---|
Ch23. 프로젝트 계획 수립 (0) | 2022.06.09 |
Ch18. 서비스 지향 소프트웨어 공학 (0) | 2022.06.09 |
Ch17. 분산 소프트웨어 공학 (0) | 2022.06.08 |
Ch15. 소프트웨어 재사용 (0) | 2022.06.08 |