基于敏捷和模型的工程软件开发设计

Roger Aarenstrup和Gaurav Tomar, MathWorks


大多数团队开发用于工程应用程序的软件今天认识到传统(瀑布)方法的缺点。这些包括在项目的后期阶段发现缺陷和设计问题,无法适应要求的变化以及提供不符合客户需求的系统的风险。

为了克服这些缺点,许多团队采用了一种方法,将敏捷方法与基于模型的设计相结合。

对基于模型的设计和敏捷方法的检查表明,基于模型的设计补充,甚至可以实现工程应用程序。像敏捷一样,基于模型的设计起源于支持快速迭代。金宝app它还符合Systeger Engineering挑战,仅限敏捷:

  • 如何在没有设备的情况下执行早期测试
  • 如何管理工程系统复杂性
  • 如何减轻在昂贵的硬件上测试未经证实的软件的风险
  • 如何满足功能安全和其他标准的要求,包括DO-178B / C和ISO 26262

本文介绍了基于模型的设计如何支持敏捷开发的核心值,具有自适应巡航控制示例,将基于模型的设计金宝app与敏捷方法和Scrum框架相结合。

基于敏捷和模型的设计:基础知识

敏捷软件开发方法建立在核心价值观和原则上敏捷宣言,发表于2001年。今天,敏捷发展最广泛使用的框架之一是Scrum。在Scrum中,开发在一系列循环中进行冲刺,其中该团队在项目积压中的一个功能上工作,以获得时间邮箱的时间(通常在一到两周和一个月之间)。在每个Sprint中,团队开发,测试,集成和文档工作软件(图1)。

图1.使用scrum框架的敏捷开发。

基于模型的设计是一种以模型为中心的系统开发方法。基于模型的设计而不是依赖于物理原型和文本规范,在整个开发中使用模型。该模型包括与系统行为算法,控制逻辑,物理组件和环境相关的所有组件。开发模型(详细阐述)后,它可以用于生成代码(C / C ++,HDL或结构化文本),报告和其他类型的文档。基于模型的设计的核心组件是系统级和组件级设计和仿真,自动代码生成,以及连续测试和验证。

映射敏捷的核心值,以模型为基础的设计

敏捷宣言定义了软件开发的四个核心价值:

  • 个人和交互高于过程和工具
  • 全面文件的工作软件
  • 客户合作高于合同谈判
  • 响应改变,而不是遵循计划

宣言作者指出“超过”并不意味着“不”。他们提出的是重点的转变:“虽然右边物品中有价值,但我们将左边的物品重视。”

让我们看看这些敏捷值如何映射到基于模型的设计。

专注于个人和互动

基于模型的设计的过程和工具 - 特别是建模和模拟 - 培养个人和团队之间的富有成效的互动。该模型可以直接在Simulink中共享金宝app®,在报告或作为网页中,使所有利益相关者能够将其用作公共参考点和单一的真理来源。仿真结果清晰可见,可以促进设计决策,scrum计划和与利益相关者的讨论。

专注于客户合作

客户协作是敏捷方法的核心。每个sprint以计划会议开始,以评审会议结束,在评审会议中,客户经常被邀请提供意见。建模和仿真不仅支持高效的客户协作,而且还支持跨团队、领域和规程的协金宝app作。来自硬件设计、系统设计以及功能和组件开发的工程师有一种共同的语言,他们可以专注于一起工作,而不是担心工具。

专注于工作软件

使用敏捷的团队的基于模型的设计的主要优点之一是能够从最早的冲刺中开发系统的工作版本,即使嵌入式目标,工厂,传感器或其他硬件不可用。通过金宝app模拟验证的Simulink模型可以用作工作软件整个项目。模型作为开发系统的可执行规范。在早期冲刺中,当硬件可能不可用时,仿真结果可以与客户共享代替硬件测试结果,并用于衡量进度,征求购买或计划下一冲刺。模型还提供了一种清晰方便的方法来衡量进度。在阐述模型时,它可以用于为循环(SIL),处理器in-Loop(PIL)和硬件循环(HIL)测试的代码生成代码至于实时原型和生产系统。

