本篇主要介绍互联网软件开发过程中,关于软件版本定义的规范。
1.为什么要做这件事情?
在工作中,对于一个会工作并懂得工作的意义的人,做每件事情前都会想3个问题:
1.为什么要做这件事;2.怎么做;3什么时候做。
很多开发人员都没有经历过产品不断的迭代过程,基本上都是做完一套,至多经历一两个版本的迭代,基本上都会调入到另一个项目组或者离职,之后这样的事情不断地重复,直至离开这个行业。
大家可以模拟下,如果你是一个老大,管理一套不断迭代的系统的时候,开发人员3个月开发一个版本,定位version1,如果有bug,修复后该怎么升级这个版本号呢?可能是version2,修复这个bug后,如果还有bug呢,可能继续version3.,如果这样下去,还没到产品上线,你这个版本号都会很大,而且很难记得哪一版有什么功能。如果产品上线了以后,还会升级,大家可以想象一下,这样下去后,可能到达了version9999....如果产品要卖给N的客户,每个客户都会有不同的需求的时候,请问,你该怎么选出他们想要的版本。答案固然是:望洋兴叹。
在这样的数字面前,产品不再是产品了,只能是一堆代码了,所以,版本号定义的关键之一就是:当市场需要什么样的功能的时候,研发团队要能够给出相应的产品。
2.命名格式
版本控制比较普遍的 3 种命名格式 :GNU 风格的版本号命名格式、Windows 风格的版本号命名格式、.Net Framework 风格的版本号命名格式。因为目前市场上的软件基本上都是移动端化了,所以这里主要介绍GNU风格。
版本格式:主版本号 . 子版本号 [. 修正版本号 [. 编译版本号 ]],(中括号标识可选的意思)
版本号递增规则如下:
主版本号:当你做了不兼容的 API 修改,
子版本号:当你做了向下兼容的功能性新增,
修订号:当你做了向下兼容的问题修正,
编译版本号:编译器在编译过程中自动生成的,我们只定义其格式,并不进行人为控制;其中包含日期版本号和希腊字母版本号
2.1.日期版本号:用于记录修改项目的当前日期,每天对项目的修改都需要更改日期版本号。此版本号由开发人员决定是否修改。
2.1.希腊字母版本号:此版本号用于标注当前版本的软件处于哪个开发阶段,当软件进入到另一个阶段时需要修改此版本号。此版本号由项目决定是否修改。
2.1.1.软件版本阶段说明
* α(Alpha)版:内测版。此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,或者专业测试人员测试用,一般而言,该版本软件的Bug较多,需要继续修改。
* β(Beta)版:公测版。该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过多次测试来进一步消除,此版本主要的修改对像是软件的UI,供专业爱好者大规模测试用。
* RC 版:是 Release Candidate 的缩写,意思是发布倒计时,候选版本,该版本已经相当成熟了,完成全部功能并清除大部分的BUG,基本上不存在导致错误的BUG,与即将发行的正式版相差无几。
* Release 版:该版本意味“最终版本”,在前面版本的一系列测试版之后,终归会有一个正式版本,是最终交付用户使用的一个版本。该版本有时也称为标准版。一般情况下,Release不会以单词形式出现在软件封面上,取而代之的是符号(R)。
举例:1.1.1.051021_beta。