能存活 19 年的 bug 不是 bug —— 有感于微软宣布修复了一个存在了19年的安全漏洞

近日,各大网站,包括新浪、腾讯、网易、搜狐都报道了一则关于微软宣布修复了一个存在了19年的安全漏洞的新闻。 对于一个软件制造界外的人来说,这是一个大快人心的消息,就跟一个隐藏了19年的纳粹分子终于被抓住的新闻一样轰动。但以程序员为职业的我,听到这样一个 消息,却有一种非常不解、甚至是荒谬、搞笑的感觉。从软件生产的角度讲,如果一个bug能存活19年,那它还是个bug吗?

一、很多项目生命期不超过19年

我在很多国企开发过项目,这些项目几乎每过几年都会重新开发一回,老项目或者废弃、或者推倒重来,遇到领导换班子或上级政策方向的改变,更容易发生 这种事情。事实上,有大量的软件存活不到19年,都很短命。这一方面是技术的原因,更重要的一方面是国情的因素。如果在这样的一个项目里有一个bug,当 这个软件几年后被遗弃时,从来没有被人发现——更符合软件科学的说,没有给用户带来任何烦恼。这样的bug对于用户来说是不可见、不可知、根本不存在的。 我们没有必要、也不应该将这样的bug称作bug,更不应该为这样的bug大惊小怪。

二、修改bug有风险

我记得有一个非常有趣的关于bug段子,说的是:

代码中有99个小bug,
99个小bug,
修复了一个,
现在,代码中的有117个小bug。

虽然是个笑话,但作为程序员,我一点都笑不出来,因为这种事情在我们项目的开发过程中经常的会遇到。由于纠正接口中一个bug而导致其它程序调用这 个接口时出现了另外的问题。你可能会嘲笑说这是测试程序写的不够周全,但很多时候,复杂的软件内部关联是很难让加班加点的程序员考虑周全的。

所以,在一个复杂的软件里,特别是对于老项目,最早开发这个项目的人已经流失,而项目文档又写的不够清晰,如果一个bug不是特别严重、不影响核心 业务,如果能说服客户不修改,那就优先考虑不修改,如果非要修改,那必须要深思熟虑、准备充足的测试用例,并想好回退方案,以防万一。

三、是bug?还是设计的功能特征?

之前就有一篇很好的文章指出,Bash里一个所谓的bug实际上是25年专门设计的功能,只是时过境迁,现在的使用环境发生了很大的变化,人们并没有及时的调整过去的老代码,或者现在的新环境并没有照顾过去的老接口。

所以,我们今天看到的一个愚蠢的 bug,也许在历史上的某一天,是一个有意而为之的神奇特性。我们应该思考的不仅仅是这一刻的 bug 或者安全隐患本身,而是在软件开发这个极具创新的活动中,如何有效的保证某个特意设计的功能不会变成 bug。

总之,一个19年的bug,一直默默无闻,没有被人发现、没有给用户带来麻烦、造成损失。我想,时间证明了这个bug是个善良的bug,是个好 bug,我宁愿将它升级成一个功能。即使不能如此,使用用户在这些年的使用中也早就适应了这个bug,能够很好的与它和睦相处,已经不把它当成危险的敌人 了。事实上,在用户的心里,它已经升级进化,蜕掉了bug的外壳。这样的bug,还是应该顺其自然,不改为好。程序员朋友们,你说呢?

文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2024-12-01 18:55:55

能存活 19 年的 bug 不是 bug —— 有感于微软宣布修复了一个存在了19年的安全漏洞的相关文章

java-什么是bug 怎么找bug

问题描述 什么是bug 怎么找bug 什么是bug 怎么找bug 我是个菜鸟 请大神来解答一下 解决方案 bug 就是系统漏洞 就像玩游戏的时候掉出地图外 就是卡入了bug 解决方案二: 你可以将bug理解成系统的一个小错误,只是这个错误对整个系统的运行没有太大的影响 解决方案三: bug是发生在意想之后的情况,通常是由于逻辑不够严谨或对环境不够了解造成的,找bug这个需要有丰富的经验,因为有的bug很难分辨出来

KDE修复了一个13年前的Bug

大约50名KDE开发者在瑞士阿尔卑斯山参加年度编程活动Randa Meetings,他们在此期间终于修复了一个有13年历史的Bug.Kate编辑器维护者Christoph Cullmann在2003年9月递交了这个bug, 问题与Kate工具栏图标奇怪的移动行为和图标消失有关,该bug的重要等级被数百用户投票为重要,但开发者一直没有抽出时间修正这个问题. 在bug递交时,Linux内核的版本号还是2.6.31,Windows XP还是最新的桌面Windows版本,两家最大的发行版还是Mandra

