기출 소스 코드 형상관리(Source Code Configuration Management)

agnusdei·2025년 6월 25일

Software Engineering

목록 보기
41/59

소스 코드 형상관리(Source Code Configuration Management)

문제

소스 코드 형상관리(Source Code Configuration Management) 업무 프로세스를 설정(Setup)하고 형상 통제(Configuration Control) 업무 흐름도(Work Flow)에 대하여 설명하시오.

답변

1. 소스 코드 형상관리(SCM)의 개념

개념

  • 소스 코드 형상관리(SCM: Source Code Configuration Management)는 소프트웨어 개발 과정에서 생성되는 소스 코드 및 관련 산출물의 변경사항을 체계적으로 추적, 관리하는 활동
  • 소프트웨어 개발 생명주기 전반에 걸쳐 일관성과 무결성을 보장하는 기법

목적

  • 소스 코드의 버전 관리 및 이력 추적
  • 개발자 간 협업 지원 및 충돌 방지
  • 릴리스 관리 및 배포 프로세스 최적화
  • 소프트웨어 품질 보증 및 감사 지원
  • 개발 비용 절감 및 생산성 향상

2. 소스 코드 형상관리 업무 프로세스 설정(Setup)

1) SCM 환경 구축

  • 저장소(Repository) 설정

    • 중앙집중식(Centralized) 또는 분산형(Distributed) 저장소 구축
    • 접근 권한 및 보안 정책 수립
    • 백업 및 복구 전략 수립
  • 형상관리 도구 선정 및 구축

    • 프로젝트 특성에 맞는 도구 선정(Git, SVN, Mercurial 등)
    • 빌드 자동화 도구(Jenkins, TeamCity 등) 연동
    • 이슈 추적 시스템(Jira, Redmine 등) 연동

2) 형상 식별(Configuration Identification)

  • 형상 항목 식별

    • 소스 코드, 라이브러리, 설정 파일, 문서 등 관리 대상 정의
    • 구성 요소별 식별자(ID) 체계 수립
  • 디렉토리 구조 설계

    • 프로젝트 구조화 방식 정의
    • 브랜치 전략 수립(Git-Flow, GitHub-Flow 등)
    • 태그(Tag) 및 레이블(Label) 체계 수립

3) 접근 제어 및 권한 관리

  • 역할 기반 접근 제어(RBAC) 설정

    • 개발자, 리뷰어, 관리자, 릴리스 담당자 등 역할 정의
    • 역할별 권한 매트릭스 설정
  • 환경별 분리

    • 개발(Development), 테스트(Test), 스테이징(Staging), 운영(Production) 환경 분리
    • 환경별 접근 제어 정책 수립

4) 프로세스 및 워크플로우 정의

  • 개발 워크플로우 설정

    • 코드 작성 및 커밋 규칙
    • 브랜치 생성 및 병합 전략
    • 코드 리뷰 프로세스
    • 테스트 및 빌드 자동화 체계
  • 릴리스 관리 프로세스 정의

    • 릴리스 계획 및 일정 관리
    • 버전 번호 체계(Semantic Versioning 등) 수립
    • 릴리스 노트 작성 규칙

3. 형상 통제(Configuration Control) 업무 흐름도(Work Flow)

1) 기본 형상 통제 워크플로우

[변경 요청] → [변경 평가] → [변경 승인] → [개발 작업] → [코드 리뷰] → [테스트] → [형상 통합] → [릴리스]

2) 상세 워크플로우 단계

1. 변경 요청(Change Request)

  • 기능 추가, 버그 수정 등 변경 요구사항 식별
  • 이슈 추적 시스템에 변경 요청 등록
  • 요구사항 명세 및 관련 문서 작성

2. 변경 평가(Change Evaluation)

  • 변경 요청 검토 및 우선순위 지정
  • 영향도 분석 및 리소스 할당
  • 일정 및 비용 검토

3. 변경 승인(Change Approval)

  • 형상통제위원회(CCB: Configuration Control Board) 또는 책임자 승인
  • 변경 작업 일정 확정
  • 작업 담당자 배정

4. 개발 작업(Development)

  • 작업 브랜치 생성(Feature Branch)
  • 코드 작성 및 단위 테스트
  • 커밋 메시지 작성 규칙 준수
  • 지속적 통합(CI) 수행

