基本上我的项目是基于产品的。一旦我们开发了一个项目并捕获多个客户端并根据他们的需求部署应用程序。但是我们决定把新功能和项目依赖的模块都作为组件。现在我的应用程序有很多客户。每个客户都需要基于组件的不同功能。但是我们有所有客户端的集中组件。我们将组件附加功能移动到客户端特定文件夹并部署。我的问题是,我无法为多个客户端维护组件功能。我的组件功能代码增加了,我无法跟踪客户端功能。是否有任何解决方案可以为多个客户端维护多个组件功能?
2 回答
您实质上是在谈论软件产品线 (SPL):来自共同基础的变体。由于您已经将功能打包为组件,因此您需要一个专门的工具来管理这些变化。
然后,您可以基于任何给定客户独有的配置构建完整的自定义应用程序。当然,说起来容易做起来难。
模型驱动的软件开发 (MDSD) 方法可以帮助完成这项任务。一个可以支持这种开发设置的系统是 ABSE,这是一种新兴的 MDSD 方法,除其他外,它可以实现软件产品线(信息位于http://www.abse.info - 免责声明:我是 ABSE 项目负责人)。虽然还没有产品。Alpha 预览版即将推出。
再一次,我知道一些公司使用 MDSD 和代码生成,已经实现了我理解的你想要的:一半预包装、一半定制的产品。
我曾在类似领域的几家公司工作过——产品软件,但高度定制化。
本质上,公司需要做出一个决定——你是一家产品公司(也就是说,你向每个客户提供大致相同的产品)还是一家定制公司。目前,他们似乎处于两难境地,希望成为一家能够像定制软件公司一样满足特定客户需求的产品公司。
假设公司想成为一家产品软件公司,除非有特定的技术原因你不能这样做,否则你需要转移到一个单一的代码库,通过可定制的选项处理每个客户的修改(即标志说明这个特定的情况正在处理中,此功能是否可用等)。
这些可以在运行时设置(因此可以根据客户的需要进行更改 - 考虑 Word 或 Excel 中的选项)或构建时间(因此在构建时包含/排除代码),但关键是每个客户端必须从相同的代码库中提取。
但这需要与企业达成一致,因为它限制了他们可以销售的东西——他们销售的每一个变化都必须符合单一产品可以适应的整体愿景。
另一种选择是,您实际上是在为每个客户生产定制软件(专门针对他们想要的东西进行编码),但使用许多通用库。这很好,可以让你生产出他们想要的东西,但最终这将是更多的工作,企业需要理解并为此付出代价。
我们实际上做了一些两者 - 有一个对所有客户端都相同的服务器产品,然后是特定于它们的 Web 和移动客户端(在移动的情况下,您不能在设备上有很多死代码 -网络东西是历史性的,将转向所有客户的标准产品)。
不过祝你好运,这是一个没有简单解决方案的难题。