工程和IT洞察:如何将项目转化为产品

将制造IT项目转换为成功的产品需要额外的努力。下面是如何做这件事的建议。(如果你正在考虑购买听起来或测试更像一个项目的软件,你可能需要看看其他软件。)

通过丹尼斯Brandl 2011年7月21日

创建一个伟大的制造业IT产品的途径之一是通过一个伟大的制造业IT项目。看到一个成功的项目完成是一种兴奋。最终用户很满意并理解了系统,所有的事情都在计划和预算之内完成了。许多系统集成商、最终用户和供应商想要进行下一步,将项目可交付成果转换为产品。在采取这一步时,重要的是不要低估将一个成功的项目转化为一个成功的产品所需的额外努力。

系统集成商、咨询公司、内部开发组织,甚至大型自动化公司都试图将项目转化为产品。对于系统集成商和咨询公司,产品通常由内部开发的工具和常用项目代码库组成。对于内部开发组织,它是在一个站点开发的工作,然后扩展到多个站点。自动化公司通常通过收购一个有项目经验的公司,然后将其项目代码和内部工具转换为通用的分发产品来尝试转换。

将项目转换为产品需要在一个站点完成的工作(具有非常具体的需求、本地承诺用户和专家实现团队)可以在多个站点复制,这些站点的需求差异很大,最终用户承诺有限,可用来协助安装、检查和启动的专家有限或没有。

项目和产品之间的主要区别是:需求的范围、文档支持、安装便捷性、可操作的错误消息、优雅的故障、测试覆盖、压力测试和最小环境需求。

项目具有定义良好且可测试的范围,涵盖一个特定的问题或领域。产品必须涵盖一系列不同但相似的问题。必须重新评估为一个项目或一组项目定义的需求。新的要求必须在新的情况下与潜在的新客户进行验证。通常需求必须被扩展,导致重新设计和重做项目代码。这些工作很容易使原始项目需求成本翻倍。

项目通常至少包括一些留给最终用户的文档,但很少有项目包括产品通常提供的全套文档。产品有专业开发的用户指南、安装手册、技术指南和调试常见问题文档。项目通常都有设计指南、开发人员的未经审查的笔记,或者充其量是某种形式的在线帮助。必须生成新的文档以将项目转换为产品。生成编写良好和完整的文档通常只需要原始项目编码和文档工作的25%到50%。

产品有自动安装;项目需要手动安装。项目团队通常不会考虑安装系统有多容易。安装和启动软件可能需要好几天,需要很多人,但是项目的态度通常是“我们只做一次,所以不值得让它变得简单”,或者“仅仅记录步骤而不是自动化它们更容易”。向项目中添加自动化安装可以很容易地增加25%的原始项目工作量。如果必须在多个目标环境中执行自动化安装,则可以添加更多内容。

产品具有可操作的错误消息。这些错误消息指示用户必须采取哪些行动来解决问题。这些操作可能涉及修复配置问题、纠正安全访问或联系支持服务。大多数项目都有由数字标识的神秘错误消息(例如error 42),这些错误消息没有为用户提供如何解决问题的帮助。编写良好的项目可能会提供带有错误代码的文档,但很少有项目包含所有可能显示的错误。项目的错误消息通常用于帮助开发人员进行调试,而不是帮助用户纠正问题。

产品通常提供优雅的失败。优雅故障是指系统从未冻结,信息被保存以供以后调试,系统可能以受限但仍然可用的模式运行,提供消息指导用户采取行动消除问题,并且系统可以在不需要用户干预的情况下重新启动。项目代码通常会在发生故障时停止或冻结,例如OPC连接丢失或数据库更新失败。在最坏的情况下,用户可能不得不在失败后手动更新数据库或配置文件以允许系统重新启动。

产品在多种环境中进行测试,涵盖各种用途和配置,进行压力测试以确定系统极限,并在最小环境中进行测试。项目通常只在一个环境中对有限数量的配置进行测试。此外,项目将经常在超大的硬件上进行测试和安装,以避免对系统造成压力。压力测试、最小环境测试和多配置测试经常会发现在原始项目环境中永远不会出现的问题。

除了上面提到的差异,还有更多的考虑:

  • 产品有用户支持,而项目提供开发人员的电话号码。通常情况下,项目开发人员只能获得最低限度的支持,因为他们被分配到其他项目,而不是正式分配到持续的支持。
  • 产品通常包含示例,而不是从空白屏幕开始。项目通常不会在这方面提供任何帮助,或者,最多可能会有一组简短的神秘笔记来解释如何开始。许多项目包括用户配置,但是交付的产品需要最终用户执行配置。这意味着产品必须包含执行初始系统配置所需的文档、向导和示例。
  • 产品在启动时检查其配置的有效性,以便它们不会进入无效状态。项目代码通常是在假定所有操作都正确并且已经正确安装的情况下运行的。
  • 产品具有编写良好和文档良好的代码。项目通常只有很少的代码文档,并且通常不遵循“专业实力”编程标准。随着产品的发展,产品代码会被“阅读”很多次,所以它必须是可读的,并且注释良好。项目代码通常在安装后不会被查看,因此使其具有可读性和良好的注释并没有什么好处。

由于项目和产品之间的差异,将项目代码转换为产品所需的工作量可能是原始项目工作量的3到10倍。许多系统集成商、终端用户和供应商并不完全欣赏这种额外的工作,他们会急于推出项目代码,就像推出产品一样。这将导致愤怒的用户,糟糕的产品声誉,以及开发者的声誉受损。如果您正在将项目转换为产品,请记住两者之间的重要区别,并确保您计划了开发健壮产品所需的工作。

- Dennis Brandl是北卡罗来纳州Cary BR+L咨询公司的总裁,网址是www.brlconsulting.com。他的公司专注于IT制造业。与他联络:dbrandl (at) brlconsulting.com.马克·霍斯克编辑,控制工程, www.globalelove.com。

进一步阅读:

工程和IT洞察:使文档与代码保持同步—延迟软件文档可能会在未来造成困难、减速和错误。确保用户、设计和测试文档与软件代码保持一致。

工程和IT洞察:现在就虚拟化,向你的供应商传达这样的信息:虚拟化简化了系统升级,至少还有两个原因需要虚拟化,还有三个主要问题需要解决。