소프트웨어 버전 작성은 소프트웨어의 특정 상태를 식별하고 추적하기 위한 체계적인 방법입니다. 개발 과정에서 발생할 수 있는 혼란을 줄이고, 사용자 및 개발자 간의 소통을 원활하게 하기 위해서 일관된 버전 작성 기준이 필요합니다.
여러 버전 관리 방법 중 Semantic Versioning (유의적 버전 관리)이 가장 널리 사용되고 있습니다. 이번 글에서는 Semantic Versioning의 개념과 규칙을 자세히 알아보겠습니다.
Semantic Versioning(세만틱 버저닝)은 GitHub 공동 창립자인 Tom Preston-Werner가 제안한 소프트웨어 버전 관리 규칙입니다. 현재 공식 사양은 2.0.0 버전입니다.
버전은 주.부.수 (MAJOR.MINOR.PATCH) 형식으로 관리하며, 공개 API의 변경 사항에 따라 규칙적으로 버전을 증가시킵니다.
예: 1.4.2
| 버전 | 의미 | 예시 |
|---|---|---|
| MAJOR | 하위 호환되지 않는 변경 발생 시 | 1.0.0 → 2.0.0 |
| MINOR | 하위 호환되는 기능 추가/개선 시 | 1.0.0 → 1.1.0 |
| PATCH | 버그 수정 등 사소한 변경 시 | 1.0.0 → 1.0.1 |
X.Y.Z 형식 (모두 0 이상의 정수)2.5.1X 증가, Y와 Z는 0으로 초기화Y 증가, Z는 0으로 초기화Z만 증가0.Y.Z는 초기 개발 단계이며, API는 안정적이지 않음PATCH: 버그 수정 (하위 호환 유지)MINOR: 새 기능 추가, 개선, 하위 호환되는 deprecateMAJOR: 하위 호환되지 않는 변경 (삭제, 변경 등)alpha, beta, rc 등으로 표기1.0.0-alpha, 1.0.0-rc.1+ 기호로 표기, 정렬 순서에는 영향을 주지 않음1.0.0+build.12311.0.0 # 첫 번째 안정 버전
21.0.1 # 버그 수정
31.1.0 # 새로운 기능 추가
42.0.0 # 하위 호환되지 않는 변경
52.0.0-alpha # 다음 주요 버전의 사전 배포
62.0.0+202308 # 빌드 메타 정보 포함주(主).부(部).수(修) 형식 (MAJOR.MINOR.PATCH)+로 추가