沙滩星空的博客沙滩星空的博客

软件版本号管理规范实践

版本号基本格式

软件的版本号一般由多个部分组成,最基本格式为 A.B.C
其中 A、C 和 C 分别代表 主版本号次版本号修订号

如果项目需要构建打包才能使用的,还有个构建版本号。
如:华为HMS Core中,版本号的格式为 A.B.C.D,其中 D为产品的 构建号

在主版本号、次版本号和修订号的含义如下:

  • 主版本号(MAJOR)改动:一期项目用 0.1.0;二期项目用 1.1.0;三期项目用 2.1.0;
  • 子版本号(MINOR)改动:增加了权限管理功能模块,版本号由 0.1.3 改为 0.2.0;
  • 修正版本号(PATCH)改动:修正了一个页面显示字符串,版本号由 0.1.3 改为 0.1.4;

开发阶段版本号

开发阶段版本号,又称希腊字母版本号,用于标注当前版本的软件,处于哪个 开发阶段

可以使用 - 连接符加上标识符来指定,如 v1.0.0-alpha

  • alpha: α是希腊字母的第一个,内部测试版。
  • beta: β是希腊字母的第二个,公开测试版。
  • rc: Release Candidate,表示最终测试版本,发行候选版本。正式版的前一个版本,将bug修改完就可以发布成正式版。
  • release: 用户使用的正式发布版。
    - upgrade: 修正错误或增加功能。

数据库版本管理

概念说明:数据库软件版本号和数据库结构版本号

  1. 数据库软件版本号:在数据库内执行 SELECT VERSION() SQL语句查询。 如 MySQL8.0.27 , 5.7.44 ... PostgreSQL17.015.8 ...
  2. 数据库结构版本号:与软件搭配使用的 初始数据表。包含 数据表结构,视图,存储过程,触发器,系列,包等。

数据库版本管理规范

  1. 软件版本必须锁定数据库软件版本。
  2. 数据库结构版本号,保存在数据表中。
  3. 数据库结构每次变更,必须写SQL脚本,以便数据库结构升级。
  4. 脚本名称,应包含数据库结构版本号。如果多个脚本有先后执行顺序要求,要在名称中写明顺序号。
  5. 数据库结构版本号的变更记录,包含脚本作用,对应软件产品业务功能等信息,保存在数据表中。
  6. 数据初始化: 以现有数据库对象(表,视图,存储过程,触发器,系列,包等)为基础,整理一份空数据库(基本配置数据保留),并生成脚本,与软件初始版本配套使用。

原则上,项目软件版本 始终锁定固定的 数据库软件版本 。除非出现特殊情况,如:数据库软件BUG修复更新,软件主版本大升级等。升级 数据库软件版本 应经过充分测试。

实践案例

企业基于开源软件 Odoo,定制适用自身情况的 ERP 软件产品。基于 Odoo 社区版 17.0

有如下方案:

  • 主版本号.子版本号.修正版本号, v1.0.1: 数据库结构改变时,修改 次版本号;只对数据做改动,程序不修改时,修改修正版本号
  • 开源软件大版本号.主版本号.子版本号.修正版本号, v17.1.0.1: 同上
  • 主版本号.子版本号.数据库结构版本号.修正版本号, v1.0.1.1: 新增 数据库结构版本号 部分。

第一次正式发布,主版本号为1,次版本号为0,修正版本号也复位为0,

主版本号

  1. 为非负整数,软件产品初的正式版本 以1为起始 数字。
  2. 软件架构、设计思想改变或大量重写,主版本号 +1。
  3. 主版本号改变,不支持向后兼容性,次版本号、修正版本号复位为 0。数据库结构版本号 +1

次版本号

  1. 为非负整数,以0为起始 数字。
  2. 当软件产品在原有基础上增加或变更了功能,涉及数据库的改动,次版本号 +1。此时主版本号不变,修正版本号复位为 0。数据库结构版本号 +1

数据库结构版本号

  1. 为非负整数,以1为起始 数字。
  2. 只要数据库结构有变化,数据库结构版本号 +1,不受版本号的其他部分影响。

修正版本号

  1. 为非负整数,以0为起始 数字。
  2. 当软件产品BUG修复后,修正版本号+1,此时主版本号、次版本号不变。

常见版本号风格

业界最常用的三种版本控制的命名风格:

  • GNU 风格的版本号命名格式:子版本号 [. 修正版本号 [. 编译版本号 ]] 示例 : 1.2.1, 5.0.0 build-13124
  • Windows 风格的版本号命名格式: 主版本号 . 子版本号 [ 修正版本号 [. 编译版本号 ]]
  • .Net Framework 风格的版本号命名格式: 主版本号.子版本号[.编译版本号[.修正版本号]]

应用软件版本号是怎么确定的,它有什么命名规范?https://www.zhihu.com/question/510951154/answer/2314890355
软件测试的版本号是怎么定义的? https://www.zhihu.com/question/582923764
未经允许不得转载:沙滩星空的博客 » 软件版本号管理规范实践

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址