acm-header
登录

ACM通信

Kode恶性

什么时候黑匣子应该是透明的?


黑色立方体周围的其他彩色立方体,插图

信贷:Sylverarts向量

回到顶部

亲爱的KV,

我们一直在与第三方供应商合作,该供应商为我们的一个系统提供关键组件。由于供应链问题,他们试图“升级”我们到该组件的新版本,他们说这是一个临时替代旧的。他们一直说这个组件应该被视为一个黑盒,但在我们的测试中,我们发现了原始和更新部分之间的许多差异。这些不只是简单的漏洞,而是构成系统基础的重大技术变化。这将是很好的,把这个组件作为一个替代,不担心这一点,但我所看到的到目前为止没有激发信心。我确实看到了他们的观点,即API是相同的,但我不知何故认为这是不够的。什么时候组件才是真正的“随行就市”,什么时候我应该更加多疑?

进进出出

亲爱的,

你的信提出了两个想法:一个是关于最近发生的事件,另一个是关于一个永恒的问题:“黑匣子何时应该透明?”虽然我们都知道,这种流行病已经给地球造成了难以置信的死亡和破坏,过去两年,人们对以前非常无聊的供应链领域产生了前所未有的关注,但太阳升起来了,世界仍然在旋转——也就是说,世界还没有终结。供应链问题是真实存在的,也是世界最新的借口一切。这就好像孩子们告诉他们的老师,“供应链吃掉了我的作业。”

在这一点上,当供应商的第一个借口是供应链问题时,KV是相当怀疑的。当然,这种怀疑不会有任何帮助,除非您购买的任何东西有第二个供应商,您可以用它来打击您的错误供应商。

另一个永恒的问题是,“什么时候替代品不是替代品?”这个问题将永远困扰我们的技术领域。不幸的是,相信自己可以将所提供的任何东西视为带有固定API的不透明盒子的人的数量非常多。这种信念来自于物质世界,在这个世界里,盒子就是盒子,砖块就是砖块,你为什么要在意你的砖块是否是由不同的材料制成的呢?

问题就在这里:这个比喻在物理世界中就像在软件和硬件领域中一样,很快就会被打破。两块砖可能都是红色的,因此对外面的用户呈现出相同的外观和感觉,但如果它们是由不同的材料制成的,那么它们就有不同的质量——例如,强度,但让我们考虑一些不那么明显的东西,例如它们的重量。砌墙时可以堆叠的砖块的数量取决于它们的重量和强度。如果你使用沉重但脆弱的砖块,你可以想象这是怎么回事,如果你不能,尝试一下——只是不要告诉你的健康保险计划KV建议这样做。假设你不是用又重又弱的砖块砌墙,而是多年以后用更新、更重、更弱的砖块替换一些损坏的砖块。关键是你不会想站在那面墙附近。

KV经常提到的一个话题是软件的可延展性。我不断地回到这一点,因为正是这种延展性经常导致软件和系统工程的灾难性失败。您提到您看到了新组件的时间问题。我可以想象没有什么情况比更改关键组件的时间更危险了。计时错误已经是最难跟踪和修复的问题之一,如果在关键组件中关闭计时,那么很可能会影响系统,所以在调试时就只能碰运气了。那些想站在“API是一种合同”的流沙上的人,欢迎他们这样做,但我不愿意向他们扔绳子。


仅仅因为他们测试了这个东西并不意味着他们测试了你的产品所关心的所有部分。


在这些情况下,正确的答案是要求供应商提供尽可能多的信息,以降低接受这种所谓的替换的风险。首先,询问测试计划和测试输出,这样您就可以理解他们是否以与您的用例相关的方式测试了组件。仅仅因为他们测试了这个东西并不意味着他们测试了你的产品所关心的所有部分。事实上,他们不太可能这么做。他们可能只测试了连接回API的部分,而不是当系统中的组件发生更改时出现的边缘情况。


过去两年,供应链这个原本非常枯燥的领域受到了前所未有的关注。


第二,要求完整地读出新旧部件之间的差异。对于硬件来说,这意味着底层技术(例如,旧的部分是90nm,新的是45nm),任何电压变化,以及内部结构。我曾见过将整个CPU核心放入曾经固定功能的数字电子产品的替代部件,这是完全疯狂的,但有人,在某个地方,因为增加了产品的“灵活性”而受到赞扬,而不是因为增加了风险而受到警告。

最后,确保任何你认为关键的部件都有第二个供应商。这应该是不言自明的,但既然我这么说了,那就意味着你知道这是我所见过的许多人在升级后完全毁掉他们的产品后所面临的问题。

你确实问过什么时候该多疑。我的意思是,答案显然是,永远。

KV

回到顶部

作者

乔治诉Neville-Neilkv@acm.org)是内维尔-尼尔咨询公司的所有人,也是ACM队列编辑委员会。他从事网络和操作系统的代码编写工作,从中获得乐趣和利润,教授各种与编程相关的课程,并鼓励您发表与他有关的评论、妙语和代码片段通信列。


版权归作者所有。
向所有者/作者请求(重新)发布许可

数字图书馆是由计算机协会出版的。版权所有©2022 ACM股份有限公司


没有发现记录

登录为完全访问
»忘记密码? *创建ACM Web帐户
文章内容:
Baidu
map