동기화 모델
Synchronization modelConfiguration Management(CM; 구성관리)에서는 소프트웨어 및 문서에 대한 변경(특히)을 제어해야 합니다.이를 리비전 제어라고 하며, 동일한 정보 단위의 여러 버전을 관리합니다.리비전 제어는 CM에게 중요하지만 CM과 동등하지는 않습니다.
Synchronization Models(Configuration Management Models)(Feiler, 1991년)는 개개의 파일을 동시에 변경할 수 있도록 함으로써 리비전 제어를 유효하게 하는 방법에 대해 설명합니다.
동기화 모델
Feiler(1991)는 4개의 다른 동기화 모델에 대해 다음과 같이 간단히 보고합니다.
체크아웃/체크인
체크 아웃/체크인 모델에서는, 파일이 액세스 할 때마다 체크 아웃 되는 저장소에 개별적으로 보존되어 변경되었을 때에 체크 인 한다.이 리포지토리는 여러 버전의 파일을 저장할 수 있습니다.이러한 파일은 문서 또는 소스 코드일 수도 있지만 파일 집합일 수도 있으므로 앞으로는 구성 항목(CI)이라는 용어를 사용할 것입니다.동시 개조에 의한 충돌을 방지하기 위해 사용되는 기본 메커니즘은 잠금 메커니즘입니다.
구성.
구성 모델은 체크아웃/체크인 모델의 확장입니다.이 모델을 통해 개발자는 개별 파일이 아닌 구성으로 생각할 수 있습니다.완전한 체크아웃/체크인 모델이 구성 모델에 나타나지만 구성 관리를 위한 향상된 지원을 사용하여 다양한 업데이트 전략을 사용할 수 있습니다.구성은 시스템 모델 및 버전 선택 규칙에서 구축되는 것으로 정의됩니다.시스템 모델에 따라 사용되는 파일이 결정되며 버전 선택 규칙에 따라 파일의 버전(예: 최신 버전 또는 특정 개발 상태)이 결정됩니다.
긴 트랜잭션
긴 트랜잭션 모델은 논리적 변경으로 시스템을 구축한다고 가정하여 광범위한 접근 방식을 취합니다.이러한 변경의 조정과 통합에 중점을 두고 있습니다.기본적으로는 구성 버전과 파일 버전을 사용합니다.Configuration은 별도로 저장된 변경요구에 따라 작성된다.이 구성의 파일은 체크아웃/체크인 모델을 사용하여 동기화할 수 있습니다.변경이 완료되면 전체 구성이 저장소에 다시 저장되고 다른 변경 사항과 통합됩니다.
세트 변경
변경 세트 모델은 변경 요청을 기반으로 작동하며 긴 트랜잭션 모델과 많은 공통점이 있습니다.다만, 변경의 기초로서 특정의 설정을 사용해 개시합니다.그런 다음 들어오는 개별 변경 요청에 따라 변경됩니다.그런 다음 기준 버전에 독립적으로 저장된 변경 사항 집합을 적용하여 제품의 새 구성이 생성됩니다.
이 항목에서는 메타 모델(프로세스 데이터 다이어그램)을 포함한 체크아웃/체크인 동기화 모델에 대해 설명합니다.체크아웃/체크인 모델도 위에서 설명한 다른 모델의 일부로 포함되므로 이에 대해 더 자세히 설명합니다.상세하게 설명되지 않은 문제는 나머지 3개의 동기화 모델과 CI의 실제 편집 및 이와 관련된 방법입니다.
어휘
| 개념. | 정의. |
|---|---|
| 버전 | 버전은 이전 상태 또는 조건과 다른 개체 또는 개념의 상태입니다. |
| 구성 항목 | 버전 관리 하에 있는 소프트웨어 또는 문서 요소.CI 그룹은 CI로도 정의할 수 있다(Crnkovic 등, 2003). |
| 구성 항목 내역 | 버전 스탬프를 용이하게 하기 위한 개념.모든 버전에 공통되는 속성에서 버전 고유의 속성을 분할합니다(Van de Weerd, 2005). |
| 문서 | 많은 종류의 문서가 소프트웨어 엔지니어링의 일부입니다.소프트웨어 아키텍처, 기술 문서, 사용자 매뉴얼 등을 설명하는 문서를 검토합니다. |
| 소스 코드 파일 | 소스 코드 파일에는 사람이 읽을 수 있는 컴퓨터 프로그래밍 언어로 작성된 일련의 문장이 포함되어 있습니다.컴퓨터 프로그램의 소스 코드는 사람이 읽을 수 있는 형식에서 동등한 컴퓨터 실행 형식으로 변환할 수 있는 파일의 모음입니다. |
| 저장소 | 저장소는 볼트라고도 합니다.리포지토리에는 구성 항목의 전체 버전이 하나만 포함됩니다.버전 간의 차이는 보통 델타 알고리즘을 사용하여 저장됩니다(Crnkovic, Asklund & Persson-Dahlqvist, 2003). |
| 버전 관리 조직 | CI 버전은 다양한 방법으로 구성될 수 있습니다.이는 버전 구성을 설명하는 개념의 모체이다(Crnkovic et al., |
| 분점 | 병렬 개발 라인으로 구성된 버전(Crnkovic et al., 2003). |
| 리비전 | 일련의 형태로 정리된 버전(Crnkovic 등, 2003). |
| 개발 상태 | 소프트웨어 개발이 어떻게 진행되었는지, 그리고 얼마나 더 많은 개발이 필요한지 나타냅니다.제품의 각 메이저 버전은 보통 새로운 기능이 추가된 단계(알파 스테이지/상태), 그리고 액티브하게 디버깅되는 단계(베타 스테이지/상태), 마지막으로 모든 중요한 버그가 제거되는 단계(안정 스테이지/상태)를 거칩니다. |
체크아웃/체크인 모델 상세
이 섹션에서는 체크아웃/체크인 동기화 모델에 대해 자세히 설명합니다.
프로세스 데이터 다이어그램
위의 프로세스 데이터 다이어그램은 체크아웃/체크인 동기화 모델에 적용할 수 있는 다양한 개념과 실행되는 활동과의 관계를 설명합니다.메타 데이터 모델의 중심(그림 오른쪽)은 구성 항목입니다.이것은 하나 이상의 저장소에 저장되며, 예를 들어 소스 코드 파일이나 다른 CI 모음일 수 있습니다.저장소에는 여러 분기 및 파일 리비전이 포함될 수 있습니다.이들은 구성 항목으로 구성됩니다.
메타 프로세스 모델(그림 왼쪽)은 체크아웃 및 체크인 작업의 프로세스를 설명합니다.아래 활동 표에 활동이 설명되어 있습니다.
| 활동 | 서브 액티비티 | 정의. |
|---|---|---|
| 체크아웃 | 저장소에서 파일을 직접 읽거나 변경하지 않습니다.체크 아웃에서는, 이러한 액티비티에 대해 설명합니다. | |
| CI 복사 | 특정 버전의 CI가 저장소에서 복사됩니다. | |
| 잠금 CI | 쓰기 액세스가 필요하고 CI가 다른 사용자에 의해 아직 잠겨 있지 않은 경우 CI가 잠겨 있습니다.그렇지 않으면 CI를 저장소에 다시 쓸 수 없습니다(읽기 전용 액세스). | |
| CI 변경 | CI를 편집하는 사용자가 CI를 변경합니다.버전 관리에 관한 현재 메타모델의 범위를 벗어납니다. | |
| 체크인 | CI를 저장소에 다시 배치해야 합니다.체크인에서는 이러한 액티비티에 대해 설명합니다. | |
| 버전 관리 전략 선택 | 새 CI는 버전 관리 전략을 사용하여 저장소에 다시 배치해야 합니다.CI를 저장소에 다시 배치하는 데 사용되는 전략의 선택에 대해 설명합니다. | |
| 분기 생성 | CI가 새 분기의 시작점으로 선택됩니다. | |
| 리비전 작성 | CI가 다른 CI의 개정으로 선택되었습니다. | |
| 개발상태선택 | CI는 특정 개발 상태에 있는 것으로 판단됩니다. | |
| CI 쓰기 | CI는 저장소에 저장됩니다. | |
| CI 잠금 해제 | CI의 잠금이 해제됩니다. |
평가하기
Feiler(1991)는 체크아웃/체크인 동기화 모델을 평가했다.사용하기 쉽고 이해하기 쉽다는 분명한 장점이 있습니다.그러나 이러한 단순성으로 인해 논리적으로 연결된 여러 파일의 제품 버전 추적 및 버전 기록 확인과 같은 구성 관리가 부족하게 됩니다.
잠긴 파일은 다른 사람이 편집할 수 없기 때문에 많은 개발자와 함께 작업할 때도 잠금 전환 메커니즘은 매우 문제가 됩니다.
예
이 섹션에서는 체크아웃/체크인 동기화 모델을 설명하기 위해 이 프로세스의 작동 예를 보여 줍니다.아래 그림은 CI 상태 전이도를 나타냅니다.
CI가 처음 생성되면 CI가 수정되어 저장소에 저장됩니다.CI를 열도록 요청하면 먼저 개발자의 로컬 머신에 CI가 복사됩니다(주의: 저장소에서 직접 편집이 이루어지는 시스템이 있습니다).그러나 복사 단계는 전형적인 체크아웃/체크인 방식입니다).개발자도 CI를 편집하려고 할 때 잠금을 요청합니다.이 작업은 CI를 열라는 요청에 따라 직접 수행될 수 있지만, 잠시 읽은 후에 수행될 수도 있습니다.CI가 아직 잠겨 있지 않으면 잠금이 적용되어 개발자가 수정할 수 있습니다.수정이 완료되면 저장소로 다시 저장되고 잠금이 해제됩니다.방금 설명한 개발자가 저장소에 이미 있는 CI를 편집하고 있다고 가정합니다.저장소에서 CI를 열어서 로컬 드라이브에 복사하려고 합니다.읽기 시작하고 바꾸고 싶은 내용이 발견되면 편집을 요청합니다.단, CI는 이미 잠겨 있기 때문에 잠금이 해제될 때까지 기다리거나 파일을 닫고 다른 CI로 진행해야 합니다.
「 」를 참조해 주세요.
레퍼런스
- Crnkovic, I.; Asklund, U.; Persson-Dahlqvist, A. (2003), Implementing and Integrating Product Data Management and Software Configuration Management, London: Artech House Publishers
- Feiler, P. H. (1991), "Configuration Management Models in Commercial Environments", Technical report CMU/SEI-91-TR-7, Software Engineering Institute, Carnegie Mellon University
- Van de Weerd, I. (2005), Meta-modeling technique – draft for the course Method Engineering 05/06

