测·控领域专业互动媒体平台
推动测试测量,检测诊断,传感物联,遥测自控智能化发展
当前位置:CK365中国测控网 > 技术中心 > 相关知识 >

软件测试的投资回报率(二)

2015-11-13 09:29:51

[导读] 由于涉及到的参数众多并且参数属性不同,投资回报率的计算通常比较复杂。这些影响因素有的相对来说容易识别,有的则是比较难以获取和计量。在这本白皮书里,我们识别和讨论了9个影响与静态分析相关的投资回报率最佳化的关键因素。同时我们也设计了基于来自实际开源项目分析代码的案例来帮助我们论证和量化对投资回报率的潜在影响。

由于涉及到的参数众多并且参数属性不同,投资回报率的计算通常比较复杂。这些影响因素有的相对来说容易识别,有的则是比较难以获取和计量。在这本白皮书里,我们识别和讨论了9个影响与静态分析相关的投资回报率最佳化的关键因素。同时我们也设计了基于来自实际开源项目分析代码的案例来帮助我们论证和量化对投资回报率的潜在影响。

准确计算投资回报率是一项非常复杂的工作,他要求我们考虑多方面的影响因素,比如预估收益来源、确定回报周期、量化资本成本、评估预测精度、分析潜在风险等等。在这诸多影响因素当中,成本和收益无疑是投资回报率的核心问题。

接下来的几天里,我们将逐一分析软件开发生命周期(SDLC)的9个关键行为与投资回报率的关系。这9个关键行为对软件开发的成本及收益起着决定性的作用。

3、代码重用

对于大多数商业软件而言,其新编代码的比例通常是非常低的,大多数代码是已经存在又被重用的,代码重用最大的好处在于提高投资回报率。

我们注意到,对于“已经存在的代码”有着很多不同的定义,业界认为“已经存在的代码”大致可以分为以下四类。随着公司越来越依赖于这些“已经存在的代码”,对其优缺点和成本影响进行深入探究就变得非常重要了。

遗产代码:很多时候,遗产代码独立于公司当前的项目进程和最佳实践方式:关键开发工具的版本已不再支持遗产代码、遗产代码的开发人员已经离开,等等。因此,遗产代码的应用面临重重挑战,在安全相关领域更是尤为突出。在验证遗产代码的结构完整性方面,静态分析工具和代码标准扮演着重要的角色,同样的作用也体现在代码的更新机制方面,使得遗产代码符合现今的代码标准和最佳实践。这将显著地影响投资回报率,并降低风险。

开源代码:开源代码存在一个不可回避的问题,开源代码的来源以及后续支持是不确定的。通过静态分析工具和代码标准,我们可以对开源代码的源代码进行验证,以保证开源代码的可靠性。

自动生成代码:通过静态分析工具和代码标准,对自动生成的代码进行验证,我们可以获悉代码自动生成工具可靠性。在这里,投资回报率依赖于工具选择性验证手写代码的能力。一些代码库比较小的团队采用MDD进行设计、可视化及建模,但是并不通过MDD进行代码自动生成。一个被广泛接受的结论是:对于代码规模较小的团队,人工生成和验证更具成本效益。

外包:软件外包的趋势持续增长,其主要原因为解决人员短缺、降低劳动成本、专业技能的可用性、全天工作流程。外包有时限于软件,有时是软硬件捆绑。如汽车行业,OEMs的供应链深且广泛。在这种情况下,OEMs通常要求供应商开发的代码符合MISRA规范,并且提供符合规范的证据。大多OEMs要求供应商递交QAC的检查报告,这为OMEs的软件结构完整性提供了保障。在这里,一个非常重要因素是:如何判断外包人员是否已经完成了自己的开发任务,谁来负责后续的维修和支持工作,这个因素一定会体现在供应协议当中。比如,供应协议规定维修工作外包等等。如果代码质量高且易于维护,供应商的利润率会得到显著的提升。同样的,如果供应商的代码结构差,维护成本将会非常高,风险亦是如此。

4、生命周期模型

正如前文提到的,在SDLC进程中尽早识别并修复缺陷至关重要,对投资回报率有着很大的影响。

敏捷开发提倡在较短的开发短期(通常4—8周)内快速交付,因此代码需要保持在一个持续良好的状态,缺陷一旦引入必须尽快消除。类似地,持续交付也要求代码保持在一个持续良好的状态。因此,静态分析能够很好地与敏捷开发和持续集成理念集成也就不足为奇了。事实上,早期经常对代码进行静态分析有助于提高静态分析投资回报率。

