패키징과 형상 관리
쉽게 말하면
다 만든 프로그램을 사용자에게 건네려면 설치하기 좋게 묶어야 해요. 이걸 패키징이라 해요. 불법 복제를 막으려고 DRM이라는 저작권 보호 기술도 넣어요. 그리고 개발하는 동안 코드와 문서가 계속 바뀌니까, 누가 언제 무엇을 바꿨는지 기록하고 관리해야 해요. 이게 형상 관리이고, Git 같은 버전 관리 도구가 그 일을 도와줘요.
시험용 정의
제품 소프트웨어 패키징은 개발한 소프트웨어를 사용자가 설치·사용하기 좋게 묶는 것으로, 사용자 중심으로 진행하며 모듈화해 신규·변경 개발 소스를 함께 관리한다. 설치·사용자 매뉴얼도 함께 만든다. DRM(Digital Rights Management)은 디지털 콘텐츠의 저작권을 보호하는 기술로 구성 요소는 콘텐츠 제공자, 콘텐츠 분배자, 패키저, 보안 컨테이너, DRM 컨트롤러, 클리어링 하우스(라이선스·키 관리) 등이다. 형상 관리(SCM, Software Configuration Management)는 개발 산출물의 변경을 관리하며 절차는 식별 → 통제 → 감사 → 기록(보고)이다. 버전 관리 도구는 공유 폴더 방식(RCS, SCCS), 클라이언트·서버 방식(CVS, SVN), 분산 저장소 방식(Git, Bitkeeper)으로 나뉜다. 빌드 도구는 소스를 실행 파일로 만드는 과정을 자동화한다(Ant, Maven, Gradle, Jenkins).
비유로 이해하기
출판에 비유하면 패키징은 원고를 책으로 묶어 서점에 내는 것, DRM은 복사 방지 봉인, 형상 관리는 원고의 수정 이력 노트(누가, 언제, 어느 쪽을 고쳤는지)다.
자세히
먼저 알아 둘 말
| 말 | 뜻 |
|---|---|
| 형상 항목 | 형상 관리 대상이 되는 산출물 (소스, 설계서, 매뉴얼) |
| 베이스라인 | 정식으로 검토·승인되어 기준이 된 형상 |
| 저장소(Repository) | 버전 관리 대상 파일과 이력이 모인 곳 |
| 체크아웃 / 체크인 / 커밋 | 저장소에서 파일 받기 / 고친 파일 올리기 / 변경 확정 |
| 빌드 | 소스 코드를 컴파일·연결해 실행 가능한 형태로 만드는 것 |
| 클리어링 하우스 | DRM에서 라이선스 발급과 키 관리, 결제를 맡는 곳 |
형상 관리 절차
| 단계 | 하는 일 |
|---|---|
| 형상 식별 | 관리 대상 항목을 정하고 이름·버전 번호를 붙인다 |
| 형상 통제 | 변경 요청을 검토·승인해 베이스라인에 반영 (형상 통제 위원회 CCB) |
| 형상 감사 | 베이스라인 변경이 올바른지 검증·검토 |
| 형상 기록(보고) | 변경 내용을 기록하고 보고 |
버전 관리 도구
| 방식 | 도구 | 특징 |
|---|---|---|
| 공유 폴더 | RCS, SCCS | 공유 폴더에 복사해 관리 |
| 클라이언트·서버 | CVS, SVN(Subversion) | 중앙 서버 저장소 하나. 서버 장애 시 협업 곤란 |
| 분산 저장소 | Git, Bitkeeper | 개발자 PC마다 로컬 저장소. 오프라인 작업 가능, 원격 저장소와 동기화 |
Git 기본 명령
| 명령 | 뜻 |
|---|---|
| git add | 변경 파일을 스테이징 영역에 올린다 |
| git commit | 스테이징한 변경을 로컬 저장소에 기록 |
| git push / pull | 원격 저장소로 올리기 / 원격에서 받아 합치기 |
| git branch / checkout / merge | 가지 만들기 / 가지 바꾸기 / 가지 합치기 |
DRM 기술 요소
암호화, 키 관리, 암호화 파일 생성(패키저), 식별 기술, 저작권 표현, 정책 관리, 크랙 방지, 인증. 보안 컨테이너는 콘텐츠를 안전하게 유통하기 위한 전자적 보안 장치다.
기출에서 더 나온 것
| 말 | 뜻 |
|---|---|
| DRM 구성 요소 | 콘텐츠 제공자, 콘텐츠 분배자(유통), 패키저(메타데이터와 함께 배포 단위로 묶기), 보안 컨테이너, DRM 컨트롤러, 클리어링 하우스(라이선스 발급·관리) |
| RCS | 파일 단위 버전 관리 도구. 같은 파일을 동시에 고치지 못하게 잠그고 변경 내역을 추적한다 |
| 형상 통제 | 변경 요구를 검토해 승인된 것만 반영한다. 요구를 즉시 다 받아들이지 않는다 |
| 설치 매뉴얼 | 사용자 기준으로 설치 전 과정·예외 상황·삭제 방법을 적는다 (개발 기간은 넣지 않음) |
시험에 이렇게 나와요
- 형상 관리 → 개발 과정의 변경 사항을 관리. 절차는 식별 → 통제 → 감사 → 기록
- 형상 관리 대상 → 요구 분석서·설계서·소스 코드·설치 지침서 (개발 비용은 아님)
- 버전 관리 용어 → 체크인(저장소에 새 버전 올림)·체크아웃·커밋, 분산 저장소 방식 → Git
- 빌드 도구 → Ant·Maven·Gradle·Jenkins (Kerberos는 인증 프로토콜)
- DRM 기술 요소 → 암호화·키 관리·식별 체계·정책 관리·크랙 방지·라이선스 관리 (방화벽, 오류 감지·복구는 아님)
- 패키징 → 사용자 중심, 이기종 연동 고려, 내부 콘텐츠 암호화 고려
확인 문제
Q1. 소프트웨어 개발 중 바뀌는 코드·문서를 식별하고, 변경을 통제하고, 기록하는 활동은?
- 패키징
- 리팩토링
- 인스펙션
- 형상 관리
정답 보기
4번 형상 관리
형상 관리(SCM)는 개발 과정의 변경 사항을 관리하는 활동으로 형상 식별 → 형상 통제 → 형상 감사 → 형상 기록으로 진행한다.
Q2. 형상 관리 절차로 옳은 것은?
- 식별 → 통제 → 감사 → 기록
- 감사 → 식별 → 통제 → 기록
- 통제 → 식별 → 기록 → 감사
- 식별 → 감사 → 통제 → 기록
정답 보기
1번 식별 → 통제 → 감사 → 기록
무엇을 관리할지 정하고, 변경을 통제하고, 검증하고, 기록한다.
Q3. DRM에서 저작권자와 사용자 사이의 라이선스 발급과 키 관리를 맡는 것은?
- 콘텐츠 분배자
- 보안 컨테이너
- 클리어링 하우스
- 패키저
정답 보기
3번 클리어링 하우스
클리어링 하우스다. 라이선스를 발급하고 키를 관리한다. 패키저는 콘텐츠를 암호화해 묶고, 보안 컨테이너는 콘텐츠를 안전하게 담는 장치다.
Q4. 분산 저장소 방식의 버전 관리 도구는?
- Git
- RCS
- SVN
- CVS
정답 보기
1번 Git
Git은 로컬 저장소와 원격 저장소를 둔다.
Q5. 제품 소프트웨어 패키징에 대한 설명으로 틀린 것은?
- 매뉴얼과 버전 관리를 함께 고려한다
- 사용자 중심으로 진행한다
- 신규·변경 개발 소스를 식별해 모듈화한다
- 개발자 편의를 가장 우선한다
정답 보기
4번 개발자 편의를 가장 우선한다
'개발자 편의를 가장 우선한다'가 틀리다. 패키징은 사용자 중심으로 진행한다.
헷갈리기 쉬운 O·X
SVN은 개발자마다 완전한 로컬 저장소를 가지는 분산 버전 관리 도구다.
정답 보기
X SVN은 중앙 서버형. 분산은 Git.
형상 통제는 변경 요청을 검토하고 승인해 베이스라인에 반영하는 단계다.
정답 보기
O
Jenkins는 빌드와 배포를 자동화하는 데 쓰는 도구다.
정답 보기
O 지속적 통합(CI) 도구로 많이 쓴다.