账号:
密码:
CTIMES / 文章 /   
工程软体开发:敏捷与模型化基础设计
 

【作者: Roger Aarenstrup、Gaurav Tomar】2018年09月03日 星期一

浏览人次:【670】
  


现今大部分开发工程应用软体的团队逐渐意识到传统瀑布型(waterfall)软体开发方法存在的一些缺陷。其中包含在计画开发周期较後面的阶段才能发现瑕疵与设计问题、无法对设计要求进行变更、可能有做出一个并不符合客户需求的系统的风险等等。


为了克服这些缺陷,许多团队已经开始采用结合了敏捷方法(agile methods)与模型化基础设计(Model-Based Design)的开发途径。


模型化基础设计与灵活方法的检验结果显示模型化基础设计可以补足敏捷方法,并甚至在工程应用启发了敏捷方法。如同敏捷方法,模型化基础设计的出发点在於支援快速叠代。它也能够因应不能仅依赖敏捷方法来处理的系统工程挑战:


* 如何在不需连结到设备的情况下执行早期测试


* 如何管理工程系统的复杂性


* 如何减轻在昂贵的硬体上测试未经验证软体的风险


* 如何满足功能安全要求以及其他标准,例如DO-178B/C和ISO 26262


本文将透过一个模型化基础设计结合了敏捷方法与Scrum架构的主动式定速巡航控制(adaptive cruise control)的范例,说明模型化基础设计如何支援敏捷开发的核心价值。


=====================================================================


敏捷与模型化基础设计:基本资讯

敏捷软体开发方法(Agile software development methods)


建立在2001年发布的敏捷宣言(Agile Manifesto)中所阐述的的核心价值与原则。Scrum为现在最为广泛使用的敏捷开发架构之一。在Scrum,开发会经过一系列被称为sprints的循环,团队成员在这里面处理专案计画一段时间限制内(通常是一到两周,或者一个月)所累积(backlog)下来的功能子集。团队在每一个sprint进行软体的开发、测试、整合、建立文件(图1)。



图1 : 利用Scrum架构进行敏捷开发。
图1 : 利用Scrum架构进行敏捷开发。

模型化基础设计(Model-Based Design)


一个以模型为中心的系统开发方法。相较於传统仰赖实体原型与文本规格来进行沟通,模型化基础设计藉由模型来贯穿整个开发流程。模型包含了所有与系统行为相关的元件演算法、控制逻辑、物理元件、以及环境。当模型开发(加工)完成,它可以用来产生程式码(C/C++、HDL、或结构化文本)、报告、及其他类型的文件。模型化基础设计的核心元件为系统层级和元件层级的设计与模拟、自动产生程式码、持续的测试与验证。


=====================================================================


将敏捷开发的核心价值映射到模型化基础设计

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


* 个人与互动重於流程与工具


* 可用的软体重於详尽的文件


* 与客户合作重於合约协商谈判


* 回应变化重於遵循计画


宣言的编写人指出「重於」前者并不等同「舍弃」後者。他们所指的是重心的调整:「虽然後者(右方)项目具有其价值,不过我们更加重视前者(左方)项目。」


让我们来看看如何将敏捷价值映射到模型化基础设计。


着重於个人与互动


在模型化基础设计的流程与工具特别是建模与模拟促进了个人与团队之间有效的互动。模型可以直接在Simulink、报告、或网页共享,让所有利害关系人能够将其作为共同的叁考点和单一的事实来源使用。模拟结果不但清楚且显而易见,能够帮助进行设计决策、Scrum规划、与利害关系人的讨论。


着重於与客户的合作


与客户的合作是敏捷方法的中心。每一个sprint都会由一个计画会议开始,并以检讨会议结束,客户时常被邀请到这些会议来提供意见。建模与模拟不只支援有效的客户合作,也增进各团队、领域范围、规范纪律之间的合作。硬体设计、系统设计、功能与元件开发工程师有了一种共同的语言,可以专注在合作上,而不用担心使用工具的差异。


着重於可用的软体


模型化基础设计对於使用敏捷方法的团队最重要的优点之一,就是即使嵌入式目标、受控体、感测器、或其他硬体还没有准备好,也可以从最初的sprints开发出系统的可行版本。一个经由模拟验证的Simulink模型,可以在整个专案计画中做为有效软体(working software)。模型在开发阶段充当一个系统的可执行规格。在早期的sprints,硬体可能尚未准备好,模拟结果可以代替硬体测试结果与客户分享,并用来评判进度、请求接受、或计划下一个sprint。模型亦提供清楚且方便的途径来衡量进度。随着模型变得更加详尽,还可以被用来产生执行软体??圈(software-in-the-loop, SIL)、处理器??圈(processor-in-the-loop, PIL)、硬体??圈(hardware-in-the-loop, HIL)测试,以及即时原型化与生产系统的程式码。


模型也可做为综合文件的准则。在模型化基础设计,文件是设计流程的产出,而不是离散任务,且文件和报告可以依需求从模型产生。


着重於回应变化


瀑布型的开发流程有一块主要的绊脚石,就是无法充分回应要求与条件的演变。敏捷开发和模型化基础设计能够弥补这项缺点,让团队可以更有效率地回应变化。针对工程应用之中各种非显然的变化,使用模型化基础设计的工程师可以对模型进行变更,接着重新产生程式码。在任何改变被落实之前,团队可以执行假设分析(what-if analysis)来决定每个特定变化要求的最隹回应方法。在模型中进行变更之後,工程师可以执行模拟来进行??归测试,以确保所做的变更不会造成系统出现非计画中的行为。当模型连结到设计要求,团队可以执行影响分析,以了解对部分模型做的变更将对其他部分造成什麽样的影响。


