Case Studies

Red Lizard Software

面对敏捷开发的大形势,加速Goanna静态分析

2010年11月10日 – Ralf Huuck博士,Red Lizard Software

关于RED LIZARD SOFTWARE

Red Lizard Software是任务关键型行业中集成C/C++源代码分析工具的领先提供商。Red Lizard Software开先河地将静态分析的自动化技术与模型校验相结合,其宗旨是以更快的速度向市场推出质量更高的软件。

Red Lizard Software的旗舰产品Goanna Studio和Goanna Central能够自动检测软件漏洞,节省软件开发和调试时间,避免产品开发过程中潜在的数百万资金浪费。

Red Lizard Software发源于NICTA——澳大利亚的ICT卓越研究中心。有关更多信息,请访问 redlizards.com.

关于作者

Ralf Huuck博士是Red Lizard Software的CTO兼联合创始人。在此之前,Huuck博士曾负责澳大利亚NICTA的Goanna技术奠基研发工作。

得益于科研背景,他在15年多以来,以解决实际问题而享誉业界。Huuck博士曾在德国、法国、澳大利亚、日本和中国香港担任若干要职。其发表的科技论文超过30篇,并在多个国际大会上发表过演讲。

摘要

对于每天可能生成大量产品编译的任何敏捷软件开发环境,拥有可扩展的工具来加快并深化源代码分析以尽可能快地找出漏洞、安全缺陷和代码缺陷,是极其重要的。

本文着重介绍了Red Lizard Software为确保其静态分析旗舰产品Goanna Studio的真实网格计算性能而将该产品与Xoreax的Incredibuild解决方案紧密集成的一些关键动因和决策。我们特别介绍了具体的实施过程以及Xoreax解决方案所带来的价值增长。

难点

软件开发环境正向着敏捷开发和连续集成方向转变,每天通常有大量产品编译生成,因此应用生命周期工具必须也随之转变,跟上快速开发的步伐,为用户带来最大化的价值收益。

软件开发人员的核心应用生命周期工具其中之一是静态源代码分析。Red Lizard Software的Goanna Studio和Goanna Central产品中提供的静态分析能够在编译时自动扫描C/C++源代码中是否存在通常难以发现且严重的漏洞,如缓冲区溢出、内存泄漏、潜在崩溃。

虽然Goanna Studio是当今市面上速度最快、精确度最高的静态分析工具之一,但如要一次性分析数百万行代码,它可能仍需要一定时间。敏捷开发环境中的时间通常紧缺。这就是为什么在评估Incredibuild时,Red Lizard Software自己设定了三个目标:

  • 通过最大程度缩减C/C++源代码分析时间,为客户带去最优的价值
  • 紧密集成到Visual Studio中,以最大程度减少过程修改,实现轻松适应
  • 既能够使用现有的Goanna Studio特性和功能,同时又带来卓越的性能

备用方案

源代码分析速度提升的其他方案也有不少。最明显的一个方案是,降低分析的深度和精确度,但这与Red Lizard Software自己的首要目标相悖。

另一个方案是,让客户自己投资购买高性能设备,如多核服务器。但这也与我们的目标相悖,此外,一方面,当前的成果几乎支持软件开发人员的一切常用硬件,而另一方面,又要求尽量减少对现有设施的更改。

第三个方案是我们自己开发一些网格计算功能。虽然我们的团队拥有这方面的技术能力,但从商业收益角度看,这没有任何意义,而且还可能极大推延其他更为紧迫的任务。

解决方案

我们研究了一系列的分布式构建环境,最后确定 Incredibuild 为我们的首选,一方面因为他们长期以来声誉卓著,另一方面因为他们的技术立等可用,而且还能轻松扩展。下载和安装的过程非常顺利,用户手册也简明易懂,不需要费力学习。

技术挑战与具体实施:

我们这些主要目标的实现所面临的技术挑战是,保留Goanna Studio的现有使用和流程,同时尽可能实现无缝集成。这就需要对网络上的不同实例“广泛运行”Goanna Studio后端分析引擎,同时保持我们自己的内部分析数据库在各网络实例间的一致性。

为了解决第一个问题,我们使用了 Incredibuild 的接口扩展包。它让我们能够在Incredibuild的基础架构上运行我们自己的分析引擎。这种实施方式非常简单,几天时间就能准备好原型。

第二个问题要在每轮分析运行时,确保不同网络实例之间内部数据库的一致性和最新性,则具有较大的挑战性。关键想法是,创建能够在每个网络实例上传递并更新的本地数据库以供并行分析,然后执行后分析步骤,将本地数据库合并并同步到主内部数据库中。这样,在每次运行结束时,产生的开销就极少,这样的解决方案远远优胜于任何逐次分析。

结果

在最终实施阶段中,将Incredibuild技术与我们的Goanna静态分析产品全面集成。该技术兼容各种不同的硬件,包括服务器、笔记本电脑、甚至虚拟机,能够在异构环境中轻松扩展。

我们发现,开发速度随Incredibuild客户端数量的增加而线性地提高,同时还发现,只存在源于网络延迟和我们数据库运行后同步的极少开销。典型的运行时间缩短见附图。

益处

得益于Incredibuild与Goanna Studio的无缝集成,我们能够为客户带去最大化的价值。事实上,对于现有的Incredibuild客户,Goanna Studio是一套双击系统,不仅带来了我们完整的产品特性,而且还以简单的鼠标点击实现了网格计算功能。

Incredibuild的开放且透明的接口帮助我们实现了对网格计算的利用,同时又无需花费去开发专有解决方案。它开辟了一条成本效益更好且更可靠的途径。

总结

通过携手Xoreax,并将Incredibuild方案纳入到我们的产品中,我们能够以最高的满意度满足客户需求,在敏捷开发环境中,守住Goanna Studio在专业化C/C++软件分析领域的前沿要地。