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