형상관리
- 소프트웨어 개발 프로세스 각 단계에서 변경점을 체계적으로 추적하고 관리하는 일련의 모든 활동
- 요구사항은 항상 변화되므로 소스코드도 함께 변화하므로 형상관리가 중요
- 형상관리를 통해 리스크를 최소화하고 소프트웨어의 품질을 확보할 수 있다.
형상관리의 대상
- SW 개발 모든 단계에서 발생하는 산출물
- 요구사항 도출 단계 : 서비스 정의서, 요구사항 명세서
- 디자인 단계 : 스토리보드, 와이어프레임, SW 아키텍처 문서
- 구현 단계 : 소스코드, API문서, 개발자 가이드 문서
Git
- 소스코드를 효율적으로 관리하기 위한 형상관리 도구
- Git 이외에도 SVN, CVS 등 여러 가지가 있음
- Git의 목표
- 빠른 속도
- 단순한 구조
- 비선형적인 개발(수천 개 동시 다발적인 병렬 개발과 공유)
- 완벽한 분산
- Linux 커널과 같은 대규모 프로젝트에 유용
중앙 집중식 관리와 분산 집중식 관리의 차이
중앙 집중형 버전 관리
- CVS, SVN 등이 있음
- 원격 서버에는 공동으로 개발하는 소스코드 풀 셋이 존재
- 각 개발자는 특정 파일을 가져와서 개발 작업을 진행하고, 작업 완료 시 원격 서버로 내보내는 구조
- 직관적이고 간단하다는 장점
- but, 네트워크가 끊기면 협업 자체가 불가능해짐. 원격 서버에 문제가 생겨서 개발 소스코드가 손실이 된다면 복구가 매우 힘듦
분산 집중형 버전 관리
- Git, Mercurial 등이 있음
- 원격 서버에는 공동으로 개발하고 있는 소스코드 풀 셋이 존재
- 개발자의 로컬 저장소에도 동일한 풀 셋이 존재하므로, 동일한 파일에 대해서 개발하고 확인할 수 있음.
- 로컬 저장소에도 풀 셋이 존재하기 때문에 원격 서버 코드가 손실이 되어도 복구가 가능함.
- 커맨드 기반으로 사용
- 브랜치, 스테이징, 워크 플로우 등의 다양한 기능이 있으므로 많이 사용하고 있음.