Version control 是否有版本(修订)变更的标准定义

Version control 是否有版本(修订)变更的标准定义,version-control,standards,Version Control,Standards,我目前在我的公司官僚主义的地狱中,需要定义什么构成了我们测试程序的不同级别的软件变更。我们有一个粗略的做法,我们遵循内部,但我正在寻找一个标准(如果存在),以参考我们的质量体系。我认识到系统在开发人员之间可能会有很大的差异,但最终我要寻找一份“最佳实践”指南,说明什么是重大变更、小变更等。如果可能的话,我想在提交给我们的质量体系时参考一份已发布的文档,以达到ISO目的 为了澄清,我公司开发的软件在内部用于半导体测试自动化。我们不卖这段代码,版本控制实际上只是为了保存记录。我们使用x.y.z变更来

我目前在我的公司官僚主义的地狱中,需要定义什么构成了我们测试程序的不同级别的软件变更。我们有一个粗略的做法,我们遵循内部,但我正在寻找一个标准(如果存在),以参考我们的质量体系。我认识到系统在开发人员之间可能会有很大的差异,但最终我要寻找一份“最佳实践”指南,说明什么是重大变更、小变更等。如果可能的话,我想在提交给我们的质量体系时参考一份已发布的文档,以达到ISO目的


为了澄清,我公司开发的软件在内部用于半导体测试自动化。我们不卖这段代码,版本控制实际上只是为了保存记录。我们使用x.y.z变更来影响发布所需的签核和批准级别。

一个好的做法是使用3个级别的修订号:

x、 y.z

x是主要的 y是未成年人 z是错误修复

重要的是,具有相同x的两个不同软件版本应该具有二进制兼容性。y大于另一个但x相同的软件版本可能会添加功能,但不会删除任何功能。这确保了在同一主要号码内的可移植性。最后,z不应该改变任何功能行为,除了bug修复


编辑:

以下是使用过的版本号方案的一些链接:


    • 要详细说明@lewap所说的内容,请使用

      x、 y.z

      其中z级别的更改几乎完全是bug修复,不会更改接口或涉及外部系统

      在y级别的更改中,除了修复可能涉及外部系统的更严重的错误外,还添加了功能并可能更改UI/API接口


      如果x级更改涉及从完全重写/重新设计到仅更改数据库结构到更改数据库(即从Oracle到SQLServer)的任何内容,换句话说,任何不是需要“端口”或“转换”过程的临时更改的内容,我将向x.y.z格式添加内部版本号:

      x、 y.z.build

      x=主要特征变化
      y=较小的特征变化
      z=仅修复错误
      build=每次编译代码时递增


      包含内部版本号对于内部用途至关重要,因为人们试图确定他们拥有的二进制文件中是否存在特定更改。

      我认为,如果您使用的是内部软件,而不是外部软件(产品),则可能会有所不同

      对于内部软件来说,使用正式定义的方案几乎永远不会是问题。然而,对于产品而言,版本或发布号在大多数情况下是一个商业决策,不反映任何技术或功能标准

      在我们公司,x.y.z编号方案中的x.y由营销人员确定。z和内部版本号由研发部门确定,并追溯到我们的版本控制系统中,并且与生成它的sprint相关(sprint是迭代的Scrum术语)


      此外,正式定义版本和发行版之间的某种程度的兼容性可能会导致您快速升级或根本无法升级。这可能不反映增加的功能。

      我认为你最好的方法是通过从知名和成功的软件包中提取的示例,以及它们处理主要和次要版本的方式来向同事解释这一点

      我要说的第一件事是,发行版的major.minor点符号是一项相对较新的发明。例如,大多数UNIX版本实际上都有名称(有时包含一个无意义的数字),而不是版本号

      但是假设您想使用major.minor编号,那么major编号表示的版本基本上与以前的版本不兼容。考虑从Windows 2到0到3的变化——大多数的2,0应用程序根本不适合Windows 3,0中新的重叠窗口。对于不太全面的应用程序,文件格式的根本改变(例如)可能是主要版本更改的原因—WP&n图形应用程序通常是这样工作的

      主要版本号更改的另一个原因是用户注意到了差异。同样,从Windows 2.0到3.0的变化也是如此,这也是后者成功的原因。如果你的应用看起来很不一样,那;这是一个重大的变化

      A对于次要版本号,这通常用于表示实际上相当重要的chanhe,但用户不会注意到。例如,Win3.0和Win3.1之间的内部差异实际上相当大,但界面保持不变


      关于第三个版本号,很少有人知道它的真正含义,也很少有人关心它。例如,在我的日常工作中,我使用GNU C++编译器版本3.4.5——这与3.4.4的不同之处是什么?我没有线索! 正如我之前在回答一个类似问题时所说的:使用的术语不是很精确。有一篇文章描述了五个相关维度。用于软件开发的数据管理工具通常不会同时支持三个以上的工具。如果您想支持所有五个,您必须描述一个开发过程:

      • 版本(语义:修改)
      • 视图(语义:等价、派生)
      • 层次结构(语义:包括)
      • 状态(语义:批准、可访问性)
      • 变体(语义:产品变体)

      Peter van den Hamer和Kees Lepoeter(1996)管理设计数据:CAD框架的五个维度、配置管理和产品数据管理,《IEEE会议录》,第84卷,第1期,1996年1月