现代化的C/C++嵌入式开发的趋势-Parasoft

从20世纪70年代单片机的出现开始,嵌入式已经发展了近50年的历程,今天相信大家对嵌入式系统和嵌入式软件并不陌生,毫不夸张地说几乎所有的电子设备里面都运行着嵌入式软件,无论是小到人们生活中的家用电器、医疗设备,还是大到飞机轮船、军事上的武器装备离开了嵌入式软件几乎不可能工作。嵌入式软件跟其他软件一样也是通过程序员编写代码实现的,从嵌入式软件诞生之日开始,C和C++语言就作为重要的嵌入式编程语言占据绝对主导地位。

随着科学技术的不断进步和用户应用需求的不断升级,为了适应这些新的变化,C/C++ 语言本身也经历了多次标准化的迭代更新。C语言从传统的ANSI-C 标准,也就是后来被标准化的 C89 标准。在1999年发布的C99和2011年发布的 C11 标准在此之上,引入了许多新的特性,也解决了许多问题。因此,随着标准的发布,我们的 C 语言规范和用法也要发生相应的变化。C++ 同样也发布了 C++99,C++11,C++14 ,C++17 以及目前最新的C++20规范。

当今在信息技术带来的智能化、网联化发展的大趋势下,嵌入式硬件(微处理器和外围设备)更新换代越来越快,系统算力和存储能力不断提升,软件的需求越来越复杂,同时对软件质量要求越来越严格。这些都必然带来了嵌入式软件开发理论和实践的变革。这是我们今天话题谈论的重点。嵌入式开发相较于其他高级语言开发,在迎接新的开发技术和理论方面还是比较谨慎和有一定的滞后性。但是我们也可以看到从传统的嵌入式开发到现代化的嵌入式开发的一些趋势。

下面我们展开几点目前可以明确看到的变化。

1.从传统的瀑布式开发转向DevOps的方法论实践

软件开发一直以来都是一项复杂的工作,自从有人将其与项目管理相结合,软件工程应运而生。如今时过境迁,软件工程领域的新方法、新工具层出不穷,当下最为业界关注的方法论,莫过于DevOps。

首先介绍一下什么是传统的瀑布式开发,瀑布式开发是早期被广泛采用的软件开发模型,要求有明确的需求,按照需求一步步做好规划,每一阶段工作的完成是下一阶段工作开始的前提,每一阶段都要进行严格的评审,保证各阶段的工作做得足够好时才允许进入下一阶段,它适用于需求明确的项目。最大的风险是,当产品研发完成后, 到了产品测试阶段如果发现了问题 ,或者发现其无法满足市场需求, 那么就需要重新开发,甚至需要重新规划产品。而什么又是DevOps呢?

DevOps是一种软件开发实践,它重视“软件开发人员(Dev)”和“运维技术人员(Ops)”之间沟通合作的文化,将人员、流程和技术结合在一起,以交付持续的价值。该方法是软件开发领域最近十年来兴起且当下普遍成熟运用的方法论。它和传统的瀑布模型、螺旋模型等理念不同,其核心是“敏捷”,结果是自动化。DevOps是敏捷开发的延伸,通过“软件交付”和“架构变更”的流程自动化,使构建、测试、发布软件能够更快捷、频繁并且可靠。

从瀑布式开发到敏捷开发再到DevOps,各个阶段的切换速度越来越快,瀑布式开发和敏捷开发的运维部署工作都是放到最后,而 DevOps 结合敏捷开发思想,将部署工作也敏捷起来。DevOps和其他现代CI/CD实践正迅速被企业软件开发所采用,并正在进入嵌入式世界。市场对越来越复杂的系统和更快的开发周期的需求意味着采用更高效的开发方法正迅速成为嵌入式系统公司的当务之急。即使你有无限的预算,也没有足够的合格工程师来完成这项工作。使用传统的嵌入式开发方法无法获得通过采用更高效的方法所能获得的收益。DevOps所孕育的产物远不止此,除了容器化技术之外,还有测试、包管理、评估与分析工具等,全链整合开发与运维全职能,贯穿了CI/CD全过程,持续拉升着软件工程行业的敏捷与自动化能力水平。

2.在开发早期就开始进行测试

典型的瀑布式软件开发项目一般是在产品发布到生产环境之前进行测试。这意味着当不可避免地发现缺陷或可用性问题时,产品发布将被推迟,直到这些问题得到修复为止。在这种模式中,测试成为严重阻碍项目按时交付的瓶颈。几乎无所不在的敏捷实践要求在软件开发生命周期(SDLC)中进行更快、更早的测试。尽早将开发和测试工作结合起来通常称作“左移”。左移是在软件交付过程中尽早发现和防止缺陷的一种实践方法,目的是尽量在软件开发生命周期中尽早将测试任务左移,以提高产品质量。左移测试意味着在软件开发过程的早期阶段进行测试。早期广泛使用的测试手段包括需求评审、代码审查、代码静态分析、单元测试、建立需求双向追溯关系等。

3.基于持续集成和持续交付的自动化测试

持续集成和持续交付(CI/CD)推动了自动化测试的落地,改进和提高了开发人员发布软件的质量和节奏。为了发布软件,必须满足一些业务需求。在某些情况下,这些业务需求包括一组快速的构建和测试活动,而其他版本可能需要更多涉及的需求。无论复杂程度如何,这些业务需求都可以概念化为一组串行和并行执行的步骤。在持续集成(CI)/持续交付(CD)的术语中,每个步骤称为一个阶段,有序阶段的集合称为一个管道。CI/CD 管道是为了交付新版本的软件而必须执行的一系列步骤。CI/CD 管道加入了监控和自动化来改进应用开发过程,尤其是在集成和测试阶段以及交付和部署过程中。尽管可以手动执行 CI/CD 管道的每个步骤,但 CI/CD 管道的真正价值在于自动化。

4.不断增长的功能安全合规性要求

大家应该对功能安全这个术语不陌生吧,这是一个目前嵌入式领域广泛认可和遵循的标准,简单地说,功能安全是“保护用户不受技术影响”。它还保护技术不受用户的影响。更严格地说,功能安全的定义是:“通过正确实施一个或多个自动保护功能(通常称为安全功能),使人们免受不可接受的伤害或健康损害风险的系统。安全系统由一个或多个安全功能组成。”功能安全系统的一个简单示例是,家用咖啡壶带有传感器,可以检测咖啡温度或烧瓶中的咖啡量。如果传感器检测到温度超过阈值,它会关闭加热元件,或者如果体积大于预期,它会停止渗滤过程。功能安全的核心是包括用户免受伤害,复杂的技术为我们的生活和工作带来便捷的同时,我们也需要它们可以安全地被使用。功能安全在所有类型的产品中,无论是工业产品还是消费品,都变得越来越重要。在工业设备中,功能安全对安全操作至关重要。功能安全系统可以为操作员提供更好的操作指标和对使用中设备的控制。

从商业角度来看,功能安全使制造商能够在定义良好的功能安全环境中更接近其利润。这使他们在提高效率、减少停机时间以及由此带来的成本节约方面受益匪浅。嵌入式软件越来越多地用于安全关键产品开发,如汽车、飞机和医疗设备。软件需要安全可靠。这就是为什么在多个行业中都有针对嵌入式系统开发人员的安全标准。在功能安全标准里包含了多种软件开发流程管理和测试验证的要求,这跟我们上面讲到的基于CI/CD的自动化测试流程相辅相成。

本期作者:Jet Zhou

Parasoft中国技术总监

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值