KDE 修复了一个 13 年前的 Bug

大约50名KDE开发者在瑞士阿尔卑斯山参加年度编程活动Randa Meetings,他们在此期间终于修复了一个有13年历史的Bug.Kate编辑器维护者Christoph Cullmann在2003年9月递交了这个bug, 问题与Kate工具栏图标奇怪的移动行为和图标消失有关,该bug的重要等级被数百用户投票为重要,但开发者一直没有抽出时间修正这个问题.在bug递交 时,Linux内核的版本号还是2.6.31,Windows XP还是最新的桌面Windows版本,两家最大的发行版还是Mandra

如何合理地制造“BUG”并且查找BUG

什么是BUG,简单点说就是,程序没有按照我们预想的方式运行.我比较喜欢把BUG分成两类: 1.Crash掉的 2.没有Crash掉的 可能在平时的编程实践中,往往简单的把BUG与Crash基本等价了.而且我们很多精力也都放在解决Crash的Bug上面.而对于没有Crash掉的BUG,似乎没有过多的关注.但是,实际情况上那些让人痛彻心扉的"天坑"往往是那些没有Crash掉的BUG造成的,比如前一段时间OpenSSL心脏大出血.为什么这么说呢?且听我慢慢道来. 如何合理的制造BUG Cra

[MySQL Bug]bug#66301(Percona Bug#1035225)简析

----------- 先跑test case 1.创建测试表 CREATE TABLE t(        id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,        k INT,        c CHAR(1),        UNIQUE KEY(k)) ENGINE=InnoDB; 2.当顺序执行如下SQL时 SQL1–INSERT INTO t(k) VALUES (1), (2), (3) ON DUPLICATE KEY UPDATE c

Bug太多了!微软停止WP8.1预览版升级

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 本周一微软正式开始推送WP8.1开发者预览版升级,众多新功能大获赞许.不过仅过了一周,微软今天已经宣布,暂停此次WP8.1升级推送. 据了解,微软之所以叫停WP8.1开发预览版推送,是为了修复已经出现的众多Bug,而主要是可影响所有设备的"80188309错误".目前,部分尝试将爱机升级到WP8.1预览版的WP用户发现,已

iOS8系统Bug_iOS8已知Bug整理与bug解决方法

1.App Store开启速度慢 升级之后,身边的很多朋友都反映App Store开启速度慢了很多,打开就显示一片空白,甚至有一部分人根本打不开.可是我们使用的应用大部分都要从App Store中下载,这也给给用户带来了不小的麻烦. App Store无法开启 解决方法并不难,打开设置-无线局域网-DNS,接着将DNS码改为8.8.8.8即可恢复正常.成功之后再将DNS码换回去就大功告成了,如 果您忘记保存原始的DNS码也没关系,只要在设置中选择重置网络就能自动恢复初始状态,只不过之前记录的Wi

一个在Windows各版本系统存在了15年之久的bug

一个在Windows各版本系统存在了15年之久的bug 存在于Windows系统15年的bug 微软刚修复了一个存在了15年之久的bug,这个bug允许攻击者在某些情况下完全控制运行着各版本Windows系统的电脑.这个致命的漏洞以后 依然会存在于Windows Server 2003中,除开这个问题,微软承诺会在最后的5个月时间里继续对其进行技术支持. 这个系统缺陷,微软已经耗费了超过12个月的时间进行修复,影响的范围包含所有连接到公司.企业和政府机关网络并使用了活动目录服务 (Active

黑莓推送最新Android补丁 修复重要漏洞

黑莓延续着它做出的承诺:每个月固定向旗下的Android手机推送安全补丁.不久前黑莓就为5款Android手机进行了6月份的例行推送. 黑莓推送最新Android补丁(图片来源gsmarena) 对于黑莓而言,每月的稳定更新除了加入谷歌的安全补丁之外,也会对上一个版本发现的BUG和缺陷进行修补.比如这次更新就对Wi-Fi和相机驱动进行了维护,黑莓同时还修复了一个可任意执行内核代码的漏洞. 黑莓的更新同时针对合约版和非合约版,使用黑莓Android手机的用户最近可以留意一下推送. 本文转自d1ne