Upgrade 软件升级可以是非增量的吗?

Upgrade 软件升级可以是非增量的吗?,upgrade,patch,Upgrade,Patch,通常,我们所有的升级、功能或bug修复都是增量的。这似乎很明显,因为即使是开发bug修复程序,我们也会使用产品的最新代码库。然而,这就要求我们的客户必须将软件更新到最新版本,即使是为了得到bug修复,他们也能得到特性和bug修复 最近,客户告诉我们,他们希望能够在不使用新功能增强的情况下获得bug修复补丁。基本上,他们希望bug得到修复,但不希望有新的功能。这对我们来说是一个两难选择。如果bug修复程序更改了与功能不同的一组二进制文件,这是可能的。但是,很多时候,功能和错误修复都在同一个二进制文

通常,我们所有的升级、功能或bug修复都是增量的。这似乎很明显,因为即使是开发bug修复程序,我们也会使用产品的最新代码库。然而,这就要求我们的客户必须将软件更新到最新版本,即使是为了得到bug修复,他们也能得到特性和bug修复

最近,客户告诉我们,他们希望能够在不使用新功能增强的情况下获得bug修复补丁。基本上,他们希望bug得到修复,但不希望有新的功能。这对我们来说是一个两难选择。如果bug修复程序更改了与功能不同的一组二进制文件,这是可能的。但是,很多时候,功能和错误修复都在同一个二进制文件中


甚至可以创建一个可以独立应用于任何软件版本的升级吗?其他人会这样做吗?Microsoft或Office KB修补程序是否曾经是非增量的?非常感谢您提供相关文章的指导或链接。谢谢。

客户想要的是正常的,但这并不意味着这是一个容易的问题

您所描述的内容是配置管理的核心。SCM不仅仅使用像git这样的工具,它还使用这样的工具来解决当前的需求。没有银弹,满足配置请求需要大量的工作和代码准备。我看到您没有将其标记为配置管理;这正是你需要研究的,如果你没有

回到您的具体要求:客户希望能够在不使用您持续使用的功能的情况下发布错误修复。为了回答这个问题,我假设你的商业模式是,你提供的产品是有生命的,并且有几个客户“订阅”

基于客户的分支策略 客户X、Y和Z都有不同的分支。还有一个正在开发的分支,您可以从该分支将功能/错误修复拉到需要它们的客户

我想说的是,这个解决方案通常非常具有挑战性(通常是SCM),您必须处理不同的代码库,开发人员必须非常了解您的工作流程

释放分支 我的建议是,为每一个发布的版本建立一个分支,在不引入新功能的情况下,您可以用bug修复补丁。你的问题是有点不清楚你所说的增量是什么意思,如果这是指补丁本身的分布,那么这是另一回事,这个答案将不太有用

功能标志 您向客户提供了不需要的新功能,但这些功能隐藏在应用程序的逻辑背后。这可能很难与你所说的“彻底改造”结合起来。这还具有其他优点,因为它使执行变得容易

它对您的体系结构提出了要求,并且在涉及到允许的内容时也遵循了规则,每件小事都有太多的特性标志,因此它可能无法维护

有策略 您需要为此制定计划,否则无法满足客户的需求。如果你的客户想要错误的东西,你就必须与他们协商。但我认为在没有新功能的情况下提供bug修复是最低限度的

我读的关于这方面的书很旧,但我还是记得一本:Wayne A Babich:软件配置管理-团队生产力协调(Rene Moser博客上的)

LTS(长期支持的版本)部分似乎适用于您的问题

关于你的问题:

  • 是否有可能创建一个可以应用于任何应用程序的升级 软件版本独立?-当然,但这需要额外的时间、精力和金钱(通常)
  • 其他人会这样做吗对
  • Microsoft或Office KB修补程序是否曾经是非增量的是的,对于主要版本;但不是KB补丁
一个后续问题:为您的软件用户提供非增量的软件发布,是否值得做额外的工作


这个问题的答案取决于您的客户群,这可能需要与软件开发人员和市场营销人员进行长时间的会谈。如果想要非增量发布的客户在数量和收入方面都很重要,那么可能需要额外的工作来留住这些客户。

如果从分支机构的角度考虑,这会更容易。您的产品的每个主要版本都有一个分支,每个修复程序都有一个分支。您可以将修复分支应用于每个主要版本分支(或仅应用于修复有意义的分支)。可能您需要做一些特定的修改,然后根据客户使用的版本进行个案开发?问题是每次合并完成后,QA工作都会重复。我真的看不出有什么问题。您可以使这些新功能成为可选功能,并通过某种首选项对话框或命令行选项使其可切换。你甚至可以做一个过程,询问用户在每次更新后想要启用哪些新功能。我知道有人会指出这一点。但这些功能的发展太超前了。其中一些是一个完整的改进,我们希望弃用旧的功能;保持它们的可配置性意味着我们必须同时维护新功能和旧功能。我们希望客户被迫获得现代的功能,这是合理的。感谢@JohnH,它似乎足够接近我们的需求。你的回答和博客链接帮助我澄清了很多困惑。干杯谢谢@Adam,你的回答很有帮助。我将阅读更多有关SCM的内容。正如你所说,我甚至不知道这些术语。在发布这个问题之前,我做了很多徒劳的搜索。干杯关于增量,它与代码分支有关,而不是补丁。目前我们只有一个主分支,因此任何更改都是增量的