编写概念验证(PoC)应用程序的最佳方式?

时间:2009-02-02 05:03:35

标签: architecture modeling

我目前正在开发一个项目,我需要编写一些概念验证应用程序。我以前写过PoC应用程序,但它们只是非常小,并没有真正有很多层,因为我现在正在编写的应用程序有:

  • 表单层 - 与数据层对话。
  • 数据层 - 与数据库和Interop层对话。
  • Interop Layer - 与COM对象对话。
  • COM对象

编写程序以表明我可以从A到B以及所需的过程是最好的方法,而无需花费大量时间编写PoC。

我已经掌握了如何将它们放在一起的想法,但我在向队友展示我的意思时遇到了一些麻烦。

在编写PoC时,有人可以推荐任何提示/技巧吗?或者是否有更好的方法来解释我的意思,而不是必须编写代码。

8 个答案:

答案 0 :(得分:8)

我同意其他有关获取原型的回复。确保原型保持原样的一种方法是使用绝对不会在最终产品中使用的语言或工具链,从而强制将其重写为生产质量。我用过的一些想法:

  • 使用shell脚本(netcat和大量bash)编写预编写脚本的网络客户端
  • 使用Python,Ruby或您熟悉的其他RAD语言编写服务器
  • 使用比生产技术更简单的技术(通过静态文件而不是TCP进行通信,或使用非常简单的RPC机制而不是中间件产品)
  • 使用具有不兼容许可的软件,因此无法发布产品(对于实际分发的任何内容,GPL对此都有好处。)
  • 将网页表单写为静态HTML页面(没有样式或任何东西,丑陋如罪)
  • 如果可能的话,用本地对象交互替换任何远程交互(数据库,网络),并且手动说“真的这两个步骤将单独发生”

答案 1 :(得分:3)

根据我的经验,让这种快速移动的最佳方法是尽可能快地在一个(或尽可能少的)层中编写所有代码,真正讨厌和令人心碎。然后,一旦您的代码barf正常工作,请从列表中的一个图层开始并分开。重复,直到获得所需的图层。

这还有一个额外的好处,就是能够拉出一个特定的位并让你的同事假装它被分开了。如果他们能够做到这一点,你就不必花时间实际做到这一点。

答案 2 :(得分:2)

作为概念的证明 - 我会单独拿出每一个位并为其余部分写下假包装。制作原型和概念证明的一个危险是,如果它们足够接近功能,它们往往最终成为最终产品。

答案 3 :(得分:2)

对于概念验证应用程序的原型验证,使用非常适合快速应用程序开发的编程语言有时会很有用。

Python就是一个很好的例子。您有一个巨大的框架来利用和创建您在帖子中提到的各种抽象层,同时仍然将概念证明应用程序代码大小保持在最低限度。

工作应用程序胜于雄辩,所以如果你可以为你的团队制作一个快速的原型来观察和玩它有助于让它们落到他们的位置。

答案 4 :(得分:2)

使用Python等高效语言在单元测试框架中尽可能多地编写。

Python单元测试使用反射推断事物是测试并捕获正常的asesrtions。总而言之,它需要很少的努力才能开始 - 我已经以这种方式使用Python来制定网络协议以及使用Saxon jar包装命令行XSLT转换。

通过以测试驱动的方式播放片段,您将保持PoC应用程序不会过于纠结,您将在未来的实现中为测试奠定基础。

即使您已经为主应用程序提交了特定语言,也可以考虑为任何帮助程序提供更轻量级的内容,例如测试网络协议的简单服务器。

答案 5 :(得分:1)

最初设置可能需要一些时间,但是如果您可以立即使用依赖注入/ IoC框架,那么将更容易更换各种实现。 Spring / Spring.NET对我帮助很大。

答案 6 :(得分:1)

我发现绘制图片和图表总能帮助我理解我的观点。当我遇到问题时,这也有助于我为自己思考问题。

您可以通过向他们展示一些您想到的图画,让您的队友更好地了解您所谈论的内容。

答案 7 :(得分:1)

我曾经使用Delphi 7和MIDAS做过类似的项目。实现了Interop层(在我的情况下为进程内AppServer)作为dll文件,允许项目访问各种数据源(例如SQL,Access,Excel和COM对象等)。