关闭。这个问题是opinion-based .它目前不接受答案。
想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.
2年前关闭。
Improve this question
鉴于每个软件项目只有这么多的程序员时间专门用于它,你会花多少钱来确保产品与以前的版本向后兼容?其实有几点需要考虑:
最佳答案
客户群是确定您是否应该支持大型向后兼容性问题的关键。
基本上,您需要像任何其他 一样评估它。非功能性需求 您需要实现,并且需要仔细指定"backward compatibility" feature 中包含的内容:
API 和 ABI 兼容性之间通常有一些重叠,但也有重要的区别。为了保持 ABI 兼容性,您所要做的就是确保您的程序导出所有相同的符号。
这意味着所有相同的功能和全局可访问的对象都需要存在,以便与先前版本链接的程序仍然能够在新版本中运行。
可以在破坏 API 兼容性的同时保持 ABI 兼容性。在 C 代码中,将符号保留在 C 文件中但从公共(public)头文件中删除它们,因此尝试访问符号的新代码将无法编译,而用户针对先前版本编译的旧代码将继续运行
如果您将之前的标准(向后兼容性的性质)与您的客户群的性质结合起来,您可以决定:
我相信这与已经部署的内容有关:与大约 20 年左右的程序相比,最近的程序必须处理更少的向后兼容性需求。
它应该基于商业案例:您的迁移 - 如果由于缺乏向后兼容性而需要的话 - 是否能够有效地“出售”给您的客户(因为它带来了所有新的 Shiny 功能?)
试图预测“ future 的变化”可能会适得其反,并且很快就会接近 YAGNI(你不需要它):一套好的迁移工具可能会更有效。
对于我处理过的内部应用程序,没有。 Parallel Run是我们确保“功能性”向后兼容性的方式。但这不是万能的解决方案。
同样,对于内部应用程序,决策过程可能与外部部署的决策过程大不相同。如果某个功能没有为业务带来任何附加值(value),则会设置一个内部“一致性”任务,以检查每个其他内部应用程序的迁移成本(即“不再使用此功能”)。对组织外的客户执行相同的任务要困难得多。
关于project-management - 一个项目应该在向后兼容性上花费多少时间和精力?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/527499/