没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|实施案例|编辑:郑恭琳|2020-07-22 10:58:29.833|阅读 358 次
概述:在软件开发中,我们极不情愿将 Bug 呈现到客户面前,但当问题真正产生时,我们需要去反思为什么如此简单的 for 循环所导致的问题造成这么大影响。对于文中某跨国网通设备大厂所出现的 Bug,只需要通过 C++test 一条简单代码规范, 即可防范于未然。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
相关链接:
下面的描述来自 Parasoft 的客户某跨国网通设备大厂的邮件内容,客户在邮件中描述了一段存在 Bug 的代码。以下是邮件内容(注:为防止泄漏客户代码信息,对代码做过轻微改动):
“
As talked last night, we have solved one big code bug; here I list it here for your information.
This code cause system running in an endless loop, that cause system reboot due to watch dog timer timeout.
void ETN_xdd_algo::stop_running(T_global_TCID tcid)
{
if ( pinstances == NULL) { return;
}
LE_simple_list
for (; it != pinstances->end(); ) { if (tcid == (*it)->get_tcid()) {
delete *it; break;
}
}
return;
}
”
对上述错误代码做简单分析,你将很容易发现问题所在,原因简单甚至弱智,因为 for 循环的循环因子 it 没有进行自加运算。这导致只要进入该 for 循环,必将陷入死循环。
以上是从代码角度进行分析,得出死循环结论。 而当代码在实际项目中运行时(上述错误代码的项目,实际运行在客户所生产的电信设备上),所产生的真实后果则更为严重。
客户在邮件中有简单提及:
“solved one big code bug”
“This code cause system running in an endless loop, that cause system reboot due to watch dog timer timeout.”
而在我们现场支持客户端过程中,客户曾说明如下:
“由于存在 Bug 的设备在电信运营商的系统上,经常无端死机,导致他们的客户怨声载道。责令他们必须在规定期限内,找到问题根源并修复;”
好了,我们再简单回顾一下整个问题发生的流程,以便我们能更好的重现问题:
作为电信设备供应商的某跨国网通设备大厂,所销售的设备正运行在运营商系统上,而运营商发现该设备经常无端死机,于是要求某跨国网通设备大厂必须在短期内找到问题根源并修复。由于不能现场调试,某跨国网通设备大厂的开发人员只能在本地反复诊断,反复模拟,希望重现死机的现象,经过长达一周时间的模拟,他们终于发现问题的根源正是上述那段简单的 for 循环错误。
某跨国网通设备大厂是国际电信行业的佼佼者,是数十亿美元规模的电信技术领先厂商, 拥有数个重要的全球研发中心,拥有技术先进、制造能力达到世界一流水平的生产制造平台, 销售服务网络遍及全国和海外 50 多个国家。
上述错误的代码正来自某跨国网通设备大厂核心设备的软件中。述及该项目的历史,也足让你瞠目结舌。总项目全部基础性代码超过 1000 万行,最早的代码可追踪到 90 年代。
客户所测项目隶属总项目重要模块之一,代码量超过 100 万行。
更为重要的影响在于运营商对于某跨国网通设备大厂产品质量的认定,这样的问题对于任何客户而言都是不希望看到的,因为这会影响到实际产品的运行,进而消费者对于产品的使用。
在软件开发中,我们极不情愿将 Bug 呈现到客户面前,但当问题真正产生时,我们需要去反思为什么如此简单的 for 循环所导致的问题造成这么大影响。
……
以上一些问题是保障软件产品高质量的一些因素,对于这些,C++test 的静态规则检查正好完美的满足这些需求:
对于上文中某跨国网通设备大厂所出现的 Bug,只需要通过 C++test 一条简单代码规范, 即可防范于未然。
以下规则来自 C++test 静态编码规则:
“Null initialize or increment expressions in for loops will not be used; a while loop will be used instead [CODSTA-49-3]”
从某跨国网通设备大厂反馈的情况,他们非常信赖 C++test 静态分析,已经将 C++test 的静态分析作为测试的标准流程,每日进行测试。因为通过 C++test 的代码规范,只需数分钟即可预防该问题发生。而该问题从发现到修复前后花费 2 周时间,更重要的是影响客户对于他们产品的信心。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@dpuzeg.cn
随着工业领域数字化进程的持续加快,Web 技术在实现实时监控、数据可视化与控制系统等方面正扮演着越来越核心的角色。来自智利的科技企业 Wise Data Global 借 DHTMLX Suite JavaScript UI 控件库,为遥测、远程监控与工业物联网(IIoT)场景提供了稳定高效的 Web 端平台支持。
在当今教育数字化加速发展的背景下,高校对在线协作办公工具的需求日益增长。作为瑞士领先的高等学府之一,苏黎世大学(University of Zurich)在其学习管理平台 OLAT 中成功集成了 ONLYOFFICE Docs,极大地提升了教学与学习过程中的文档协作效率与用户体验。
在全球范围内,越来越多的企业开始重视项目与业务流程的数字化管理。波兰创新型软件公司 Enovatio,便通过其旗舰产品 Enovatio Portal,为广大中大型组织提供了一体化的项目与流程管理解决方案。该平台集成了 DHTMLX Gantt 和 DHTMLX Diagram 两款专业前端控件,实现了高效的项目进度管控与流程可视化能力。
ClearPoint 的团队早期采用了开源解决方案构建甘特图组件,但随着用户需求不断升级,系统稳定性、交互灵活性和功能完备性成为制约发展的瓶颈。在深入对比多家前端甘特图组件后,ClearPoint 最终选择 DHTMLX Gantt。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@dpuzeg.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