提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|行业资讯|编辑:郑恭琳|2020-05-22 17:17:05.933|阅读 246 次
概述:编码标准是良好软件工程实践的组成部分,使我们从“构建、失败、修复”周期转变为具有高质量、安全性和安全性的“设计、构建、交付”周期。本文将讨论: 这些标准如何帮助我们从发现缺陷转变为构建功能更强大的软件。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
软件从台式机迁移到我们接触的几乎所有事物。从智能恒温器到输液泵再到汽车,软件无处不在且在不断发展。物联网(IoT)中的所谓“事物”越来越多地带有更多逻辑。有了它,更大的失败风险。这些设备中的许多设备都被用于医疗和汽车等对安全至关重要的领域,有可能造成人身伤害。
大多数构建设备的公司都正确地将当前的软件开发视为一群疯狂的牛仔和混乱者,但是有希望。可以并且必须将软件视为工程实践。编码标准是良好软件工程实践的组成部分,使我们从“构建、失败、修复”周期转变为具有高质量、安全性和安全性的“设计、构建、交付”周期。
事实证明,这些相同的标准还在网络安全领域提供了双重职责。这篇文章讨论:
软件对现实世界的影响通常是低估的。作为Parasoft的传播者,我不断讨论的主要主题之一是软件开发确实应该是工程设计。
我们经常由软件工程师来称呼软件开发人员,但这不一定是他们今天工作方式的恰当术语。演变为良好的软件工程实践会导致成本下降和质量上升。其中的关键部分是采用标准,尤其是编码标准。
互联汽车、物联网和永久互联设备的时代在这里。软件正在渗透到我们从未想到的产品、设备和其他地方。现在,我们必须认真考虑这些产品中的软件及其后果。
我尝试解释的有趣的事情之一是,构建良好的软件与构建汽车之类的东西不同。如果我要制造高质量的汽车,我必须花更多的材料和更多的时间来制造它。事实证明,在软件中,您无需花费更多的时间来构建高质量的软件。您花更多的钱来构建质量差的软件。
我们必须了解,在软件中,大多数缺陷来自程序员,后者将它们放入产品中。如果我们在开发软件时能够停止引入缺陷,那么我们可以以更低的价格获得更好的软件。
这句话引自Edsger W Dijkstra在1972年的一次演讲,名为“谦虚的程序员”。今天仍然非常重要。
重要的是要意识到质量如何影响软件开发成本。研究人员Capers Jones已经关注了数十年,并每年进行一次软件成本调查。这些数字每年变化不大。数据显示,从需求到编码再到维护的每个阶段,软件的典型成本都会增加。但是,团队对待质量的方式决定了他们的过程是健康的还是“病态的”。
有道理的是,如果我们在编写代码时就发现缺陷,那么成本就相对便宜了——例如,开发人员只需几分钟的时间。如果可以在开发阶段消除85%的缺陷,那么对成本的影响就很大。考虑一下现在著名的Capers Jones图表,它显示了在每个开发阶段修复缺陷的平均成本:
根据对使用真实软件而不是理论模型的真实公司的研究,修复发布后的缺陷大约需要16000美元(可能更多)。如果我们查看周期后期的质量和安全性工作(例如渗透测试),则此处发现的安全性问题处于周期的昂贵末端。通过测试与早期安全审核相比,查找漏洞的成本可能高出15倍。
一种过时且可证明是错误的方法是通过在生命周期的结尾(即发行前)进行测试来提高软件的质量。在制造业中,他们知道这是不可能的,但是出于某些原因,我们认为我们可以测试“进入”软件的质量(和安全性)。
我之所以说软件开发几乎绝不是工程学,是因为当前软件开发具有以下共同特征:
软件编码标准的目标是灌输经过验证的编程实践,以产生安全,可靠,可测试和可维护的代码。通常,这意味着避免使用已知的不安全编码做法或可能导致不可预测行为的代码。这对于像C和C++这样的编程语言至关重要,因为在这些语言中,编写不安全或不安全代码的可能性很高。
但是,我认为行业在使用这些编程标准时已迷失了方向。在过去的十年中,这些工具(例如静态分析工具)已经从检测不安全的潜在问题代码或已知的语言弱点转变为以早期测试的形式寻找缺陷,也称为左移。
尽管寻找缺陷很重要,但是开发完善的软件是一项更具生产力的活动。我们应该做的是建立和执行标准,以避免出现缺陷首先出现的情况,即向左移动更远。
作为支持,请考虑软件工程研究所(SEI)所做的研究,他们毫不奇怪地发现,安全性和可靠性是紧密相连的,并且可以通过发现的质量缺陷的数量和类型来预测软件的安全性。此外,关键缺陷通常是编码错误,可以通过检查和工具(例如静态分析)来避免。
行业标准
这篇文章没有详细介绍每种编码标准,但是在以下行业标准中有大量工作要做。尽管它们的应用可能特定于特定类型,但这些标准已在许多行业中得到采用。以下是一些已建立的安全性编码标准示例。
让我们考虑一下MISRA C,我提到的它不仅是用于汽车应用。但是,该标准自1998年以来一直在使用,并且定义明确。他们每两年进行一次更新。随着C和C++语言的发展,它们围绕着它发展了标准。这是一个非常灵活的标准,其中考虑了不同的严重性级别,并且有成文的策略来处理和记录偏差。
作为可以检测违反编码标准准则的技术(例如静态分析),MISRA的最新版本考虑了哪些准则是可以确定的(可以用工具高精度地检测到),而哪些不是。这使我们想到了采用和强制执行以及静态分析工具在编码标准中的重要性。
静态分析的作用
研究表明,缺陷清除不足是软件质量低下的主要原因。程序员发现自己软件中的缺陷的效率约为35%。在开发周期的后期,在所有设计评审、同行评审、单元测试和功能测试之后,我们希望消除的大多数缺陷约为75%。
如果在预防模式下正确使用静态分析,则可以将缺陷清除率提高到大约85%。但是,当今大多数组织使用静态分析的重点是检测和快速修复。
首先使用静态分析工具来防止已知的不良编程习惯和语言功能,可能会带来进一步的好处。在这里,编码标准将作为指导原则和编程语言子集发挥作用,以防止将诸如缓冲区溢出或缺少初始化之类的常见缺陷写入代码中。
只需一点预防
考虑一个示例,在该示例中,可能使用动态应用程序安全工具(DAST)检测到一个相当复杂的缓冲区溢出错误。运气不好,因为您的测试刚好执行了包含错误的代码路径。一旦被检测和调试,就需要重新测试等等。使用流分析的静态分析可能也发现了此错误,但这取决于应用程序的复杂性。
运行时错误检测非常精确,但是它仅检查您执行的代码行。因此,它仅与测试代码覆盖率一样好。考虑一下编码标准是否首先禁止了导致此错误的代码。
像MISRA C这样的编码标准并没有描述例如如何检测未初始化的内存,而是指导程序员编写首先不会导致这种错误的代码。我相信这更多是一种工程方法:根据众所周知的公认标准进行编程。以土木工程和建筑桥梁为例。
我们不会采取建造桥梁的方法,而是先通过越来越大的卡车来测试它,直到它倒塌,再测量最后一辆成功使用的卡车的重量,然后再次建造以承受新的重量。这种方法还是很愚蠢的,与我们进行软件开发的方法没有什么不同。
一旦软件团队采用编码标准并正确应用了静态分析,他们就可以及早发现错误并加以预防。换句话说,团队正在改变编写代码的方式,这更好,而不是尽早发现缺陷,这是好的!
考虑Heartbleed漏洞。现在有针对此特定漏洞实例的检测器,但有一种方法可以编写代码,从而使Heartbleed永远不会发生。预防是一种更好、更安全的方法。
Dykstra说:“那些想要真正可靠软件的人会发现,他们必须找到避免大多数bug的方法。”拥有可靠的预防方法比修复这些错误的成本要少。
编码标准体现了以其相应语言进行编程的合理的工程原理,并构成了任何预防方法的基础。好的软件的成本小于劣质的软件的成本。如果您今天不使用静态分析,或者仅将其用于早期检测,请查看Parasoft的C和C++,Java,C#和VB.NET静态分析工具,其中包含丰富的检查程序库内置了流行的安全标准。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
通过提供强大的3D CAD数据访问工具并适用于桌面、移动和Web的高级环境3D可视化发动机,HOOPS在提升造船设计和制造流程的效率方面发挥了重要作用。
HOOPS Luminate在汽车行业中的应用具有广泛的潜力和深远的影响。它通过提供高效的3D可视化、虚拟装配与拆解、性能分析、客户定制等功能,帮助汽车制造商在设计、生产和销售过程中提升效率、降低成本并提高产品质量。
在不断发展的软件开发世界中,使工具和框架与最新的平台版本保持同步至关重要,欢迎查阅~
全球航运业对国际贸易至关重要,全球 90% 以上的商品通过海运运输。准确监控和控制这些集装箱的移动对于维持高效的供应链至关重要。手动输入集装箱号码是这一程序的关键部分,它带来了相当大的挑战,例如人为错误和效率低下。
针对 C/C++ 软件开发提供统一、完全集成的测试解决方案。
Parasoft Jtest用于应用软件开发的集成Java测试工具
Parasoft dotTEST降低C#和VB.NET开发风险,有效地实现符合C#和.NET开发的测试工具的要求
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