首页 > 其他分享 >DevOps:定义汽车软件新开发模式

DevOps:定义汽车软件新开发模式

时间:2022-09-28 10:01:42浏览次数:46  
标签:迭代 软件开发 DevOps 模式 开发 软件 定义

当前,全球汽车产业正在经历从传统工业向数字化转型的大变革,智能化、数字化、信息化正在成为汽车电子行业转型发展的必由之路。“软件定义汽车”(Software Defined Vehicles,SDV)概念的提出,说明软件在汽车产品中承担的角色越来越重要。随着汽车软件的量级和复杂度不断提高,汽车厂商对嵌入式系统开发需求越来越高。汽车的系统开发以模型驱动开发为主(Model-based systems engineering,MBSE),快速迭代、持续集成、可靠性代码自动生成、测试自动化等改善开发流程的需求逐渐受到重视。 

DevOps结合了软件开发(Develoment)和IT运营(Operations),旨在缩短系统开发生命周期,并提供更高质量的连续交付。本文将从软件开发模式的类别入手,结合当下汽车软件开发过程中面临的各类问题,通过分析DevOps和CI/CD的整合工作流在软件开发中的优势,探索汽车软件开发新模式。

 

01.软件开发模式

软件开发是一项包括需求定义与分析、设计、编程、测试、交付和维护的系统工程。目前常见的软件开发模式有以下四种:

瀑布模式(Waterfall model):将软件开发过程分解成线性顺序的不同阶段,每个阶段依赖于前一个阶段的交付成果。瀑布模式的软件开发过程灵活性较小,因其开发过程基本单向进行。其最大风险在于,该模式只有在产品研发完成后才能确定结果与预期是否相符,如有差错,工程师就需要重新开发,甚至重新设计规划。

▲瀑布模式

迭代增量式开发(Iterative and incremental development):整个开发流程被划分和整合为一系列固定周期的短小项目,即一系列的迭代。每一次迭代都包含需求分析、设计、实现与测试。此模式下,开发工作可以在需求被完整确定之前启动,并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作,再通过客户的反馈来细化需求,开始新一轮的迭代。迭代增量式开发弥补了传统瀑布式开发模式的一些弱点,提高了效率和开发成功率。

▲迭代增量式开发模式

 

螺旋模式(Spiral Model):是一种风险驱动的软件开发模式。基于给定项目的独特风险模式,螺旋模式指导开发团队往往采用不止一个的流程模型,如增量式、瀑布式或原型式。它提倡适应性规划、演化开发、尽早交付和持续改进。

 

▲螺旋模式

 

敏捷软件开发(Agile software development):包括需求发现和解决方案改进。该模式通过自组织和跨职能团队与用户协作,制定适应性计划,进行渐进开发、早期交付、持续改进,灵活应对需求、能力的变化以及对需要解决问题的理解的变化。这是一种以用户需求进化为核心的迭代、循序渐进的开发方法。工程师先将用户最关注的软件原型做出来进行交付,根据用户在实际场景中反馈的问题,快速修改弥补需求中的不足。上述过程不断迭代,直至用户满意。

▲敏捷软件开发

 

02.DevOps&CI/CD

随着汽车软件复杂度和代码数量的不断提高,软件系统开发周期越来越快,传统的开发方式需要耗费大量人力和时间成本,无法紧跟市场越来越快的节奏。这就促使开发团队采用优于传统开发模式、更敏捷的方式——DevOps。 

DevOps是一组过程、方法和系统的统称,集文化理念、实践、工具于一身,重视开发(Dev)和运维(Ops)和质量(QA)部门之间的沟通合作。 

与传统软件开发模式系相比,DevOps打破了开发和运维之间的壁垒,通过自动化“软件交付”和“架构变更”的流程,使得软件的构建、测试和发布能更加快捷、频繁和可靠,从而帮助团队更快地发展和改进产品、服务客户、高效参与市场竞争。

 

▲DevOps

 在汽车软件领域,敏捷开发为嵌入式DevOps提供了合适的路径,以便团队更快发布新版软件代码。随着软件快速迭代,DevOps方法的迭代也在快速演进。在每次迭代中采用卸载/重新安装的方式已变得不切实际,CI(Continuous Integration,持续集成)/CD(Continuous Deployment,持续部署)方法可以使软件系统在不停止运行的情况下进行迭代。

