首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于限制特征与许可的问题

关于限制特征与许可的问题
EN

Software Engineering用户
提问于 2019-04-14 12:35:27
回答 2查看 96关注 0票数 -2

我们有一个包含功能的产品(比如说特征A,B和C)。

我们将把它转移到一个特定客户端的生产(一个web应用程序)。

然而,根据我的老板,我们将把产品部署到客户的房地。客户端也将有源代码。

现在,我的老板想限制那个特定客户的功能。他希望限制特性A,以便只有特性B和C才能提供给客户端。

那我们有什么选择?我们如何在技术上(限制特性)和在许可方面做到这一点?

EN

回答 2

Software Engineering用户

发布于 2019-04-14 12:59:59

一个非软件工程的答案:您禁用配置中的特性,并在与客户端签订的合同中写入“您不应该修改配置文件”。如果你不信任你的客户,你会遇到比他们是否使用A功能更大的问题。这对每个人来说都是最简单的选择。

软件工程的答案是:将代码分支,删除所有特性A,从该源代码中构建特殊的二进制文件,在客户端安装这些二进制文件,并将源代码提供给他们。这显然是更多的工作,所以评估它是否具有成本效益。

票数 2
EN

Software Engineering用户

发布于 2019-04-14 17:25:34

这完全取决于您的代码结构。最安全的方法是不使用该特性交付代码。这需要在交付时管理配置:

  • 如果您的特殊功能位于单独的模块/编译单元中,请用存根替换此模块,以禁用交付给客户的源中的功能。
  • 使用干净的OO设计,您可以使用抽象接口将您的特性集成到代码中,而不需要创建对实现该特性的类的依赖(例如,使用策略模式或类似技术)。然后,您可以向客户端交付一个具有符合接口但不实现该特性的类的版本。

一种更困难的方法是使特性依赖于您控制的东西(例如远程函数调用或web服务),然后您可以通过客户帐户/序列号或类似的标识符选择性地激活这些功能。这将是一种如果运行时配置。当然,缺少的部分必须足够复杂,以使客户不能仅仅提供一个克隆。

最后,您可以选择许可证限制。使用您的软件的方式和目的可以受到合同的限制(如果您控制许可方案,即没有开源许可证要求)。软件更改也是如此。取决于你的市场,这可能被尊重,也可能不被尊重。还请注意,您将需要有资格的法律援助,这一选择,因为法律在很大程度上取决于您的管辖权。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/390339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档