背景:
我在一家拥有大量 SAP 投资的公司工作,我们还有数十个大型 .NET 系统(主要用于内部工程系统)和 Java 平台(主要用于外部 Web 应用程序)。因此,我们在 ABAP、C# 和 Java EE 上有大型开发商店。
问题:
简而言之,我们需要一种更好的方法来确定何时应使用商业现货 (COTS) 软件,以及何时应利用我们自己的开发人员。
标准:
我想根据最佳实践构建一个决策树来帮助解决这个问题。
在最高级别,Jeff Atwood 的相关帖子总结得很好:The Best Code is No Code At All
再深入一点,我希望看到如下标准:
是否有满足大部分要求的 COTS 系统?(如果是,COTS 系统可能是一个不错的选择:(避免重新发明轮子))
- 如果是这样,是否有完全公开的 API 可用?(这对于集成/定制至关重要)
- 如果是这样,源代码可用吗?(这对于深度集成/定制至关重要)
该系统是否旨在满足核心业务功能/创造竞争优势?(如果是这样,定制开发可能是一个不错的选择:请参阅 Joel Sposky 的:为非此处发明综合症辩护)
- 如果是这样,定制开发是否允许在未来/其他系统中重用代码?(重用现有代码有很多好处)
定制应用程序与 COTS 产品的 TCO 是多少?
是否存在定制开发无法满足的时间限制?(如果是,COTS 系统可能是一个不错的选择)