该模型还可作为综合文档的基础。在基于模型的设计中,文档是设计过程的输出,而不是离散任务,并且可以从按需模型生成文档和报告。

专注于回应变革

瀑布式开发的一个主要障碍是不能对不断发展的需求和条件作出适当的响应。敏捷开发和基于模型的设计解决了这一缺陷,并使团队能够更有效地响应更改。对于工程应用程序中的任何重大更改,使用基于模型的设计的工程师都可以修改模型,然后简单地重新生成代码。在实现任何更改之前,团队可以运行假设分析,以确定适应特定更改请求的最佳方法。在模型中进行更改之后,工程师可以运行回归测试的模拟,以确保更改不会导致系统中的意外行为。当模型与需求相关联时,团队可以执行影响分析,以理解对模型一部分的更改将如何影响其他部分。

用例:将敏捷方法与基于模型的设计相结合开发自适应巡航控制器

在这个例子中,一个汽车工程团队正在开发一个具有传感器融合的自适应巡航控制系统的软件。该系统融合来自机载雷达和视觉传感器的输入数据,以识别最重要的目标及其与自我车辆的距离,以适应速度和保持安全距离。

在这个项目上,一组工程师正在开发控制算法,而另一组开发了驾驶场景和合成传感器数据。该合成数据将使工程师能够在实际传感器数据可用之前开发和测试算法。使用合成数据的早期模拟可以为车载传感器的类型,数量和定位方式通知设计决策。

在第一个Sprint中,每个子团队(或一组工程师)模拟其各自的子系统,使用共享的系统级Simulink模型来协调其工作(图2)。金宝app即使在这个早期阶段,它们也可以运行模拟,以了解控制器在各种条件下的行为。它们调试控制器,识别要优化的参数,并在编写或生成单行代码之前从系统的工作版本可视化关键性能指标。

图2。金宝app基于传感器融合的自适应巡航控制系统的Simulink模型。

在与客户朝第一个Sprint结束的审核会面期间,它们共享模型和仿真结果(图3)。该模型和结果提供了工作软件的具体表示 - 例如,通过说明在另一辆车转移到其车道后的车辆的速度如何降低。

图3.自适应巡航控制模型的仿真结果。

在随后的冲刺阶段,团队会根据客户的反馈来改进或增强模型——例如,通过调整安全的跟随距离或改变车辆加速或减速的速度——并优化它以生成代码并部署到ECU上。生成的代码可以原样使用,也可以与遗留代码集成,作为更大系统的一部分。与Jenkins™的持续集成(CI)用于持续检查生成的代码和手动代码的集成,在模型上运行测试,检查是否符合建模标准,然后在生成的代码上执行测试。所有这些活动的结果都会被自动报告,以跟踪进度,并且对于不使用开发工具的涉众来说也是如此。

在后来的冲刺中,团队纳入了更严格的验证和验证活动,包括SIL,PIL或HIL测试,以确保设计满足要求。他们还检查模型和代码是否符合既定的标准和准则,使用静态分析和正式方法来证明缺乏关键的运行时误差,并在准备标准认证时生成报告和其他工件。

随着项目的进展,客户的需求会发生变化。例如,客户可能会要求模型预测控制,而不是经典的控制算法,因为先进的MPC控制器可以让车辆对环境中其他车辆更激进的机动做出反应。由于在这个项目中使用了一个系统模型,算法团队可以很容易地用一个新开发的模型预测控制器替换原来的控制算法,而保持模型的其余部分不变。团队重新运行模拟并与客户共享结果。然后就可以做出明智的决定,决定是继续设计更改还是恢复到以前的方法。

该团队在敏捷开发工作流程中使用了基于模型的设计,并在涉及硬件之前提供的工作软件。建模和仿真使团队根据客户反馈不断完善设计,甚至可以在项目后期改变更大的要求。

发布2018年