0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

代码质量如何影响企业的投资回报率

IAR爱亚系统 来源:IAR爱亚系统 2023-05-26 10:22 次阅读

在上文嵌入式软件开发的十二大基本要素(四):调试》中,我们分析了如何减少调试时间,提升工作效率。

本文为白皮书系列第五部分,将分析代码质量是如何影响企业的投资回报率(ROI)和总拥有成本(TCO)。

平均来说,根据 Steve McConnell 的《Code Complete》,一个开发人员每写 1000 行代码会产生 70 个 Bug。其中大约 20%,即每 1000 行代码中的 15 个 Bug 会被客户发现。更糟的是,修复一个Bug 要比写一行代码多花 30 倍的时间。

通过在开发周期的早期引入代码质量控制,可以将错误的影响和消除错误的工作量降到最低。在每个开发人员的电脑上提供静态分析,并有明确的编码标准,可以帮助他们在开发过程中发现源代码中的问题,在此阶段犯错的成本比发布产品后才发现要小得多。

此外,很多人都在谈论设计他们的代码以便重用,但软件估算模型表示重用的代码所占的工作量至少是编写新代码的 50%。

4f80c492-fb2f-11ed-90ce-dac502259ad0.png

如上图所示的 Boehm 的 COCOMO 方法,估计了编写代码的相对成本是如何被对虚线中的重用软件所做修改而影响的。X 轴是对打算重用的代码所做修改的百分比,而Y 轴代表了写新代码的百分比。请注意,对于三个数据样本中的两个代码,不需要对所谓的重用代码做太多的修改,就可以突然跳到从头开始重写代码的 50% 的工作量。AAM(自适应调整修改器)线显示,对重用产品中的小修改可以产生不成比例的大成本。这里的关键点是,如果真的想重复使用代码,它必须具有非常高的质量和良好的设计,以达到成本效益。

提高代码质量的最快方法是使用代码分析工具。事实上,如果正在创建一个功能安全认证的应用,你甚至会被强制要求使用静态分析工具。这些类型的工具可以帮助你找到代码中最常见的缺陷来源,也可以帮助你找到开发人员在试图编写代码时往往不会考虑的问题,特别是当他们为了让某些功能运行而加入支撑代码时。静态分析工具确实能帮助你开发出更好的代码,因为它们强制执行编码标准。根据你的静态分析解决方案的质量,它们可以在你还在写代码的时候检查出许多其它潜在的问题。

有几个原因能够证明代码质量是一个大问题。首先,根据开发组织的成熟度,开发人员可以把 90% 的时间花在调试上。如果能在缺陷进入正式构建之前快速隔离它们,你就会有较低的缺陷注入率,这意味着可以更快地达到组织的质量指标。其次,这也意味着你的代码总体上有较少的剩余缺陷,这使得它成为重用的合适候选者,因为再次使用该代码时,发现先前未被发现的缺陷的机会较低。高质量的代码由于缺陷较少而更容易维护,而且如果它遵循良好的软件工程原则,它将更容易扩展,因此重用它确实能提升后续项目的速度。

为什么质量很重要?

有趣的是,每个阶段的每个缺陷的成本都如预期的那样上升,但总成本却在下降,就像 Capers Jones 的《Estimating Software Costs》一书中所示,缺陷数量在减少。在实践中,发现和修复每个阶段的错误并不需要更长的时间,但是尽管数量减少了,成本仍然存在。值得注意的是,随着产品的成熟运行,由于服务于现场产品的影响,每个缺陷的维护成本要高很多。其他无形成本,如对品牌的损害和未来客户和收入的损失,也仍然是需要考虑的因素。

4f93bb88-fb2f-11ed-90ce-dac502259ad0.png

那么,考虑到这些因素,投资的回报是什么呢?静态分析可以减少软件开发中各个阶段的错误数量。一个简单的分析是利用上图中的数据来减少错误的数量。鉴于这种在开发过程中引入的错误的减少,我们可以看到成本的显著降低。