DevOps的核心是持续集成(点击此处查看“持续集成”相关文章)。团队只需通过每天一次或多次的集成,进行嵌入式软件的自动化构建和验证,就可实现持续集成,尽早发现集成错误。

 

 

03.DevOps在汽车嵌入式软件领域推行的解决方案

面临的挑战

目前,阻碍DevOps在汽车嵌入式领域推行的挑战主要有两方面:

1)车载软件大多数为嵌入式软件,难以脱离真实目标系统单独运行。然而绝大部分汽车厂商采用“研发驱动测试”的模式,软件测试部门没有独立的硬件目标系统用于软件测试;

2)在自动化测试实践中,硬件难以支持软件进行不同环境的设置。要想达成完全测试自动化,工程师需要对目标系统进行定制。

 

通用解决方案

一般来说,实现持续集成需要满足以下三点:

1)充分借鉴软件测试经验,引入优秀的开源工具,发挥开源工具灵活、可配置强的特点;

2)整合企业已有的软件测试工具,使测试技术保持集成性;

3)结合全数字仿真平台部署仿真环境,保证测试过程的稳定可靠。

▲DevOps&持续集成

 

SkyEye天目全数字实时仿真软件

SkyEye天目全数字实时仿真软件,是一款国产的基于可视化建模的硬件行为级仿真平台,支持国内外主流架构、处理器和多机同步仿真,具备自动测试框架与灵活的可定制性,在汽车、防务、航空航天、电子、船舶等各种嵌入式领域应用广泛。

▲SkyEye界面图

 

SkyEye具有硬件平台所不具备的灵活性。通过对模型和平台的定制,客户可以得到跟自己的目标系统完全一致的仿真平台。利用SkyEye,软件开发团队可以开展并发式的功能测试和快速回归测试,加快问题定位和排查故障的效率。SkyEye为汽车嵌入式软件的设计、开发、集成与测试,直至后续部署、维护的全生命周期提供了一个功能强大、高效、易用的平台。

 

原文链接:https://mp.weixin.qq.com/s/wPbnh5NVmUt_fFTkbYHFaw

 

标签:迭代,软件开发,DevOps,模式,开发,软件,定义
From: https://www.cnblogs.com/zoeking001/p/16736984.html

相关文章

  • WPF 自定义可拖动标题栏
    要注意,拖拽的地方,需要加背景色,否则DrageMove 将无效MainWindows.xaml<Windowx:Class="Report.MainWindow"xmlns="http://schemas.microsoft.com......
  • elelment中el-cascader怎样自定义显示的lable 与value
    1、后端返回的数据类型  2、页面代码  3、重点在于 :props="{value:'id',label:'className',children:'childNode'}"  ......
  • 数据处理的软件构造
                        ......
  • CAD绘图软件:BricsCAD
    BricsCAD是一款专业的CAD设计软件,这款软件在AEC、GIS、土木工程、电力和机械CAD市场向客户提供合理的价格和领先的支援。BricsCAD平台是针对特定行业开发具有成本效益的......
  • 软件测试基础
    软件是控制计算机硬件工作的工具  软件产生过程:1.需求产生(需求方、产品经理)2.需求文档(产品经理)3.设计效果图(UI设计师)4.产品开发(研发人员)5.产品测试(测试人员)6.......
  • 软件测试
    学科介绍:软件测试是互联网技术中一门重要学科,是软件生命周期中不可或缺的环节,担负着把控、监督软件的质量的重任。2018年测试工程师缺口达30万,其中大中型城市人才需求突......
  • 软件工程
    (此为学校课程的作业,如有错谬及不妥之处烦请指正,提前感谢)软件工程,顾名思义,似乎就是用软件实现某一工程,或者是用工程化方法构建及维护软件。前者是一个来自数院的同学对软......
  • VueJs 自定义过滤器使用总结
    在这个教程中,我们将会通过几个例子,了解和学习VueJs的过滤器。我们参考了一些比较完善的过滤器,比如orderBy和filterBy。而且我们可以链式调用过滤器,一个接一个过滤。因此,我......
  • 深入浅出DevOps:Jenkins基于Harbor部署
    ......
  • GB/T28181-2016 SDP定义和音视频传输模式解读
     SDP定义联网系统中SIP消息体中携带的SDP内容应符合IETFRFC2327的相关要求。应有如下字段:Sessiondescription:v=(protocolversion)o=(owner/creatorandsessioni......