6

我目前正在做一个项目,我需要编写一些概念验证应用程序。我以前写过 PoC 应用程序,但它们真的很小,而且还没有很多层,因为我现在写的应用程序有:

  • 表单层 - 与数据层对话。
  • 数据层 - 与数据库和互操作层对话。
  • 互操作层 - 与 COM 对象对话。
  • COM 对象

编写程序以显示我可以从 A 到 B 以及所需的过程的最佳方法是什么,而无需花费大量时间来编写 PoC。

我的脑海中已经有了关于应该如何组合在一起的想法,但是我在向我的队友展示我的意思时遇到了一些麻烦。

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

4

8 回答 8

8

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

  • netcat使用 shell 脚本(以及很多bash)编写一个预先编写好的网络客户端
  • 用 Python、Ruby 或其他您熟悉的 RAD 语言编写服务器
  • 使用比你的生产技术更简单的技术(通过静态文件而不是 TCP 进行通信,或者使用非常简单的 RPC 机制而不是中间件产品)
  • 使用具有不兼容许可的软件,因此无法发布产品(GPL 对此有好处,对于任何实际分发的东西)。
  • 将 Web 表单编写为静态 HTML 页面(没有样式或任何东西,丑陋至极)
  • 如果可能的话,用本地对象交互替换任何远程交互(数据库、网络),挥手说“这两个步骤真的会分开发生”
于 2009-02-02T05:33:52.857 回答
3

以我的经验,让这一切快速发展的最好方法是在一个(或尽可能少的)层中尽可能快地编写代码,这真是令人讨厌和令人心碎。然后,一旦您的代码栏正常工作,就从列表中的一层开始并分开。重复,直到你有你想要的层。

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

于 2009-02-02T05:06:34.580 回答
2

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

于 2009-02-02T05:07:02.067 回答
2

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

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

工作应用胜于雄辩,因此如果您可以快速制作一个原型供您的团队查看和使用,这将有助于使不倒翁适合他们。

于 2009-02-02T05:13:34.770 回答
2

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

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

通过以测试驱动的方式使用片段,您将防止您的 PoC 应用程序变得过于纠缠,您将为未来实施中的测试奠定基础。

即使您致力于主应用程序的特定语言,也请考虑为任何帮助程序提供更轻量级的东西,例如测试网络协议的简单服务器。

于 2009-02-02T05:41:58.783 回答
1

最初设置可能需要更长的时间,但如果您可以立即使用依赖注入/IoC 框架,那么更换各种实现会变得容易得多。Spring/Spring.NET 极大地帮助了我。

于 2009-02-02T05:07:56.730 回答
1

我发现画图和图表总是能帮助我理解我的观点。当我遇到问题时,它还可以帮助我自己思考问题。

你可以让你的队友更好地理解你在说什么,只需向他们展示一些你的想法的图纸。

于 2009-02-02T05:08:58.630 回答
1

I once did a similar project using Delphi 7 and MIDAS. Implemented the Interop layer (in-process AppServer in my case) as dll files allowing the project to access various data sources (e.g. SQL, Access, Excel and COM objects, etc).

于 2009-02-02T07:16:36.160 回答