这个简单的分析得出每个 Bug 可以节省大约 126 美元,即假设在开发过程中每 1000 行代码平均有 15 个 Bug,则转化为每 1000 行代码节省 1900 美元。当然,结果会基于其他因素,如劳动率、缺陷检测和修复时间,以及缺陷密度,会有所不同。但由于许多系统使用 10 到 100 KLOC 或更多,因此静态分析的商业案例显而易见。

提高编码技能

此外,在 Dr. Dobbs 所做的另一项研究中,认为它将缺陷注入率降低了 41%,这节省了大量测试时间,既缩短了工程时间,还加速了上市时间。

4fb92f9e-fb2f-11ed-90ce-dac502259ad0.png

在这项研究中,每个月的缺陷注入率是相当稳定的,直到该组织引入编码标准,然后缺陷率急速下降。随着开发人员对标准越来越熟悉,偏差越来越少,缺陷率直线下降。

Google 在 ACM 出版物上发表了一篇文章,探讨了代码分析的优点。虽然文章对他们的整个代码库,包括 C、C++Java 进行了全面的考察,但结果非常明显:“在开发过程的早期就能发现编译器错误,并且能够整合到开发人员的工作流程中。我们发现扩大编译器的检查集对提高 Google 的代码质量是有效的。”作者表示,将静态分析检查整合到编译器工作流程并使其作为错误出现,极大地提高了开发人员对工具信息的关注,最终大幅提升代码质量。

再往下看,他们谈到了向最近遇到编译时间错误的开发人员和已经收到修复同一问题的补丁的开发人员发出的调研。

“Google 的开发人员认为,在编译时标记的问题(相对于检查过的代码的补丁)能捕捉到更重要的错误;例如,调研参与者认为 74% 在编译时标记的问题属于真正的问题,而在检查过的代码中发现的问题只有 21%。”

此外,文章还谈到了将代码分析整合到工作流程的重要性,指出当他们通过静态分析工具自动运行提交的代码并邀请工程师查看分析结果时,很少有工程师跟进。但是,如果在编译过程中就能得到即时反馈,那么就会让更多人使用静态分析,且分析结果也更难被忽视。因此,Google 选择在每个人的工作流程中默认集成静态分析。他们认为要推广代码分析工具,开发人员必须感到能从中受益,并且喜欢使用这些工具。从中可以看出,编码标准确实对开发工作有影响。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2904

    浏览量

    102994
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66766
  • 编译器
    +关注

    关注

    1

    文章

    1577

    浏览量

    48614

原文标题:嵌入式软件开发的十二大基本要素(五):代码质量

