Architecture 什么是软件的突破性变化?

Architecture 什么是软件的突破性变化?,architecture,Architecture,在我们公司,我们对什么是突破性变化有一个定义 这是一个变化 - that changes a method signature. - that changes the behavior of a method. - that changes settings, configuration. - that adds dependencies to a module, assembly etc.. 你认为这是对突破性变化的一个好的/完整的定义吗?有什么东西不见了吗?你会考虑数据库模式的改变

在我们公司,我们对什么是突破性变化有一个定义

这是一个变化

 - that changes a method signature.
 - that changes the behavior of a method.
 - that changes settings, configuration.
 - that adds dependencies to a module, assembly etc..
你认为这是对突破性变化的一个好的/完整的定义吗?有什么东西不见了吗?你会考虑数据库模式的改变吗?一个突破性的改变(例如一个新的列或新的表)?

提前谢谢


编辑:刚刚发现这一点

第一点是决定“打破改变”在英语中的含义*。在某些地方,它仅仅是阻止代码编译/运行的东西

从您目前的列表中,我想您指的是需要其他人做出相应更改的更改。在这种情况下,由于您产品的每个模块都应该有一个定义良好的接口(无论是其他模块、公共REST接口、系统文件系统、gui、webapp等),因此一个突破性的更改实际上就是从这些接口中删除某些内容(或为其使用添加新的需求),如果您无法使用该产品的早期版本,并仅交换具有中更改的模块,那么它将是一个破坏性的模块

因此,是的,数据库更改通常会破坏更改(除非有代码根据需要自动升级和可能自动降级)

主要的一点是什么不是破坏性的更改-模块内的更改或对未记录接口(即不应使用的接口)的更改不是破坏性的更改。如果这些东西确实损坏了您的产品,那么封装就失败了


*或者你选择的(人类)语言。

一个极好的总结。我想补充一点,对每个人来说,理解为什么需要根据这一定义对变化进行分类是很有价值的。典型的情况可能是,您已将软件产品许可给第三方,并且他们关心您提供给他们的任何更新。该更新是否为直接替换?或者它会推动大量额外的开发和验证工作?如果你能回答为什么定义突破性更改很重要的问题,那么这个定义应该很容易理解,这是一个突破性的改变,对吗?这个问题似乎离题了,因为它更像是一个关于软件开发的概念性问题,因此更适合于。检查这个