一、应用版本更迭的必要性

一款产品从无到有,从孵化到呱呱坠地,需要经历了一个完整的生命周期,这里面包括:产品战略、产品市场、产品规划、产品需求、产品开发、产品上市、产品市场管理总共7个部分;产品管理则是对产品生命周期进行管理;当产品上市发布后,随之而来的每次更迭,修补,新增都是为了产品更加丰满、健壮、具备竞争力;所以,产品管理中对产品每次版本的定义显得尤为重要,版本的定义能够清晰的了解每次产品迭代背后的目标和价值,而产品版本编号的变化是产品生命线上每个重要的里程碑,它记录了产品特性的变化,子产品和子产品的关系变化,产品修复结果的变化等等;好的产品版本管理容易阅读,方便记忆,能够明晰各类关系,糟糕的产品版本管理会让你发现掉进深渊,落入陷阱。当你被版本锁定或版本穿插所阻挠而不能容易地让你的项目顺利前进时,你就身处依赖地狱中了。

二、基本原则

如果产品版本依赖定义得过于松散,你难免会被版本穿插所伤,因此,用一组简单的规则和要求来约束版本号的分配和增长规则,你必须预先定义好自己的公共API,这可以通过文档定义或代码强制要求来实现。无论如何,这套API的清楚明了是十分重要的。一旦你定义了公共API,你就可以通过修改相应的版本号来通知大家你的修改。

1、版本号格式:X.Y.Z(主版本号,次版本号,补丁版本号)

2、修复Bug但不影响API增长补丁版本号;

3、API保持向下兼容的增加/修改时增长次版本号;

4、进行不向下兼容的修改时增长主版本号。

三、产品版本命名规范

1、使用语义版本命名的软件系统必须定义一套公共API。这套API可以是在代码中申明或是用严格的文档定义。不管怎样做,它都应该清楚明了。

2、正常的版本号必须使用X.Y.Z的形式并且X/Y/Z是非负整数。X是主版本号,Y是次版本号,Z是补丁版本号。版本号每次必须只能增长1。例如:1.9.0->1.10.0->1.11.0。

3、当主版本号增长时,次版本号和补丁版本号必须清零。当次版本号增长时,补丁版本号必须清零。例如:1.1.9->2.0.0,2.1.7->2.2.0。

4、一旦发布了具有版本的包,那个版本的内容必须不能再更改。任何修改必须发布成一个新版本。

5、主版本号0 (0.y.z)是用来进行初始开发时使用的。任何东西都可能在任何时候改变。公共API此时应该被认为是经常变动的。

6、版本1.0.0开始定义公共API。这个版本及以后的版本号的增长方式将依赖于公共API以及它如何变化。

7、如果单一子产品有任何向下兼容的bug修复发生,补丁版本号Z (x.y.Z | x > 0)必须增长1。“bug修复”被定义为内部进行的修复非正常行为的修复工作。

8、如果单一子产品进行了新的并且向下兼容的公共API添加、优化、修改,次版本号Y (x.Y.z | x > 0)必须增长1。如果任何公共API被标记为“过期”,次版本号必须增长1;如果有大量的新功能或改进在内部代码中发生,次版本号可以增长1;这其中也可以包含补丁级别的修改。当次版本号增长时补丁版本号必须清零

9、如果单一子产品对公共API有任何向下不兼容的修改,或者两个及两个以上子产品同时发布新特性,或者主产品开辟新业务模式,主版本号X (X.y.z | X > 0)必须增长1。这其中也可以包含次版本和补丁版本级别的修改。当主版本号增长时次版本号和补丁版本号必须清零。

转载于:https://www.cnblogs.com/sherlock-Ace/p/9992854.html