文章出处:【微信号:IAR爱亚系统,微信公众号:IAR爱亚系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    软银愿景基金对高科技企业先后投资700亿美元 投资回报率达44%

    3月9日消息,据外媒报道,日本软银集团首席执行官孙正义(Masayoshi Son)表示,持资1000亿美元的愿景基金(Vision Fund)已经投资了约700亿美元,未来可能会进行更多的押注。
    发表于 03-09 09:09 1978次阅读

    现在,谷歌让你直接看到投资回报:垦鑫达说

    `现在,谷歌让你直接看到投资回报:垦鑫达说 直接营销可能是最烦人的营销形式,但它是直接ROI(垦鑫达注:投资回报率)是最简单的策略。这是一个基本的和假想的例子:我发送目录/电子邮件
    发表于 09-19 12:58

    贴片机成本分析两方面问题

      成本分析考虑两方面的问题:第一,企业本身的资金能力,企业准备在设备方面投入多大的资金;第二,企业如何考虑投资回报率,设备的折旧时间、资金
    发表于 09-05 16:31

    采用云计算提高员工工作效率的10种方式

    将业务迁移到云平台对于组织来说是一个巨大的决定,在对基础设施和工作方式进行任何类型的更改之前,组织需要权衡其优点和缺点。在组织中进行任何新变更的最终目标是提高投资回报率(ROI),这也与提高员工的效率和生产成正比。  
    发表于 01-16 15:26

    请问ch9329鼠标的回报率是多少,可以修改吗?

    ch9329鼠标的回报率是多少,可以修改吗
    发表于 09-29 07:34

    5G投资回报的问题

    5G需要多少基站?600万?800万?还是? 随着用户流量需求和网络频段的不断上升,我们可以预计,5G是一个超密集的网络,将新建成倍的小基站。 5G投资回报的问题成为行业关注的焦点。 5G要花多少钱?能带来多少收入和利润?目前有很多预测,但都忽略了一个关键问题5G网络的
    发表于 11-29 14:05 1517次阅读

    如何衡量物联网投资的全部影响和投资回报率

    我们研究发现,58%的受访者认为提高运营效率是物联网、数据和连接投资的最大好处。这很可能是因为物联网具有巨大的潜力来增加产出,同时降低多个部门和行业的投入。例如,物联网制造设备可以帮助管理物理生产线,避免停机,并增加产量。物联网还可以帮助公司实时监控库存,以帮助控制成本。
    发表于 05-23 16:39 946次阅读

    论B端AR/VR市场投资回报率与未来

    相较于C端市场,AR/VR在B端已经落地许多应用场景,包括:教育、医疗、安防、培训、地产、文旅、体育等。因为看到了VR/AR的高回报率,各大企业和政府已经开始关注这种技术。
    发表于 06-11 15:40 3237次阅读

    零售商怎样利用物联网提高投资回报率

    随着越来越多的零售店实施物联网和智能零售设备,进而使零售店的投资回报率大大增加。
    发表于 09-16 15:15 896次阅读

    AI在零售业的投资回报率怎样

    AI的应用大大降低了预测成本,这意味着企业能够以越来越新颖和意想不到的方式来推动业务的发展。
    发表于 05-01 21:16 311次阅读

    大多数企业希望通过5G投资获得用户的支持和增长

    网络安全厂商Fortinet公司的最新调查报告表明,电信行业对5G及其投资回报率普遍持乐观态度,但基于5G的产品需要更安全,更适合企业使用。
    的头像 发表于 10-21 15:30 1069次阅读

    变速驱动器提高效率和回报率的解决方法

    盲目添加VSD不会自动提高轴的效率(传动系统+电机+VSD)。VSD有功率损耗,可能会降低整体系统效率。确定效率增加和最快的回报率可以通过以下通用过程进行总结。
    发表于 01-23 10:07 333次阅读

    利用物联网安全性提高投资回报率

      近年来,随着网络世界中大量漏洞被利用,消费者正被迫考虑安全性,现在正在考虑消费者和企业客户的购买决策,从而推动顶级组织和一级企业投资于历史上最被忽视的系统设计方面之一。
    的头像 发表于 10-20 10:44 542次阅读

    嵌入式软件开发基本要素之代码质量

    IAR 的嵌入式开发解决方案涵盖了所有的嵌入式软件开发基本要素,增加了提高生产力和效率的价值,保证了质量,并加快了上市时间。这一切可以通过投资回报率(ROI)和总拥有成本(TCO)的用例来得到证明。
    发表于 05-15 16:36 414次阅读
    嵌入式软件开发基本要素之<b class='flag-5'>代码</b><b class='flag-5'>质量</b>

    雷柏游戏鼠标实现OTA升级,实现无线8K回报率,无需购买额外接收器

    据了解,升级后的硬件设备使用了瑞昱 Realtek 芯片,利用驱动在线更新接收器和鼠标固件,调整为 OTA 型无线 8K 回报率模式,最大无线响应速度达到惊人的 125μs (0.125 ms),相比于传统的 1000 Hz回报率鼠标,操作更为快捷流畅。
    的头像 发表于 03-26 11:01 172次阅读