我在一家拥有大量SAP投资的公司工作,我们还拥有数十个大型.NET系统(主要是内部用于工程系统)和Java平台(主要用于外部Web应用程序).因此,我们在ABAP,C#和Java EE上拥有大型开发工作室.
简而言之,我们需要一种更好的方法来确定何时应该使用Commercial,Off The Shelf(COTS)软件,何时应该利用我们自己的开发人员.
我想根据最佳实践构建一个决策树来帮助解决这个问题.
在最高级别,杰夫阿特伍德的相关职位总结得很好:最佳代码根本就没有代码
更深一点,我希望看到如下标准:
COTS系统是否可以满足大多数要求?(如果是,COTS系统可能是一个不错的选择:(避免重新发明轮子))
该系统是否旨在满足核心业务职能/创造竞争优势?(如果是这样,定制开发可能是一个不错的选择:见Joel Sposky的:为未发明的这里的综合症辩护)
自定义应用程序与COTS产品的TCO是多少?
是否存在自定义开发无法满足的时间限制?(如果是,COTS系统可能是一个不错的选择)
我不完全确定您的要求是什么,但我想我应该对多年来我在 COTS 与定制开发选择中看到的一些事情发表评论:
正确分析任何 COTS 系统的适用性都需要时间。无论是从需求角度还是技术角度。有多少定制开发可以代替分析?
请注意 COTS 销售宣传中关于“棒上月球”的承诺。有很多。唯唯诺诺的人会做出华而不实的演讲,他们会提出满足任何要求以达成交易。最危险的陷阱是承诺目前 COTS 中没有的功能,但他们会为您添加 - 通常情况下,销售人员已经对您说“是”,甚至没有弄清楚他们的产品是否可以做到这一点它。
检查 COTS 中的单元测试以及它们使用的开发实践。良好的质量指标。牛仔开发实践中,缺乏测试和文档是未来可维护性的难题。
如果 COTS 供应商没有提供太多有关其产品技术方面的信息,请务必小心。
如果您想要的系统相当简单,那么您的 COTS 选择也将相当简单。但如果它是一个大型、复杂的系统,您可能会将其提供给 RFP(征求建议书),为此您必须拥有全面且正确的需求规范。生成 RFP 需求所需的时间是否会比定制开发敏捷解决方案更重要?您必须非常严格地确定这些要求,以确保 COTS 系统能够交付,这将需要大量的时间和精力。
就我个人而言,我绝不会考虑 COTS,除非:
最终,我同意乔尔的说法:如果它是核心业务功能——无论如何,都要自己做。