关于应用版本号的更迭相关推荐

  1. 你应该将应用迁移到Spring 4的五个原因

    本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/12/five-reasons-to-migrate-spring4 Rafa ...

  2. 对比MIUI7和Flyme4.5 期待神秘的Flyme5

    在硬件配置高度同质化的今天,手机的操作系统已被视为厂商的软实力,也成为塑造一款手机个性的关键因素.因而,实力厂商一年一度的手机系统大型版本号的更迭都能引发众多的关注.8 月 13 日下午,国家会议中心 ...

  3. 博客站长维护服务器安全,亲身经历博客网站安全性的重要性!

    摘要 作为一个有五六年博客折腾经历的个人站长来说,明月自身对网站安全或者说Wordpress安全认知几乎就是一个小白了,在我的观念里始终认为网站安全=服务器安全,跟建站系统的关系微乎其微.事实证明,我 ...

  4. React本地化解决版本更迭出现的缓存问题

    之前项目使用React写法是本地化引用.项目基本功能都已经开发完毕,处于优化运维阶段.在每次功能上线优化,版本更迭的时候都会有缓存问题出现,不进行强制清缓存刷新,页面功能样式都还是老样子. 一开始查询 ...

  5. python -如何查看已经安装xlrd 的版本号

    如何查看已经安装xlrd 的版本号 方法一: 使用pip show xlrd 效果如下: 方法二: 使用pip list 查看 效果如下

  6. Android 获取App的版本号与版本名称的2中方法

    1 使用BuildConfig Log.e("-------版本名",BuildConfig.VERSION_NAME);Log.e("-------版本号", ...

  7. 一些js代码,自己备用的。高手不要笑话我。。(跨浏览器基础事件,浏览器检测,判断浏览器的名称、版本号、操作系统)...

    跨浏览器基础事件 View Code 1 //跨浏览器添加事件 2 function addEvent(obj, type, fn) { 3 if (obj.addEventListener) { 4 ...

  8. 隐藏Nginx版本号的安全性与方法

    搭建好nginx或者apache,为了安全起见我们都会隐藏他们的版本号,这边讲的是nginx的版本号,如果你也想隐藏apache的版本号,那请点前面的链接.请看nginx版本号信息隐藏文章. Ngin ...

  9. linux 内核 config_localversion_auto,关于CONFIG_LOCALVERSION_AUTO设置去掉内核版本号SVN后缀...

    最近在TI 的DVSDK下写驱动模块时老受linux内核svn版本号问题的困扰,如"2.6.37-svn41"."2.6.37-svn51"等等,svn版本变一 ...

最新文章

  1. 数据结构|-常见数据结构整理
  2. 汇总|C++常见知识点总结,涉及文本输出、排序、生成随机数、异常处理、关联容器、printf重定向、sprintf用法、cout重定向
  3. Android华容道之一步一步实现-序言
  4. 人与计算机的未来_身边的很多人都在学习计算机,学习计算机到底能带来哪些好处...
  5. python写接口函数_python接口自动化测试二十:函数写接口测试
  6. Abstract 的使用
  7. 2018.12-2019.1 TO-DO LIST
  8. 易观的大数据革命 分析师与机器人协同办公
  9. 使用cURL操作Openstack对象存储的ReST API
  10. oracle 01102 两实例,ORA 01102
  11. java地址有什么构成_IP地址采用分层结构,由(     )组成。
  12. 华为鲲鹏hcip认证题库
  13. ping TCP端口的实用小工具tcping
  14. 农民讲习所建立通用程序 7 设计通用按键扫描模块
  15. 祖母是一片不知愁的落叶
  16. __stack_chk_fail问题及解决方案
  17. php expecting,php – 解析错误:语法错误,意外的’.’,expecting’,’或’;’
  18. 前缀树TrieNode
  19. 沉睡者 - 大流量站项目
  20. 使用Matlab绘制三维空间中的任意圆(参数方程/坐标转换)

热门文章

  1. java 读excel
  2. 《出版专业实务》(2015年版初级)思考与练习答案 第二章
  3. adb 命令与手机控制(提供python测试)
  4. 985计算机专业考研难度排名,全国100所大学考研难易排名,985反而更好考,有意思...
  5. OSChina 周日乱弹 —— 总经理喵法沙和刀疤
  6. 星空联盟全面采用AWS以开创航空旅行新时代
  7. How to deploy the apk file on your Android Phon...
  8. dc是什么游戏的简称_“DC”是哪种国际卡的简称()A.VISAB.万事达C.运通D.大来
  9. 多表联合查询、嵌套查询
  10. whistle抓包证书