浅谈软件版本号规范与项目管理

软件版本号是一个软件产品的重要组成部分,规范的版本号不仅仅可以标识产品开发阶段、功能更新、还能区分产品部署环境。上线发布的版本还能提示给用户提供版本更新信息,产品功能更新内容等信息,引导及刺激用户下载更新。

对于常见的软件产品,通常采用GNU风格三段式版本号,即Major. Minor. Patch。用数值表示版本号,数值之间用小圆点“.”分隔。如图1所示

图1 GNU风格三段式版本号

Major:表示大版本号,一般当产品出现重大更新,重写或者不再向后兼容的情况时,版本号会在Major上加1,当Major的值为0的时候,我们一般认为产品处于开发或测试阶段。当Major增加1时我们会把后面的Minor.Patch清零。

Minor:表示次版本号,当产品有功能更新或者小的功能迭代和调整时,版本号会在Minor上加1。同理当Minor增加1时,也会将后面的Patch清零。

Patch:表示修订号或补丁号,当产品修复了一个bug或者页面UI布局调整时,版本号会在Patch上加1。

注意版本号不是逢10进1的,比如当Patch的值等于10时,版本号的Minor不加1,而是写成Major.Minor.10,如果产品再有迭代和更新,那么版本号更新为Major.Minor.11。

有时在这种三段式的版本号之后,还有Alpha版、Beta版这样的先行版本号。这些先行版本号是当产品要发布大版本或者核心功能时,但是不能保证这个版本的功能100%正常可用,这个时候就需要发布先行版本。比较常见的先行版本包括:内测版、公测版、RC 版和GA版等。

Alpha版是内部测试版,书写规范如:1.0.0-alpha.0,1.0.0-alpha.1。此版本表示软件在此阶段主要是以实现软件功能为主,通常只用在软件开发者内部交流,一般不向外部发布。该版本软件的 Bug 较多,需要继续修改。因为α是希腊字母的第一位,表示最初级的版本。

Beta版是公测版,书写规范如:1.0.0-beta.0,1.0.0-beta.1。此版本表示软件在此阶段该版本相对于Alpha版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要再经过多次测试来进一步消除,这个阶段的版本会一直加入新的功能。该版本通常由软件公司免费发布,用户可从相关的站点下载。通过一些专业爱好者的测试,将结果反馈给开发者,开发者再进行有针对性的修改。该版本不适合一般用户安装。

Release.Candidate即RC版,是发行候选版,书写规范如:1.0.0-rc.0,1.0.0-rc.1。此版本的软件产品和Beta版最大的差别在于Beta版会一直加入新的功能,但是到了RC版几乎就不会加入新的功能了。RC版是经过测试人员测试基本通过的版本,主要着重于排错和体验优化。RC版是最终发布给用户使用的最接近正式版的版本,改正bug发行后就是正式版了,可以说是正式版之前的最后一个测试版。

Release即R版,是发行版。Release不会以单词形式出现在软件封面上,取而代之的是符号(R)。该版本意味“最终版本”,在前面版本的一系列测试版之后,发布的一个正式版本,是最终交付用户使用的一个版本,该版本有时也称为标准版。

对于软件开发人员,版本号是直接和代码相关的,很多时候不同版本交叉开发,同一时间可能在开发不同版本,为了保障代码的规范和清晰,避免不同版本出现交叉混乱,版本号规范是极其重要的一环。对于项目经理来说,版本号是需求管理中唯一标识符,可以根据项目版本去管理和分配工作,跟进项目进度,避免项目管理混乱,提升效率。

在当前的互联网产品快速迭代的背景下,很多公司,特别是小型技术团队都喜欢使用敏捷开发的方式,快速的产品迭代必定会导致产品需求、开发、测试、上线各个时间线交错在一起。如果没有良好的版本规范,往往会出现,产品经理不清楚现在这一版的哪些功能有没有做;开发人员不知道这一版本应该做哪些功能;测试人员不知道现在在测试的是哪个版本;项目经理无法通过版本号就知道现在项目处于哪个阶段。要解决这些问题,规范的版本管理或许能提供一些帮助。

