账号:
密码:
最新动态
产业快讯
CTIMES / 文章 /
工程软体开发:敏捷与模型化基础设计
 

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

浏览人次:【13401】


现今大部分开发工程应用软体的团队逐渐意识到传统瀑布型(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公司)


相关文章
以3D模拟协助自动驾驶开发
无线通讯的未来--为无所不在的连接做好准备
使用深度学习进行地下电缆系统预测性维护
实用型数位转型的最隹实践
利用类神经网路进行ADC错误的后校正
comments powered by Disqus
相关讨论
  相关新闻
» 工研院秀全球最灵敏振动感测晶片 可测10奈米以下振动量
» 安立知以全方位无线通讯方案引领探索6G时代
» 再生能源成长创新高 但发展程度并不平均
» 意法半导体突破20奈米技术屏障 提升新一代微控制器成本竞争力
» Pure Storage携手NVIDIA加快企业AI导入 以满足日益成长的需求


刊登廣告 新聞信箱 读者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 远播信息股份有限公司版权所有 Powered by O3  v3.20.1.HK83T0AJW4USTACUK7
地址:台北数位产业园区(digiBlock Taipei) 103台北市大同区承德路三段287-2号A栋204室
电话 (02)2585-5526 #0 转接至总机 /  E-Mail: webmaster@ctimes.com.tw