传统的开发模型,比如瀑布模型和V-模型,很有可能会延迟缺陷的发现。在这些传统的连续开发模型中,编码和测试之间有着相当长的时间间隔。在这种机制下,正如前面所讨论的,最大化静态分析的投资回报率意味着把缺陷消除从测试阶段提前到开发阶段。

5、自动化

代码静态分析的自动化与以下两个因素强相关:与SDLC的进程进行集成以及工具分析源码的效率。自动化将带来很多好处,尤与投资回报率相关,如:

• 可伸缩性---能够轻松地增大分析量

• 速度---显著改善分析的持续时间

• 一致性和可预测性---自动化工具每次都会提交相同的结果,不会因人而异。

• 独立---工具的输出是客观的,而不同的人有不同的观点

• 精确度---提供高质量的输出

• 可追溯性---自动化过程可留下相关文档(审计),可用作执行验证的依据

• 解放关键专家资源——从重复性任务当中解放出来,从事更有价值的活动。

6、静态分析工具的有效性

毫无疑问,采用自动化进程会为开发团队带来很多好处。但前提是团队采用高效的静态分析工具。如果团队采用无效的静态分析工具,将会带来很多严重的问题。

误报:在分析结果时,高误报率带来的明显影响是额外增加的时间和成本。如果开发团队选用的编码规则数量有限,且代码规模有限,误报所带来的后果可能还是可控的。然而,随着规则数量和代码大小的增加,一个“嘈杂”的工具带来的影响将变得非常明显,误报所带来的后果将变得不可控,进而导致开发团队对工具的可信度产生怀疑,最终放弃这一工具。

漏报:误报将影响开发团队的开发效率,但漏报更加危险,因为它们会导致虚假的自信。漏报的风险在许多标准里被明确强调,包括DO-178、IEC 61508和MISRA。

最好的静态分析工具应有着最高的查准率和查全率。TERALabs独立研究了一系列静态分析工具在强制遵循MISRA C 11条关键规则时的有效性,研究结果显示QAC提供了最高的查准率和查全率。

清楚理解工具的范围和检测出来的缺陷分类至关重要。比如涉及到编码标准时,必须清楚地理解什么是编码规则覆盖?编码标准设计了两种不同的编码规则:一种是可以用静态分析工具来验证的领域,另一种是需要人工交互的领域。提防那些声称有100%覆盖率的工具!

7、验证要求

安全关键领域的项目通常需要遵循特定的质量标准。汽车、航空、国防、医疗、铁路、核电等诸多行业都推出了相关的行业标准(ISO 26262、DO-178B/C、 IEC 62304、 EN 50128、 IEC 60880),对软件的质量做出了强制性的要求,比如要求项目团队使用标准认证合格的工具。

8、编码标准支持

编码标准的主要目的之一就是定义一个更安全、更确定的语言子集,消除未定义行为可能出现的情况,帮助识别编码错误(例如初始化、名字覆盖、不可达代码等)。

不管是采用被广泛认可的标准(比如MISRA、JFC或是HIC++),或自定义的内部标准(后者可能源自前者,另外集成了一些定制的规则,如专用的命名约定),一个静态分析工具必须能够支持代码标准的实施。

业界普遍承认编码标准的专业性,这些编码标准对编程语言有着深刻的洞察力,知道编程语言当中潜在的风险和陷阱。更重要的是,大多数编码标准的价格是可接受的或是免费的。因此,不管是从技术的角度来看还是从成本的角度来看,利用这些规则集要比从头发明新的规则有效得多。

9、开发角度—成本之外

上文中的例子往往偏重于对效率和成本方面的介绍,但开发团队获得的好处绝不仅限于提高效率和节约成本。传统的项目管理方法论当中,也涉及到交付时间和质量方面的改进,例如:

        • 更快的交付时间和更短的连续交付间隔

• 对代码质量更多的信心—来自内部和外部

• 开源代码更安全的采用

• 对代码外包更有力的质量把控

• 便捷的支持和维护

• 交付可预测

[整理编辑:中国测控网]
标签:  软件测试[0]    计量[1]
 
[ 技术中心搜索 ]  [ ]  [ 好友分享 ]  [ 打印本文 ]  [ 关闭窗口 ]  [ 返回顶部 ]

版权与免责声明:

①凡本网注明"来源:中国测控网"的所有作品,版权均属于中国测控网,转载请必须注明中国测控网 www.ck365.cn。违反者本网将追究相关法律责任。
②本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。如其他媒体、网站或个人从本网下载使用,必须保留本网注明的"稿件来源",并自负版权等法律责任。
③如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

注册成为中国测控网会员

可以无需任何费用浏览专业技术文章

 
 
注册中国测控网会员以便浏览全文