我们有一个包含功能的产品(比如说特征A,B和C)。
我们将把它转移到一个特定客户端的生产(一个web应用程序)。
然而,根据我的老板,我们将把产品部署到客户的房地。客户端也将有源代码。
现在,我的老板想限制那个特定客户的功能。他希望限制特性A,以便只有特性B和C才能提供给客户端。
那我们有什么选择?我们如何在技术上(限制特性)和在许可方面做到这一点?
发布于 2019-04-14 12:59:59
一个非软件工程的答案:您禁用配置中的特性,并在与客户端签订的合同中写入“您不应该修改配置文件”。如果你不信任你的客户,你会遇到比他们是否使用A功能更大的问题。这对每个人来说都是最简单的选择。
软件工程的答案是:将代码分支,删除所有特性A,从该源代码中构建特殊的二进制文件,在客户端安装这些二进制文件,并将源代码提供给他们。这显然是更多的工作,所以评估它是否具有成本效益。
发布于 2019-04-14 17:25:34
这完全取决于您的代码结构。最安全的方法是不使用该特性交付代码。这需要在交付时管理配置:
一种更困难的方法是使特性依赖于您控制的东西(例如远程函数调用或web服务),然后您可以通过客户帐户/序列号或类似的标识符选择性地激活这些功能。这将是一种如果运行时配置。当然,缺少的部分必须足够复杂,以使客户不能仅仅提供一个克隆。
最后,您可以选择许可证限制。使用您的软件的方式和目的可以受到合同的限制(如果您控制许可方案,即没有开源许可证要求)。软件更改也是如此。取决于你的市场,这可能被尊重,也可能不被尊重。还请注意,您将需要有资格的法律援助,这一选择,因为法律在很大程度上取决于您的管辖权。
https://softwareengineering.stackexchange.com/questions/390339
复制相似问题