固件难题:构建还是购买

每个开发团队都需要决定是从头开始设计和构建软件还是购买软件组件。在许多情况下,决策不是由业务决策来决定,而是由工程师自我喊叫来决定:“我可以比他们做得更快,更好!”即使是这样,发布成功的产品也需要更多地考虑成功,高效和最大化生产率的因素。那么,团队将如何决定是否应该构建或购买全部或某些软件组件?

步骤#1 –确定可用资源

第一步是确定项目团队当前可用的资源。盘点将使团队了解有多少工程师可用,为完成项目分配的时间(很少有足够的时间),总体项目预算,甚至启动资金。团队甚至可以考虑确定可能会影响开发进度的工具。

步骤2 –根据复杂度对组件进行分类

开发基本的软件体系结构将为开发团队提供有关设备复杂性和所需的主要软件组件的总体思路。例如,由于需要图形驱动程序,通信驱动程序,图像设计界面和消息传递界面,因此毫无疑问,将确定需要带有触摸屏的图形用户界面列为复杂性列表中的高位。系统所需的每个组件都可以用从1到10的值进行排名,其中10是最复杂的软件组件。具有高复杂度等级的组件是购买的候选者。

步骤3 –审查团队的技能

一旦生成了具有复杂性等级的组件列表,就可以根据系统所需的组件来评估可用的团队成员的技能。可以根据专业知识和开发每个组件的先前经验对每个团队成员进行排名。通过这种方式对技能进行排名,除了可以利用过去的经验来准确了解开发时间之外,还可以使团队确定技能差距。在图1中可以找到一个示例,说明如何创建这样的排名。

图1 –组件复杂性和技能排名

步骤#4 –计算收支平衡点

有了基本的系统知识以及开发团队中已有的功能,现在该计算构建软件与购买软件的收支平衡点。计算盈亏平衡点可能很棘手,因为有许多因素在起作用。典型的故障点来自对开发时间,固件维护甚至组件复杂性的乐观估计。

主要的业务折衷是上市时间和总体成本。构建组件可能会变得更便宜,但开发时间却是原来的四倍。这是可以接受的业务折衷方案,还是将成为市场的王者?为了确定答案,开发人员需要确定固件组件的可能供应商,了解其保修,成本,交付日期以及可能出现的任何潜在集成问题。然后可以将购买的组件成本与估算的构建成本进行比较,并与时间进行比较,可以确定收支平衡点。

步骤#5 –确定构建与购买投资回报率

最终,团队需要提供一种解决方案,以尝试优化公司在产品中的投资回报率(ROI)。有很多方法可以查看。首先,可以着眼于最小化成本的尝试,其次,可以最大化销售。在产品生命周期中,与购买的软件相关的许可费用是否比制造成本高?最初的构建成本可能比购买软件要高,但是由于数量或产品路线图的原因,有必要投资工程师的技能,以便可以在内部完成工作。有许多因素需要考虑,尽管许多人将ROI严格视为一种金钱回报,但可能需要更大的泊位来做出正确的决定。

步骤#6 –做出决定

在某个时候,开发团队将需要做出决定。到目前为止,我们已经讨论了一些步骤,应该为该过程提供一些工程学或科学上的思考,但是有时候,决定只是凭直觉做出的。其他时候将做出决定,因为编写我们自己的RTOS很酷。尝试使用受控的决策过程。

结论

决定购买还是购买固件组件可能是一个困难的决定。在许多情况下,最初的标价会令人震惊,团队会亲自投入。在某些情况下,结果可能会延迟交货,甚至会增加开发成本。遵循此处列出的步骤,可以通过考虑全局而不是短期现金流,将决策过程转变为更可控制和更周到的过程。

3 thoughts 上 “固件难题:构建还是购买”

  1. 在构建与购买决策中经常被忽略的一个因素是克服购买的软件中的缺陷需要多少时间。追踪购买的软件中的错误对于任何团队来说都可能是具有挑战性的,并且所需的时间可能很难预先预测。当项目处于最复杂的状态时,这些错误通常不会出现在项目的后期。

    另外,随着所购买软件的新版本可用,每次都必须对新版本进行集成和测试。旧的bug可能会消失并且其解决方法会被删除,而新的bug可能会出现。

    此外,许多库及其标头不符合MISRA标准(或不符合贵公司使用的任何标准),这使集成更加复杂。

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.