软件在构建的过程中是不断变化的,导致测试和开发人员对于自己手上的软件,常常不知道做了哪些改动或升级。
所以在软件工程中,常常根据软件功能的添加和软件缺陷的修复将软件划分为不同的版本,良好定义的软件版本号和完善的软件发布流程保证了软件的可规划性和可升级。
软件版本号规定
如今的大部分软件版本号分3段——[ A . B . C ],如:1.4.6。
A 主版本号
- 当软件整体重写,出现不向后兼容的改变时,增加A;
- 或者可以用来代表不同的产品型号;
B 次版本号
- 表示功能更新,出现新功能时(不影响 API 的兼容性),增加B
C 修订号
- 表示小修改,如修复bug、更改提示语字符等(不影响 API 的兼容性),只要有修改就增加C
先行版本号:部分软件还定义了先行版本号,跟在版本号后用以明示版本含义,和版本号之间使用’-‘号连接,比如:
- alpha —— 内部版本
- beta —— 测试版
- demo —— 演示版
- rc —— 即将作为正式版发布
- release —— 正式发行版
- lts —— 长期维护
- patch —— 补丁
- full —— 全部
规则:
- A、B 、C 数字范围为unsigned char的取值范围(0<= x <= 255),禁止在数字前方补零。
- 在前一段数值不变的情况下数值只能递增,如:1.9.1 -> 1.10.0 -> 1.10.1。
- 每当次版本号递增时,修订号必须归零;主版本号递增时,次版本号、修订好必须归零。
- 标记版本号的软件发行后,禁止改变该版本软件的内容。任何修改都必须以新版本发行。
- 对于发行的每个版本,都有版本说明。
- 先行版本号可以被标注在修订版之后,先加上一个连接号再加上一连串以句点分隔的标识符来修饰。标识符必须由 ASCII 字母数和连接号字(0-9 A-Z a-z -)组成,且禁止留白,数字型的标识符禁止在前方补零。范例:1.0.0-alpha、1.0.0-alpha.1、1.0.0-0.3.7、1.0.0-x.7.z.92。
关于版本号定义,某些开源项目有一些特别的规则,,可以作为参考:
- Linux用奇数版本表示开发版,偶数版本表示正式版。
- 主版本号为零(0.b.c)的软件处于开发初始阶段,1.0.0 版一般为第一个正式环境可用的版本。
- 在版本号中加日期信息,如:1.1.0.191114-beta
- 自定义先行版本号,如按照阶段定义:需求控制-a,设计阶段-b,编码阶段-c,单元测试-d,单元测试修改-e,集成测试-f,集成测试修改-g,系统测试-h,系统测试修改-i,验收测试-j,验收测试修改-k。
- 当有多人同时提交同一份文件时,可以在先行版本号段后面加入人名或缩写来区别,如:1.1.1.051021_beta_b_LiuQi.xls
软件发布流程
在研发和测试的反复迭代中,为了解决同一个问题,存在不断发布测试版本的情况。这个时候,一定不要忘了做版本号的迭代和添加版本说明,要保证每个版本出去的都要能够辨别。如果版本号因为版本规划的原因不能一直迭代,可以在文件名上做一下标注,对于关键文件记录下MD5值,方便辨别。
参考
Github 起草的Semantic Versioning(语义化版本表示) —— Semantic Versioning 2.0.0 (中文版 http://semver.org/lang/zh-CN/)
https://blog.csdn.net/d06110902002/article/details/81944568()