Contents
소프트웨어 개발을 하다 보면 버전 관리를 해야할때가 옵니다.
이번 글에서는 버전에 대한 설명과 표준화된 내용을 공유드립니다.
소프트웨어 버전이란
소프트웨어 버전 번호는 사용자에게 소프트웨어의 상태와 변경 내용을 알려주는 역할을 합니다.
그리고 개발자에게는 버전 관리를 통해 소프트웨어를 신뢰성 있게 유지하고 업데이트 관리를 할 수 있게 합니다.
소프트웨어 버전 관리의 필요성
변경 내역 추적과 히스토리 관리
소프트웨어 개발은 변경이 빈번하게 발생합니다.
버전관리 시스템을 사용하면 어떤 부분이 언제,어떻게 변경되었는지 추적할 수 있습니다.
이것은 버그 추적, 기능 개발 및 이전 버전 복원을 도와줄 수 있습니다.
협업 능률 향상
그리고 소프트웨어를 1인이 개발하는 경우도 있지만 다수의 인원이 개발하는 경우도 있습니다.
이때 팀원들 간의 협업이 필수적인데, 버전 관리를 통해 여러 개발자가 동시에 작업하고 변경 내용을 통합하는 과정을 간소화 할 수 있습니다.
이로써 작업 간의 충돌을 최소화하고 생산성을 향상시킬 수 있습니다.
안정성과 신뢰성 강화
소프트웨어는 안정성과 신뢰성이 중요합니다.
버전관리를 통해 소프트웨어의 이전 버전으로 롤백하거나 버그가 발생했을 때 문제를 해결하며 안정성을 확보할 수 있습니다.
표준화된 버전 번호 관리( Semantic Versioning)
Semantic Versioning(시멘틱 버저닝)은 Github의 공동창업자인 Tom Preston-Werner가 제안한 소프트웨어 버전 번호 관리 규칙입니다.
Semantic Versioning을 줄여 SemVer이라고 하며 해당 제안을 간단하게 요약한 내용은 아래와 같습니다.
기본 형식

- 버전 번호는 Major.Minor.Patch의 형태로 관리하고 Major.Minor.Patch는 각각 자연수이며 앞에 0을 붙여서는 안됩니다.
- 각 번호는 항상 증가해야 합니다.
- 부모 버전이 증가할때 자식 버전은 0으로 초기화 합니다.
- 배포 후 해당 버전의 내용은 절대 변경하면 안되며 반영해야 할 사항이 있다면 새로운 버전으로 배포를 해야 합니다.
Major 버전
- 하위 버전과 호환되지 않는 변경사항이 생겼을때
Minor 버전
- 하위 버전과 호환성은 지키며 새로운 기능이 추가됬을때
Patch 버전
- 하위 버전과 호환성은 지키며 버그가 수정되었을때
이상 소프트웨어 버전에 대해 간략하게 알아보았습니다.
다음글엔 소프트웨어 버전 관리 툴과 연동에 대해 정리해보겠습니다.