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

作者罗杰·阿伦斯特拉普和高拉夫·托马,MathWorks出版社

目前,大多数开发工程应用软件的团队都认识到传统(瀑布式)方法的缺点。这些包括在项目的后期发现缺陷和设计问题,不能适应需求的变化,以及交付不满足客户需求的系统的风险。

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

对基于模型的设计和敏捷方法的研究表明,基于模型的设计是对工程应用的补充,甚至使敏捷成为可能。与敏捷一样,基于模型的设计最初也是为了支持快速迭代。万博1manbetx它还满足了敏捷无法单独解决的系统工程挑战:

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

本文通过一个自适应巡航控制示例,说明了基于模型的设计如何支持敏捷开发的核心价值,该示例将基万博1manbetx于模型的设计与敏捷方法和Scrum框架相结合。

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

敏捷软件开发方法是建立在中列出的核心价值观和原则敏捷宣言, 2001年出版。如今,敏捷开发中使用最广泛的框架之一就是Scrum。在Scrum中,开发是在一系列循环中进行的冲刺,其中团队处理项目待办事项列表中的特性子集(通常在一到两个星期到一个月之间)。在每个sprint中,团队开发、测试、集成和记录工作软件(图1)。

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

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

映射敏捷的核心价值观,以基于模型的设计

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

  • 个人和交互超过过程和工具
  • 工作软件胜过全面的文档
  • 客户协作重于合同谈判
  • 响应变化而不是遵循计划

宣言的作者指出,“结束”并不意味着“不”。他们的建议是转移重点:“虽然右边的项目有价值,但我们更看重左边的项目。”

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

关注个体和互动

基于模型的设计,特别是造型,个人和团队之间的模拟福斯特生产相互作用的过程和工具。该模型可以直接在Simulink共享万博1manbetx®,或作为一个网页,使所有利益相关者使用它作为一个共同的参考点和单一的真理来源。模拟结果清晰可见,可以促进设计决策、Scrum计划和与涉众的讨论。

关注客户协作

客户协作是敏捷方法的核心。每个sprint都以一个计划会议开始,以一个评审会议结束,在评审会议上,客户经常被邀请提供输入。建模和仿真不仅支持高效的客户协作,而且支持跨团队、领域和规程的协作万博1manbetx。来自硬件设计、系统设计、功能和组件开发的工程师有一个共同的语言,他们可以集中精力一起工作,而不是担心工具。

专注于工作软件

一个基于模型的设计中使用敏捷团队的主要优点是从他们的最早的冲刺开发系统的工作版本,即使嵌入式目标,植物,传感器或其它硬件不可用的能力。Si万博1manbetxmulink模型,经由模拟可以作为验证工作软件整个项目。模型充当系统的正在开发的可执行的规范。在早期的短跑,当硬件可以是不可用的,模拟结果可以与代替硬件测试结果客户共享,并用于计进步,广泛征求买入,或计划在未来冲刺。模型还提供了衡量进展的明确和方便的方式。作为模型阐述,它可以被用来生成用于软件合环(SIL),处理器在环(PIL),和硬件在环(HIL)测试的代码,以及作为实时原型和生产系统。

该模型也可作为综合文档的基础。在基于模型的设计,文档是设计过程的输出,而不是一个单独的任务,并可以按需从模型生成的文档和报告。

专注于应对变化

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

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

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

在这个项目中,一组工程师开发控制算法,另一组开发驾驶场景和合成传感器数据。这些合成数据将使工程师能够在实际传感器数据可用之前很好地开发和测试算法。早期使用合成数据的模拟可以为设计决策提供信息,例如车内传感器的类型、数量和位置。

在第一个冲刺,每个子组(或工程师组)模型其相应的子系统,使用共享的系统级仿真模型来协调它们的工作(图2)。万博1manbetx即使在这个早期阶段,他们可以运行的模拟,看看控制器的各种条件下的表现。他们调试器,识别参数进行优化,编写或生成的一行代码之前从系统所有的工作版本可视化关键性能指标。

图2。万博1manbetx自适应巡航控制系统的Simulink模型与传感器融合。

审查会议期间与客户第一sprint快结束的时候,他们共享模型和仿真结果(图3)。该模型和结果提供一个具体的工作软件的例子中,通过举例说明如何另一辆车后车辆的速度减少转移到车道上。

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

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

在以后的冲刺,球队纳入更严格的验证和确认活动,包括SIL,PIL,或HIL测试,以确保设计符合要求。他们还检查模型和代码符合既定标准和准则,利用静态分析和形式化方法来证明不存在关键的运行时错误,并生成报告等文物为标准的认证准备。

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

该团队使用基于模型的设计自己的敏捷开发工作流程中,并提供参与硬件之前,以及工作的软件。建模和仿真使团队不断提高基于客户反馈的设计,甚至适应显著需求变更在项目后期。

发布时间2018