2012-04-13 46 views
0

会有一个应用程序,它会做3件大事。 ABC。这将是一个C#winforms应用程序。设计的产品套件,同时建设/只保持一条

我们的CEO希望这个应用程序将被分为6种不同的产品。

  • 只是一个(简单)
  • A + B(高级)
  • A + B + C(旗舰版)

而这一切对一个或多个用户(许可)。因此,我们现在有6个项目!

如果我们假设三个主要部分确实分开,可以在自己的工作中,我们如何保持一个项目并销售6?

目前有三种方法可以做到这一点,浮现在我的脑海里:

答:有一个基本的骨架,并建立每个A,B,C的一个模块。这样我们只需要处理一个/多个用户的问题。

B:创建一种固体产物,并使用预处理器指令在编译时设置的功能。这非常困难,并且使代码变得丑陋。此外,可能会打破该项目。

C:创建一个版本控制机制,该机制将被设置为允许应用程序具有某些功能。这是最简单的但有两个缺点。这很容易破解,我们为简单用户提供Ultimate版本,这很糟糕。

这是类似Windows的版本问题(住房,基础,专业版,旗舰版)

我们应该怎样设计这个项目?

回答

1

1)模块化 - 甲乙方法之间的决定是困难的。首先,应用程序的底层体系结构中,应用程序如何将自身呈现给用户以及模块化方面,区分模块化非常重要。 (商业逻辑,数据层等),同时承认第二个反映第一个。 AFAIK的WinForms不提供表现层和业务层的非常严格的分离,你就需要做一些额外的工作来分隔层,以具有灵活性,更好的用户界面,而不需要重新编写大量代码。这意味着,如果您设计的业务层严格反映“UI模块”,您将被困住它,然后根据销售情况转换模块可能更容易。但是,如果您希望在将来保持灵活性,请将各层分开,并通过预处理器指令单独关闭每个功能。

2)最终产品与生产 - 事实上,您可能有不同的最终产品或构建包含A或A + B,1个用户或许多用户等等。并不意味着您需要将代码和该作业way..Visual Studio允许您一定要为不同的“版本”模板生成,这会或不会包含这样或那样的模块或功能。