关于我们
关于我们
产品服务
产品服务
推广运营
推广运营
网站建设
网站建设
微信公众号
微信公众号
小程序开发
小程序开发
APP开发
APP开发
首页
首页
2019/4/7 11:21:33
软件质量保证正在越来越被人们所重视,由于软件质量问题,可能会导致严重经济损失甚至灾难事故的发生。源代码分析技术是通过分析源代码发现其中存在的代码缺陷的技术,是提高软件质量最有效的手段之一。源代码分析技术已经有20多年的发展历程,它不需设计测试用例,不需运行程序,因此被广泛应用于各行各业。
2009年3月19日,源代码分析领域的先驱——美国Klocwork公司在北京裕龙国际酒店会议厅举办Klocwork源代码分析最佳实践研讨会。研讨会以“源代码分析让开发变得更敏捷”为主题,围绕源代码分析的作用以及如何将源代码分析融入开发流程展开研讨。会议现场, Klocwork公司的高级技术专家Mark Grice先生详细介绍了源代码分析技术的发展,并结合具体技术案例讲解在敏捷开发过程中,为什么以及如何利用源代码分析技术实现效益最大化,Mark先生还讲解了如何借助持续集成的思想实现第一时间发现并消除代码缺陷的策略。
敏捷的前提是编写无缺陷代码
敏捷宣言中有一条重要原则:首要的进度测量标准是可正常运行的软件。可正常运行的软件是指软件没有下列问题:无法顺利构建、不可预期的行为、不满足产品需求及常见的编程缺陷。这一原则不只适用于敏捷方法,很多软件开发过程,包括CMMI和六西格玛等严格的开发模型,均提倡把编写无缺陷的代码作为基本原则。这些过程都采取阶段内的缺陷控制措施(防止缺陷从引入阶段泄漏到后续阶段)。敏捷开发过程的迭代周期短,因此,必须保证能迅速识别并纠正潜在的软件缺陷,才能进入下一次迭代。
尽管敏捷开发团队普遍采用了持续集成和回归测试方法,可以有效地发现导致构建过程或回归测试异常中断的缺陷,但在清除如下几类常见的编程缺陷时效果并不明显:内存及资源管理错误、空指针问题、未初始化变量、程序数据管理问题、缓冲区溢出、数组越界、未经验证的用户输入、存在安全漏洞的代码、并发异常以及复杂、费时的维护性问题。缺陷多的代码会导致本次迭代或者后续迭代产生风险,形成迭代不彻底或者延期
以工具助推敏捷的理想
虽然敏捷宣言中的 “个人和交流胜于过程和工具” 原则看似并不强调工具的作用,但敏捷开发团队仍然要用很多工具来支撑——包括软件配置管理工具、构建管理工具、需求跟踪工具、测试工具、项目管理工具及其他工具。
敏捷开发团队使用的大部分测试工具都将重点放在功能测试、单元测试以及构建的质量控制上,而不太强调通过审查源代码来识别非功能性的错误,比如编程错误。这是由于以前发现这些缺陷的方法太繁琐,敏捷团队也没有时间做冗长的代码审查,更不愿意为了发现一个内存泄露缺陷而进行数天的审查。即使是像单元测试这种在敏捷开发中不可缺少的测试,也需要创建和管理测试用例才能帮助开发人员查找缺陷。
无缺陷的代码则可保证开发的进度及敏捷性。为实施阶段内缺陷控制,编写无缺陷代码,需要制定一套解决方案,使开发人员能控制缺陷的发现和清除过程,增强开发人员间的协作,以尽早消除缺陷。
Klocwork Insight是行业领先的源代码分析工具,全面支持各类编码缺陷的检查,开发人员可以控制分析的过程,还能在无需进行后续审查的情况下,获得集中式分析的准确度和效果。Klocwork Insight支持敏捷开发的主要原则,提供下面的特殊功能:
联机桌面分析 Klocwork能与客户的开发环境集成,既可以在个人开发环境级分析,也可在系统集成建级分析。与其他工具不同,Klocwork Insight提供了联机桌面分析功能(专利技术)。通过联机桌面分析,开发人员可以在第一时间更准确的发现缺陷。该功能使开发人员可以在自己的环境进行快速的本地源代码分析,这种分析能够收集系统的全局信息用于提高分析的准确度,并为开发人员提供协同清除缺陷功能。
检入无缺陷代码 利用Klocwork在代码检入代码库之前,通过快速的代码分析,发现并消除缺陷,避免缺陷流入公共范围和后续阶段。这种无需设计测试用例、无需执行程序的高效率缺陷扫描方法,大大提高了敏捷性。
软件度量和报告 Klocwork Insight提供了100多种客观的、可操作的度量,这些度量可直接从软件代码计算得到。Klocwork的软件度量功能可以解答关于软件开发过程的关键性问题。例如,敏捷开发的一个关键问题是:软件缺陷是在开发人员的桌面环境上即被发现并修复,还是泄漏到集成构建阶段?Klocwork Insight在缺陷还未扩散到代码流之前就能在桌面自动汇集所发现和修复的缺陷信息。这一独特功能使开发团队能更好地理解缺陷控制活动。这一功能结合客户自定义的度量模型――将度量按照人员、开发组、地域、软件组件或者其他任何适合于组织的属性进行统计分析――可以使开发团队在迭代初期就能识别出代码库里风险最高的代码。
重构 Klocwork Insight支持重构。重构是一种敏捷技术,即在不改变软件功能的前提下,重新构造代码单元以简化设计和操作。Klocwork Insight提供了源代码的图形化表示法,显示构成系统的组件、块、子块及它们之间的关联、依赖关系,辅助进行代码的影响分析。代码的架构分析能力还可用于进行“假设(what if)”分析,以构造维护性更好、可重用、复杂度更低的系统。
降低总成本 敏捷开发团队通常都是工作在需要严格控制成本的环境中。Klocwork Insight的综合分析能力强,软件开发机构只需部署一种这样的工具,即可具备全面的功能,降低了成本:支持C、C++、JAVA多种语言;检测关键性的缺陷;检测安全漏洞;体系架构分析与再工程;生成并管理100多种软件度量。敏捷开发团队使用Klocwork工具后,还可降低在用户现场发现软件缺陷的风险,从而对软件的实际成本产生直接的影响。
具有说服力的是,Klocwork开发团队本身就是一个敏捷开发团队。Klocwork使用Klocwork Insight对Klocwork源代码进行分析,是源代码分析结合敏捷开发的实践者和受益者。本次研讨会,正是结合软件开发领域的先进理念,将Klocwork源代码分析的应用提升到了一个新的层次,对于将Klocwork源代码分析融入软件开发生命周期具有现实意义。