Ch25. 형상 관리

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)에 컴포넌트의 모든 버전을 유지

(2) 분산 시스템 : 컴포넌트 저장소의 ‘여러’ 버전이 존재

버전 제어 시스템의 주요 기능

(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