一个程序bug毁掉一切

2017-01-05

“那一刻,我的内心是崩溃的。” 几乎每个软件工程师都经历过,用无数个不眠之夜在编程,又做了不知多少枯燥的代码测试工作,但最终得到的却是会导致软件出问题的bug。显然,程序bug对程序开发人员来说,简直是噩梦般存在着,然而,程序bug所产生的结果不仅仅影响着软件开发者,由于软件故障(程序bug),各个国家和组织每年在浪费生产力、返工和实际毁坏上损失巨大。

2016217日,被日本寄予厚望的 X 射线天文卫星“瞳”成功发射升空,但仅仅一个月后,“瞳”与地面的通信出现严重故障,经地面光学望远镜测控发现其运行轨迹出现多块太空碎片。428日,日本宇宙航空研究开发机构(JAXA)正式宣布,无法恢复对X射线卫星“瞳”的操控,事故原因经初步调查源自底层软件错误。卫星的控制系统在发现飞行姿态失控时,采取了错误的调整,推进器点火时朝向了错误的反方向,导致自身旋转更加严重,最终彻底失控。对于这颗造价2.86亿美元(约合人民币18.6亿元)的代表了“新一代X射线天文学”未来的卫星,Richard Mushotzky 教授遗憾的说道,“它工作了三天,我们曾规划的是10年。”

一个程序bug毁掉一个卫星

然而对于软件程序bug,我们真的束手无策吗?

当然未必。我们可以对程序代码进行分析。请程序专家对每一行代码进行分析,找出软件程序bug安全漏洞。然而,面对这样的工作需要耗费大量的人工成本,而且效率低下,并不适于企业开发商业软件。而且,用人力对软件程序进行分析,难免会因为人的疏忽出现一些意想不到的错误;同时,自己的收集的程序bug库和安全漏洞库并非完整,因此在检测过程中,难免会遗漏一些错误,从而造成不可预估的可怕后果。

那么,机器能否代替人工对代码进行静态扫描和静态分析呢?答案是肯定的。一款专业且全面的代码静态扫描和静态分析工具就可以很好的解决这方面问题。机器的持续性,准确性和抗疲劳性远高于人们;同时,机器具备人类不具备的运行速率。所以对于这款专业且全面的代码静态扫描和静态分析工具只需实现以下几个功能即可。第一,对虚假的路径处理、统计分析和其它技术以减少误报的产生。第二,以极高的速率快速对源代码进行分析,以便节约更多的时间。第三,要在保持极高速率的情况下保证数据流可达100%的路径分析和统计分析,评审整个程序所有的可能路径。第四,需要有查找最严重的错误的先进技术,可以检测如系统崩溃、内存泄漏、内存错误等广泛的严重缺陷。

对于程序bug,我们并非束手无策。根据自身的实际情况,应用合适的工具和方法,既可以降低我们在程序开发过程中由于程序bug造成返工而消耗的人力物力。同时,也可以尽可能降低产品因程序bug或安全漏洞造成的不可逆转的损失。