COTS与自定义/构建与购买:决策树和最佳实践

Kai*_*sor 6 architecture cots

背景:

我在一家拥有大量SAP投资的公司工作,我们还拥有数十个大型.NET系统(主要是内部用于工程系统)和Java平台(主要用于外部Web应用程序).因此,我们在ABAP,C#和Java EE上拥有大型开发工作室.

题:

简而言之,我们需要一种更好的方法来确定何时应该使用Commercial,Off The Shelf(COTS)软件,何时应该利用我们自己的开发人员.

标准:

我想根据最佳实践构建一个决策树来帮助解决这个问题.

在最高级别,杰夫阿特伍德的相关职位总结得很好:最佳代码根本就没有代码

更深一点,我希望看到如下标准:

COTS系统是否可以满足大多数要求?(如果是,COTS系统可能是一个不错的选择:(避免重新发明轮子))

  • 如果是这样,是否有完全公开的API?(这对集成/定制至关重要)
  • 如果是,源代码是否可用?(这对于深度集成/定制至关重要)

该系统是否旨在满足核心业务职能/创造竞争优势?(如果是这样,定制开发可能是一个不错的选择:见Joel Sposky的:为未发明的这里的综合症辩护)

  • 如果是这样,自定义开发是否允许在未来/其他系统中重用代码?(重用现有代码有很多好处)

自定义应用程序与COTS产品的TCO是多少?

是否存在自定义开发无法满足的时间限制?(如果是,COTS系统可能是一个不错的选择)

Ste*_*dge 2

我不完全确定您的要求是什么,但我想我应该对多年来我在 COTS 与定制开发选择中看到的一些事情发表评论:

  1. 正确分析任何 COTS 系统的适用性都需要时间。无论是从需求角度还是技术角度。有多少定制开发可以代替分析?

  2. 请注意 COTS 销售宣传中关于“棒上月球”的承诺。有很多。唯唯诺诺的人会做出华而不实的演讲,他们会提出满足任何要求以达成交易。最危险的陷阱是承诺目前 COTS 中没有的功能,但他们会为您添加 - 通常情况下,销售人员已经对您说“是”,甚至没有弄清楚他们的产品是否可以做到这一点它。

  3. 检查 COTS 中的单元测试以及它们使用的开发实践。良好的质量指标。牛仔开发实践中,缺乏测试和文档是未来可维护性的难题。

  4. 如果 COTS 供应商没有提供太多有关其产品技术方面的信息,请务必小心。

如果您想要的系统相当简单,那么您的 COTS 选择也将相当简单。但如果它是一个大型、复杂的系统,您可能会将其提供给 RFP(征求建议书),为此您必须拥有全面且正确的需求规范。生成 RFP 需求所需的时间是否会比定制开发敏捷解决方案更重要?您必须非常严格地确定这些要求,以确保 COTS 系统能够交付,这将需要大量的时间和精力。

就我个人而言,我绝不会考虑 COTS,除非:

  1. 源代码是可用的,我已经让程序员对其进行了评估
  2. 我看过并尝试过一个有效的演示,而不仅仅是炫目的销售宣传
  3. 没有时间或人员在内部进行此操作。

最终,我同意乔尔的说法:如果它是核心业务功能——无论如何,都要自己做。