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

发布于 2024-07-15 07:46:59 字数 999 浏览 7 评论 0原文

背景:

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

问题:

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

标准:

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

在最高层,Jeff Atwood 的相关帖子总结得很好: 最好的代码就是没有代码更

深入一点,我希望看到这样的标准:

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

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

系统的设计是为了满足核心业务功能/创造竞争优势吗? (如果是这样,定制开发可能是一个不错的选择:参见 Joel Sposky 的:In Defense of Not-Invented -Here Syndrome

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

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

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

Background:

I work at a company with a large SAP investment, and we also have dozens of large .NET systems (mostly internally for engineering systems), and Java platforms (mostly for external web applications). As such, we have large development shops on ABAP, C#, and Java EE.

Question:

In short, We need a better way to determine when Commercial, Off The Shelf (COTS) software should be used, and when we should leverage our own developers.

Criteria:

I'd like to build a decision tree based on best practices to help with this question.

At the highest level, Jeff Atwood's related post sums it up well: The Best Code is No Code At All

A little deeper, I'd like to see criteria like:

Is a COTS system available that meets most of the requirements?
(If yes, a COTS system may be a good option: (Avoid reinventing the wheel))

  • If so, is there a fully exposed API
    available? (This is essential to
    integration / customization)
  • If so, is the source code available?
    (This is essential to deep
    integration / customization)

Is the system designed to meet a core business function / create a competitive advantage ?
(If so, custom development may be a good option: See Joel Sposky's: In Defense of Not-Invented-Here Syndrome)

  • If so, will custom development allow
    for code reuse in future / other
    systems? (There are many advantages
    to reusing existing code)

What is the TCO for the custom application vs. the COTS product?

Are there time constraints that could not be met with custom development?
(If yes, a COTS system may be a good option)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

凶凌 2024-07-22 07:46:59

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

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

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

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

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

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

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

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

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

I'm not entirely sure what you are asking for but I'd thought I'd comment on a few things that I've seen arise in COTS versus custom development choices over the years:

  1. It is going to take time to properly analyse any COTS systems for suitability. Both from a requirements perspective and a technical one. How much custom dev could have been done instead of the analysis?

  2. Beware the COTS sales pitch the promises the moon on a stick. There's plenty of them. Flashy presentations from yes-men who will offer to meet any requirement to get the deal. The most dangerous trap to fall into is being promised functionality that isn't in the COTS at present but they will add for you - more often than not the salesman has said yes to you without even finding out if it's possible for their product to do it.

  3. Check for unit tests in the COTS and also what development practices they use. Good indicators of quality. A cowboy development practice, lack of tests and documentation are maintainability headaches in the future.

  4. Be wary if the COTS vendor isn't giving much info about technical aspects of their product.

If your desired system is fairly simple then your COTS choice will also be fairly simple. But if it's a large, complex system you would presumably offer it out for RFP (request for proposal) and to do that you are going to have to have a thorough and correct requirements specification. Will the time taken to produce requirements for the RFP out weigh a custom dev agile solution? You are going to have to nail those requirements down super tight to make sure the COTS system delivers and that will take a lot of time and effort.

Personally, I would never consider COTS unless:

  1. The source code is available and I have had programmers assess it
  2. I've seen and tried a working demo and not just glitzy sales pitches
  3. There isn't time or personnel to do it in-house.

Ultimately, I agree with Joel's statement: If it's a core business function -- do it yourself, no matter what.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文