【使用案例】

结合敏捷方法与模型化基础设计来开发主动式定速巡航控制器

这里提供一个车辆工程团队利用感测器融合开发主动式定速巡航控制系统的软体的范例。该系统融合来自车载雷达与视觉感测器的资料,来辨别最重要的物件以及其与车辆本身的距离,以调整车速及维持安全距离。


在这项专案,有一组工程师负责开发控制演算法,而另一组开发驾驶情境与合成感测器资料。这些合成资料可以在工程师有办法取得真实感测器资料之前,帮助他们开发与测试演算法。使用合成资料的早期模拟可以提供设计决策的资讯,像是类型、数量、以及车内感测器的定位。


在第一个sprint,每一个小团队(或一组工程师)建立其各自的子系统,利用共享的系统层级Simulink模型来协调他们的工作(图2)。即使是在这个早期阶段,他们可以执行模拟观察控制器在各种条件下的行为。他们为控制器除错、辨识要进行优化的叁数、从可用版本的系统将主要绩效指标视觉化这所有的工作都在开始撰写或产生程式码之前完成。



图2 : 附有感测器融合之主动式定速巡航控制系统的Simulink模型。
图2 : 附有感测器融合之主动式定速巡航控制系统的Simulink模型。

在第一个sprint结束、与客户一同进行的检讨会议中,团队分享了模型以及模拟结果(图3)。该模型与结果提供一个可用软体的具体呈现举例来说,透过图表说明车辆在另外一辆车移动到自己所在车道时该如何进行减速。



图3 : 主动式定速巡航控制模型的模拟结果。
图3 : 主动式定速巡航控制模型的模拟结果。

在接下来的sprint,团队依客户的回??精链并改善模型比如透过调整安全车距或改变车辆在加减速时的速率并为了程式码的产生与布署配置到ECU来对模型进行优化。产生的程式码可以直接拿来使用,或者做为更大系统的一部分与既有程式码整合。Jenkins的连续累计(continuous integration, CI)被使用来不间断地检查自动产生和手动撰写程式码的整合情况、在模型上直行测试、检查是否遵照建模标准,接下来再以产生的程式码执行测试。从这些活动所产生的结果会自动地回报,让没有使用开发工具的利害关系人也能够追踪进度。


在後面的sprints,团队整合了更严格的验证与有效性检测活动,包含SIL、PIL、或HIL测试,以确保设计符合要求。他们也检查模型与程式码是否确实遵照所建立的标准和方针,使用静态分析和正式的方法来证明不会出现重大执行阶段错误,并且产生在准备标准认证时所需要的报告及其他物件。


随着专案计画的进行,客户需求有可能会变动。举例来说,客户可能要求模型预测控制,而不是一般的控制演算法,因为进阶的MPC控制器让车辆可以对环境中其他车辆更具侵略性的操纵做出反应。由於在专案计画中使用了系统模型,演算法团队可以很容易地以新开发的模型预测控制器替换原本的控制演算法,不用去改变模型的其他部分。团队接下来再重新执行模拟,并将结果分享给客户,依据模拟结果,可以决定是否继续进行设计变更或回复先前的途径。


这个团队在他们的敏捷开发工作流程中使用了模型化基础设计,并且在硬体阶段之前即产出运作良好的软体。建模与模拟让该团队可以持续地依据客户反映来改善设计,即使是在专案计画的後期的重大要求变更也能够调适。


(本文由??思科技提供,作者Roger Aarenstrup、Gaurav Tomar任职於MathWorks公司)


相关文章
如何透过Simulink进行ISO 26262专案
利用模型化基础设计将通讯协定布署至FPGA
利用MATLAB报告产生器自动产生客制化报告
开发以PLC为基础之车辆控制与管理系统
在嵌入式Linux硬体上执行处理器??圈模拟
comments powered by Disqus
相关讨论
  相关新品
mbed
原厂/品牌:RS
供应商:RS
產品類別:
Arduino
原厂/品牌:RS
供应商:RS
產品類別:
Raspberry Pi
原厂/品牌:RS
供应商:RS
產品類別:
  相关新闻
» UL:锂电池存在必然风险 应用要有新思维
» 杜邦携手产业夥伴 叁与台湾国际太阳光电展
» Energy Taiwan台湾国际智慧能源周开幕 聚焦风电、太阳能
» 友达光电携手供应链夥伴 提供全方位太阳能解决方案
» 3D NAND产能再增 东芝记忆体与WD合资的日本晶圆厂开幕
  相关产品
» 英飞凌1EDN7550 与 1EDN8550 解决 SMPS 地电位偏移造成的功率MOSFET驱动问题
» 英飞凌推出 200 V 半桥闸极驱动 IC
» 是德科技扩展Infiniium UXR系列示波器家族 110 GHz频宽的技术引入13GHz
» EonStor GSi:为 AI 应用而生的 Infortrend AI运算储存设备
» ADI发表用於自驾车12V-12V 冗馀电池系统的98% 效率双向升降压型控制器
  相关资源
» Power Management Solutions for Altera FPGAs

AD