Skip to content
난이도 출제 빈출문제은행 6

형상 관리와 빌드 도구 ​

형상 관리(SCM, Software Configuration Management)는 개발 중에 생기는 소스·문서의 변경을 추적하고 통제하는 활동이다. 여러 사람이 같은 코드를 고쳐도 누가 무엇을 언제 바꿨는지 잃지 않게 해 준다. 시험은 형상 관리 활동, 버전 관리 용어, 도구 이름과 빌드 자동화 도구를 묻는다.

형상 관리 활동 ​

형상 관리는 유지보수까지 개발 전 단계에서 한다. 변경을 마구 받아들이면 어느 코드가 진짜 최신인지 모르게 되고, 결함이 들어와도 원인을 되짚을 수 없다. 그래서 공식적으로 합의한 기준 상태인 기준선(baseline)을 두고, 변경은 절차를 거쳐서만 반영한다.

활동하는 일
형상 식별무엇을 관리할지 정하고 이름·번호 붙이기
형상 통제변경 요청을 심사해 승인·반려
형상 감사기준선이 요구대로 빠짐없는지 점검·승인
형상 기록진행 상태를 기록하고 보고서로 알림

형상 통제는 변경 요청 심사, 형상 감사는 기준선 점검·승인, 형상 기록은 보고서 작성이 단서다. 영어로 형상 기록은 상태 보고(status accounting)다. 영문 자료는 이 넷을 식별, 통제, 상태 보고, 감사 순으로 적기도 하므로 넷은 정해진 순서라기보다 나란히 도는 활동이다. 시험 자료는 여기에 버전 제어를 더해 다섯 기능으로 묻기도 한다. 예를 들어 1.0을 쓰는 고객, 1.1을 쓰는 고객, 개발 중인 2.0이 동시에 있으면 각 버전이 어떤 소스·문서 묶음으로 이루어졌는지 따로 추적해야 하는데, 이것이 버전 제어다.

버전 관리 용어 ​

새 프로젝트를 시작한 팀의 하루로 용어를 따라가 보자. 팀장이 서버에 모든 버전과 변경 기록을 쌓아 둘 저장소(repository)를 만들고, 첫 소스를 넣는다. 이것이 가져오기(import)다. 팀원 A는 고칠 파일을 저장소에서 내려받아 작업하는데, 이를 체크아웃(check-out)이라 한다. 수정을 마치고 파일을 새 버전으로 올리는 것이 체크인(check-in)이다. 체크인을 확정하는 커밋(commit) 때 B가 같은 곳을 먼저 고쳐 두었다면 충돌(conflict)이 알려지고, 두 사람이 고친 내용을 비교해 주는 도구(diff 도구)로 차이를 확인하고 직접 합친 뒤 다시 커밋한다. 다음 날 아침 B가 저장소의 최신 내용으로 자기 작업 공간을 맞추는 일은 동기화(update)다.

중앙 집중형과 분산형 ​

CVS와 SVN(Subversion)은 중앙 저장소 하나에 이력을 모으는 중앙 집중형이다. 관리가 쉽지만 중앙 서버가 멈추면 누구도 이력을 저장할 수 없다. Git은 분산형으로, 각 개발자가 저장소 전체 이력을 지역 저장소(local repository)로 복제해 가진다. Mercurial·Bazaar도 같은 분산형이다. 원격 저장소(remote repository)에 문제가 생겨도 지역 저장소로 작업하고 복구할 수 있다.

Git에서는 git add로 변경을 커밋 대상에 올리고, git commit으로 지역 저장소에 기록한다. 원격 저장소에 반영하려면 git push를, 원격의 변경을 받아 합치려면 git pull을 한다.

빌드 자동화 도구 ​

빌드 자동화 도구는 소스를 실행 가능한 결과물로 만드는 컴파일·테스트·배포를 사람 손 없이 반복해 준다. 코드를 자주 합치고 그때마다 자동으로 빌드·테스트하는 지속적 통합(continuous integration, CI)에서 특히 중요하다.

도구특징
Make유닉스 시절부터 쓴 도구, Makefile
AntJava용, XML로 빌드 절차 기술
MavenJava용, XML(pom.xml), 의존성 관리
GradleGroovy·Kotlin DSL, 안드로이드 기본
JenkinsJava 기반 CI 서버, 웹에서 설정

Gradle은 빌드 스크립트를 Groovy나 Kotlin으로 만든 DSL(Domain Specific Language, 도메인 특화 언어)로 쓴다. 시험은 "Groovy 기반"으로 묻지만, Gradle 8.2부터 gradle init으로 새 프로젝트를 만들 때의 기본 스크립트는 Kotlin DSL이다. Jenkins는 Maven·Gradle 같은 도구를 불러 CI 과정을 돌리는 서버다.

시험 포인트 ​

  • 형상 관리 활동: 식별, 통제, 감사, 기록(시험은 버전 제어를 더해 다섯). 대표 도구 Git·SVN·CVS.
  • "변경 요청 심사·승인" → 형상 통제. "기준선이 온전한지 점검·공식 승인" → 형상 감사.
  • 지역 저장소와 원격 저장소를 함께 쓰는 분산형 → Git. 중앙 집중형 → SVN·CVS.
  • "Groovy 기반, 안드로이드 빌드" → Gradle. "Java 기반 CI 서버" → Jenkins.

관련 문서