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

时间:2009-03-16 14:51:09

标签: architecture cots

背景

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

问题:

简而言之,我们需要一种更好的方法来确定何时应该使用商业,现成(COTS)软件,何时应该利用我们自己的开发人员。

标准:

我想基于最佳实践构建决策树来帮助解决这个问题。

在最高级别,杰夫阿特伍德的相关帖子总结得很好:The Best Code is No Code At All

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

是否有符合大部分要求的COTS系统? (如果是,COTS系统可能是一个不错的选择:(避免重新发明轮子))

  • 如果是这样,是否有完全公开的API 可用? (这是必不可少的 整合/定制)
  • 如果是,源代码是否可用? (这对于深层次而言至关重要 整合/定制)

系统是否旨在满足核心业务职能/创造竞争优势? (如果是这样,自定义开发可能是一个不错的选择:See Joel Sposky's: In Defense of Not-Invented-Here Syndrome

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

自定义应用程序与COTS产品的总体拥有成本是多少?

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

1 个答案:

答案 0 :(得分:2)

我不完全确定你要求的是什么,但我想我会评论我在COTS中看到的一些事情,而不是多年来的定制开发选择:

  1. 需要时间才能正确分析任何COTS系统的适用性。从需求角度和技术角度来看。可以做多少自定义开发而不是分析?

  2. 小心COTS销售推销月亮在棍子上的承诺。有很多。来自yes-men的华丽演示文稿将提供满足任何交易要求。陷入困境的最危险的陷阱是承诺的功能,目前不在COTS中,但它们会为您添加 - 通常情况下,推销员对您说的是,甚至不知道他们的产品是否可以做它

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

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

  5. 如果您想要的系统非常简单,那么您的COTS选择也会非常简单。但是如果它是一个庞大而复杂的系统,你可能会提供RFP(请求提案),为此你需要有一个彻底和正确的需求规范。生产RFP要求的时间是否会影响定制的开发灵活解决方案?您将不得不将这些要求严格控制,以确保COTS系统能够提供,并且需要花费大量的时间和精力。

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

    1. 源代码可用,我让程序员对其进行评估
    2. 我见过并尝试了一个有效的演示,而不仅仅是炫目的销售宣传
    3. 没有时间或人员在内部完成。
    4. 最终,我同意Joel的声明:如果它是核心业务功能 - 无论如何都要自己动手。