扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
当前,全球汽车产业正在经历从传统工业向数字化转型的大变革,智能化、数字化、信息化正在成为汽车电子行业转型发展的必由之路。“软件定义汽车”(Software Defined Vehicles,SDV)概念的提出,说明软件在汽车产品中承担的角色越来越重要。随着汽车软件的量级和复杂度不断提高,汽车厂商对嵌入式系统开发需求越来越高。汽车的系统开发以模型驱动开发为主(Model-based systems engineering,MBSE),快速迭代、持续集成、可靠性代码自动生成、测试自动化等改善开发流程的需求逐渐受到重视。
创新互联是一家以重庆网站建设、网页设计、品牌设计、软件运维、seo优化、小程序App开发等移动开发为一体互联网公司。已累计为不锈钢雕塑等众行业中小客户提供优质的互联网建站和软件开发服务。
DevOps结合了软件开发(Develoment)和IT运营(Operations),旨在缩短系统开发生命周期,并提供更高质量的连续交付。本文将从软件开发模式的类别入手,结合当下汽车软件开发过程中面临的各类问题,通过分析DevOps和CI/CD的整合工作流在软件开发中的优势,探索汽车软件开发新模式。
01.软件开发模式
软件开发是一项包括需求定义与分析、设计、编程、测试、交付和维护的系统工程。目前常见的软件开发模式有以下四种:
瀑布模式(Waterfall model):将软件开发过程分解成线性顺序的不同阶段,每个阶段依赖于前一个阶段的交付成果。瀑布模式的软件开发过程灵活性较小,因其开发过程基本单向进行。其最大风险在于,该模式只有在产品研发完成后才能确定结果与预期是否相符,如有差错,工程师就需要重新开发,甚至重新设计规划。
▲瀑布模式
迭代增量式开发(Iterative and incremental development):整个开发流程被划分和整合为一系列固定周期的短小项目,即一系列的迭代。每一次迭代都包含需求分析、设计、实现与测试。此模式下,开发工作可以在需求被完整确定之前启动,并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作,再通过客户的反馈来细化需求,开始新一轮的迭代。迭代增量式开发弥补了传统瀑布式开发模式的一些弱点,提高了效率和开发成功率。
▲迭代增量式开发模式
螺旋模式(SpiralModel):是一种风险驱动的软件开发模式。基于给定项目的独特风险模式,螺旋模式指导开发团队往往采用不止一个的流程模型,如增量式、瀑布式或原型式。它提倡适应性规划、演化开发、尽早交付和持续改进。
▲螺旋模式
敏捷软件开发(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
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流