Introduction
1. 개요
소프트웨어 형상 관리(SCM, Software Configuration Management)는 소프트웨어 개발 및 유지보수 과정에서 변경을 효과적으로 관리하는 기술 및 절차의 집합이다. 이는 소프트웨어 제품이 개발 및 배포되는 동안 일관성과 품질을 유지하기 위해 필요한 관리 기법을 포함한다.
2. 소프트웨어 형상 관리(SCM) 개념
- 정의: 소프트웨어 엔지니어링 프로세스 내에서 특정 기준선을 설정하고 변경 사항을 평가 및 통제하는 관리 기법.
3. CMMI 내에서의 형상 관리
CMMI(Capability Maturity Model Integration) 모델에서는 소프트웨어 구성 관리가 핵심 프로세스로 간주되며, 다음의 성숙도 수준으로 나뉜다:
- Level 1 - 초기(Initial): 비체계적이고 혼란스러운 방식
- Level 2 - 관리됨(Managed): 기본적인 프로젝트 관리 및 문서화
- Level 3 - 정의됨(Defined): 표준화된 프로세스 및 절차
- Level 4 - 정량적으로 관리됨(Quantitatively Managed): 프로세스 성과 측정 및 예측 가능
- Level 5 - 최적화됨(Optimizing): 지속적 개선 및 최적화 수행
4. SCM이 아닌 것
SCM은 단순한 버전 관리가 아니며, 소스 코드 관리뿐만 아니라 문서, 설정 파일 등도 포함한다. 단순한 도구 사용이 아닌, 전체적인 프로세스 설계와 관리가 핵심이다.
5. 형상 관리 계획(CM Plan)
구성 관리 계획은 다음과 같은 요소를 포함해야 한다.
- 관리 대상(CI, Configuration Items) 정의
- 역할 및 책임 정의(누가 어떤 작업을 담당할 것인가)
- 프로세스 설계(변경 요청, 배포, 테스트 등)
- 기록 유지(로그, 설정, 변경 내역 등)
- 필요 자원 및 도구 할당
- 성과 측정 지표 정의
6. 형상 관리 역할
- 형상 관리자(Configuration Manager): 구성 항목(CI)을 정의하고 프로모션 및 릴리스 절차를 수립
- 변경 관리 위원(Change Control Board, CCB): 변경 요청 승인 또는 거부
- 개발자(Developer): 코드 변경 및 충돌 해결
- 감사관(Auditor): 릴리스의 품질 검토 및 일관성 유지
SCM Activities
SCM 활동은 다음과 같다.
- 형상 항목 식별(Configuration Item Identification)
- 형상 항목은 소프트웨어의 하드웨어 및 소프트웨어 구성 요소를 포함할 수 있다.
- 소스 코드뿐만 아니라 요구사항 문서, 디자인 문서, 테스트 계획, 사용자 매뉴얼 등이 포함됨.
- 변경 관리(Change Management)
- 변경 요청을 처리하고 승인된 변경 사항을 추적 및 적용하는 과정.
- 일반적인 변경 프로세스:
- 변경 요청 수립
- 요구사항 및 프로젝트 제약 조건 평가
- 변경 요청 승인 또는 거부
- 승인된 변경 사항 개발자에게 할당 및 구현
- 변경 사항 감사 및 검증
- Version, Revision and Release
- 버전(Version): 새로운 기능이 포함된 주요 소프트웨어 버전 (예: 1.0, 2.0)
- 개정(Revision): 버그 수정이나 사소한 변경이 포함된 버전
- 릴리스(Release): 공식적으로 배포되는 소프트웨어 버전
- Version Control Model
- 비관적(Pessimistic) 모델: Lock-Modify-Unlock (잠금 후 변경)
- 낙관적(Optimistic) 모델: Copy-Modify-Merge (복사 후 병합)
- Baseline
- 공식적으로 승인된 제품 또는 사양으로, 변경은 승인 절차를 통해서만 가능.
- 기준선 예시:
- Baseline A: API 정의 완료
- Baseline B: 데이터 접근 메서드 구현 및 테스트 완료
- Baseline C: GUI 구현 완료
- Controlling Changes
- 프로모션(Promotion): 내부 개발 상태 변경
- 릴리스(Release): 외부 사용자에게 변경된 소프트웨어 공개
- SCM Directories
- 개발자 디렉터리(Programmer’s Directory): 개발자가 자유롭게 작업하는 공간
- 마스터 디렉터리(Master Directory): Basline 관리
- 소프트웨어 저장소(Software Repository): 최종 배포 버전 보관
- 프로모션 및 릴리스 관리(Promotion and Release Management)
- 프로모션 관리(Promotion Management)
- 개발자 간 공유를 위해 새로운 버전을 생성하는 과정
- 내부적인 코드 품질 유지가 중요
- 릴리스 관리(Release Management)
- 최종 사용자(클라이언트 또는 고객)에게 배포할 버전을 생성하는 과정
- 정식 배포 전 테스트 및 검증 필수
- 프로모션 관리(Promotion Management)
- 브랜치 관리(Branch Management)
- 여러 개발자가 동시에 작업할 수 있도록 별도의 브랜치를 생성하고 이후 병합하는 과정.
- 주요 전략:
- 가능한 한 메인 트렁크와 자주 병합
- 예상 충돌 사항을 사전에 논의
- 불필요한 브랜치 최소화
- 변형 관리(Variant Management)
- 동일한 소프트웨어의 다양한 변형을 관리하는 기법.
- 두 가지 접근법:
- 독립적인 팀(Redundant Teams): 각 변형을 개별적으로 유지보수
- 단일 프로젝트(Single Project): 공통 코드와 변형별 코드를 구분하여 관리
- 빌드 관리(Build Management)
- 소스 코드에서 실행 가능한 애플리케이션을 생성하는 과정.
- 주요 작업:
- 컴파일
- 파일 복사
- 패키징
- 테스트 자동화
- 형상 감사(Configuration Audit)
- 독립적인 검토를 통해 소프트웨어 제품이 요구사항 및 표준을 준수하는지 확인.
이 활동들은 프로젝트 유형 및 수명주기에 따라 다르게 적용될 수 있다.
728x90
'Computer Science > Software Engineering' 카테고리의 다른 글
[Software Engineering] Software Maintenance and Evolution (0) | 2025.02.23 |
---|---|
[Software Engineering] Debugging (0) | 2025.02.22 |
[Software Engineering] Mutation Analysis, Automated Testing (0) | 2025.02.21 |
[Software Engineering] RBT, TDD, Test Coverage (0) | 2025.02.20 |
[Software Engineering] Testing Techniques (0) | 2025.02.19 |