5. 코드 리뷰(Code Review)

  • 풀 리퀘스트(Pull Request) 또는 머지 리퀘스트(Merge Request) 생성
  • 코드 품질 검증(정적 분석, 코딩 표준 준수)
  • 피어 리뷰(Peer Review) 수행
  • 리뷰 의견 반영 및 수정

6. 테스트(Testing)

  • 자동화된 테스트 수행(단위/통합/시스템 테스트)
  • 회귀 테스트(Regression Testing)
  • 테스트 결과 문서화

7. 형상 통합(Integration)

  • 작업 브랜치를 메인 브랜치(Main/Master)에 병합
  • 통합 테스트 수행
  • 빌드 검증

8. 릴리스(Release)

  • 릴리스 브랜치 생성
  • 버전 태그 지정
  • 릴리스 노트 작성
  • 산출물 배포

3) Git 기반 형상 통제 워크플로우 예시

Git-Flow 모델

Git-Flow 모델

  1. Feature 개발 흐름

    [develop 브랜치] → [feature 브랜치 생성] → [코드 개발] → [코드 리뷰] → [develop 브랜치에 병합]
  2. 릴리스 흐름

    [develop 브랜치] → [release 브랜치 생성] → [버그 수정] → [master 및 develop 브랜치에 병합] → [버전 태그 지정]
  3. 긴급 수정(Hotfix) 흐름

    [master 브랜치] → [hotfix 브랜치 생성] → [버그 수정] → [master 및 develop 브랜치에 병합] → [버전 태그 지정]

4. 형상관리 도구 비교

도구유형주요 특징장점단점
Git분산형브랜치 관리 용이, 오프라인 작업 가능속도 빠름, 병렬 개발 용이학습 곡선 높음, 대용량 파일 관리 어려움
SVN중앙집중식단순한 구조, 부분 체크아웃 지원직관적인 사용법, 접근 제어 용이브랜치/병합 복잡, 오프라인 작업 제한
Mercurial분산형직관적 인터페이스, 확장성사용 편의성, 성능 우수Git 대비 생태계 작음
Perforce중앙집중식대용량 파일 처리, 세밀한 권한 제어엔터프라이즈급 성능, 안정성비용 높음, 복잡한 설정

5. 형상관리 자동화 및 CI/CD 연계

CI/CD 파이프라인과 형상관리 연계

  • 코드 커밋 시 자동 빌드 및 테스트
  • 지속적 통합(CI) 및 지속적 배포(CD) 자동화
  • 코드 품질 분석 도구 연동(SonarQube 등)
  • 배포 파이프라인 구성

형상관리 지표 및 모니터링

  • 커밋 빈도 및 코드 변경 볼륨
  • 브랜치 수명 및 병합 시간
  • 빌드 성공률 및 테스트 커버리지
  • 릴리스 주기 및 안정성

6. 핵심 용어 정리

  • 저장소(Repository): 소스 코드 및 관련 파일을 저장하는 중앙 저장소
  • 브랜치(Branch): 메인 개발 라인에서 분기된 독립적인 개발 라인
  • 커밋(Commit): 소스 코드의 변경사항을 저장소에 기록하는 작업
  • 병합(Merge): 서로 다른 브랜치의 변경사항을 하나로 통합하는 작업
  • 태그(Tag): 특정 커밋에 부여된 의미 있는 이름(주로 릴리스 버전)
  • 체크아웃(Checkout): 특정 버전의 소스 코드를 작업 공간으로 가져오는 작업
  • 형상 통제 위원회(CCB): 변경 요청을 검토하고 승인하는 공식 조직

7. 어린이 버전 요약

소스 코드 형상관리는 "디지털 타임머신"과 같습니다. 코드의 모든 변경 사항을 기록하고, 필요할 때 과거 버전으로 돌아갈 수 있게 해줍니다. 여러 사람이 함께 작업할 때 서로의 작업이 섞이지 않도록 도와주는 교통정리 역할도 합니다.

형상 통제 업무 흐름도는 "코드의 여행 지도"입니다. 코드가 아이디어에서 시작해 테스트를 거쳐 최종 제품에 포함되기까지의 여정을 보여줍니다. 이 지도를 따라가면 코드의 품질을 유지하고 여러 개발자가 충돌 없이 작업할 수 있습니다.

profile
DevSecOps, Pentest, Cloud(OpenStack), Develop, Data Engineering, AI-Agent

0개의 댓글