首先,先来看一个软件生命周期模型,改进版瀑布模型。如图2

图2 改进版瀑布模型.png

现在的软件产品已经不可能是经典的瀑布模型就能解决的了,项目人员往往都是需求改进、开发、测试等几个过程循环迭代进行。往往开发人员上一版本的功能需求还没有做完,就接到下一个版本的功能需求。如果产品功能复杂,产品需求规划不清晰,特别是有多个产品经理参与同一个项目的时候,往往会需求规划不明确,任务划分不清晰,导致开发人员分不清轻重缓急,甚至分不清哪一版到底该做哪些功能。这时,需要需要产品经理做好产品规划,明确哪一个版本做哪些功能。比如目前产品已经上线1.0版本,在1.1版本就做多优惠券模块,然后明确拼团模块放到到1.3版本。如果有时间,产品暂不上线,继续迭代更新。千万不要出现,如果可以,如果有时间,就把拼团模块一起做了吧这样模棱两可的产品规划,导致开发人员都不知道到底做不做这个尴尬。软件开发不像其他工作,它必须是一个明确的,没有模棱两可的工作。

关于软件的开发和部署环境,最少都得区分开发环境、测试环境、正式环境3种。如图3所示,这样子能够有效避免项目部署混乱,减少服务之间的干扰和影响,同时规范项目版本管理,确保产品安全和服务稳定。

图3 部署环境隔离

项目开发时,各端开发人员在开发过程中,自行管理维护开发版本号,如:dev-0.0.1,dev-1.2.3。各端维护自己的代码版本号,是不是就能随意定版本号了呢?答案肯定是否定的。关于产品版本号,在团队中一般由项目经理或产品经理根据产品迭代的功能进行确定,一般情况下,项目经理或产品经理只需要明确下一版产品的版本号前两位,也就是Major. Minor最后一位Patch由开发人员自行维护。为什么需要这样做呢?我们知道,现在的软件产品,如果基于B/S架构的,都是由服务端+客户端组成,往往服务端同时为多个客户端(包括app、web、小程序等)提供服务。产品部署上线时,往往需要C端和服务端同时部署更新,只有前后端版本号统一,才能明确上线版本。但是在实际开发测试过程中,每个端都有需要进行代码调整和bug修复,这些小的改进或者bug修复,就在各个端自行维护的Patch版本号体现即可。如图4所示

图4 各端版本管理

项目提测时,开发人员提取出要测试的代码版本,将dev前缀改为test,如test-0.0.1,test-1.2.3,并由项目经理或产品经理统一统筹部署测试版。开发人员千万不要改了一个bug就随意提测一版,在项目开发过程中,我们往往会发现,在测试人员测试出问题,提交bug之后,还没等测试人员测试完一遍,开发人员就迫不及待地修改bug,然后又直接部署提测。这样的操作,往往导致了很多问题,如测试人员根本不知道自己测试的哪一个版本;之前测试出的bug,在对接时无法复现;bug没有等回归,就被覆盖掉;没有统一统筹提测,各端自行提测时,还会出现前端部署了后端没部署导致产生bug的情况。同时这样子不规范的版本管理,也加剧了项目的混乱程度和管理难度,增加项目风险。

项目部署上线时,开发人员只需要提取出上线代码,将部署环境切换为正式服,同时在打版本号,将版本改为v开头,如v-1.0.0,v-1.2.3。然后在项目经理或产品经理统筹下,各端部署正式服即可。当然,如果项目进行大版本修改或者大功能更新,也可以发行先行版,征集更多意见和测试反馈,确保产品质量和用户体验。

版本号的是软件的一个重要组成部分,也是软件项目管理的重要内容,在项目开发和管理过程中,定义良好的软件版本规范,做好软件版本管理,能够规范项目管理流程,明晰项目需求和跟进开发进度等,避免项目管理混乱,减少隐藏bug,提高效率。同时也能更好地保证项目质量,降低项目风险。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容