首页 > 代码库 > 软件版本研究

软件版本研究

     本文的主要内容转载自:http://blog.csdn.net/lanmanck/article/details/7783924,筛选罗列出自认为比较重要的知识点,先归纳如下,以备后期查阅。

Technorati 标签: 版本管理

     ---------------------------------------分割线开始-------------------------------------------------

      1.2 APR 版本规则

        对于任何大规模的软件项目来说,必然会设计到分层次设计理念,而层与层之间的接口需要统一规范,稳定的API接口规范是必须要考虑的。由于项目的不断发展、进化,API接口的变化又是必然的趋势,如何在稳定性和变化性之间寻求一个平衡,使得版本尽可能的平滑过渡,减少过渡过程中的工作量,为次,APR采用严格的版本规则来保证。用户通过版本号即可很容易确定当期版本的兼容性:向前兼容、向后兼容,还是前后同时兼容。

        向前兼容,英文为 Forwards Compatibility,

        向后兼容,英文为 Backwards Compatibility,

        先来解释一下概念,比如一个软件版本, 底层库版本从 A ----> B  ----> C ,上层应用软件A1现在是基于A库运行的。现在新发布的底层库版本是B,如果A1可以不经过修改,就可以在B库上运行,那么就是说,B库是向后兼容的。

         举个例子,用office 2007创建的文件,可以用office 2003来打开,那么可以说 office 2007是向前兼容的。

                      用office 2007创建的文件,可以用office 2010来打开,那么可以说 office 2007是向后兼容的。

      1.2.1 版本概述

         APR中使用三个整数来记录版本号:Major:Minor:Patch。

         Major代表主版本号,它的变化通常意味着版本的重大变化,比如体系结构的重新设计,API的重新设计等等,往往这种变化会导致向前不兼容。

         Minor代表次版本号,它的变化通常反映一些较大的更改,比如API的增加等

         Patch代表补丁版本,它的变化通常反映对API函数的内部修改,而不影响API的接口。

         除了源代码方面的兼容性,在版本的更替中,更能够希望保持二进制的兼容性,这意味着应用程序可以直接使用高版本的底层库替换低版本的库文件,而不需要做任何修改,就可以编译连接成功。

      1.2.2 版本策略

        通常来说,patch的变化不影响版本源码和二进制级别的前向兼容和后向兼容,在patch补丁中,任何对API的增加、修改和删除都是不允许的。

        任何新函数、新变量以及新常量的引入,旧函数的废除或替换都将可能导致次版本号的变化。

      1.2.3 版本检查

         在编译不同版本时,要确保能够在编译期间以及使用期间,能够清晰简单的检查版本号。

         通常会有类型如下的版本规则结构体,

         typedef struct {

             int major;      /**< major number */

             int minor;      /**< minor number */

             int patch;      /**< patch number */

             int is_dev;     /**< is development (1 or 0) */

         } apr_version_t;

         major是当前程序版本的主版本号,minor则是次版本号,patch对应的则是补丁号。is_dev则描述了当前版本的状态,发布版为1,测试版为0。

        对此结构体的具体操作,需要有查看当前版本类型、设置当前版本类型、检查当前版本类型等等。

 

       下面介绍Linux版本号相关知识:

major.minor.patch-build.desc
1、major:表示主版本号,有结构性变化时才变更。
2、minor:表示次版本号,新增功能时才发生变化;一般奇数表示测试版,偶数表示生产版。
3、patch:表示对次版本的修订次数或补丁包数。
4、build:表示编译(或构建)的次数,每次编译可能对少量程序做优化或修改,但一般没有大的(可控的)功能变化。
5、desc:用来描述当前的版本特殊信息;其信息由编译时指定,具有较大的随意性,但也有一些描述标识是常用的,
比如:
<1>rc(有时也用一个字母r),表示候选版本(release candidate),rc后的数字表示该正式版本的第几个候选版本,多数情况下,各候选版本之间数字越大越接近正式版。  
<2>smp,表示对称多处理器 (Symmetric MultiProcessing)。  
<3>pp,在Red Hat Linux中常用来表示测试版本(pre-patch)。
<4>EL,在Red Hat Linux中用来表示企业版Linux(Enterprise Linux)。  
<5>mm,表示专门用来测试新的技术或新功能的版本。  
<6>fc,在Red Hat Linux中表示Fedora Core。 

Alpha版本是内部测试版,是比Beta版还早的测试版,一般不向外部发布,会有很多Bug,除非你也是测试人员,否则不建议使用。
Beta版本是测试版,这个阶段的版本会一直加入新的功能。
RC版本(Release Candidate) 是发行候选版本。和Beta版最大的差别在于Beta阶段会一直加入新的功能,但是到了RC版本,几乎就不会加入新的功能了,而主要着重于除错。  
RTM版本(Release to Manufacture)是给工厂大量压片的版本,内容跟正式版是一样的。  
OEM版本是给计算机厂商随着计算机贩卖的,也就是随机版。只能随机器出货,不能零售。只能全新安装,不能从旧有操作系统升级。如果买笔记型计算机或品牌计算机就会有随机版软件。包装不像零售版精美,通常只有一面CD和说明书(授权书)。  
RTL版本(Retail)是真正的正式版,正式上架零售版。

软件版本研究