你有多少次把你的设计交付给客户,却发现它不是客户所期望的?在行业中有许多项目由于需求沟通错误而失败的例子。最初的需求主要是使用非正式的文本来指定的,这些文本很容易被误解,是不完整的或不一致的。我的名字是Paul Urban,我在the Math的模型验证和验证产品组工作,在那里我管理Simulink需求、Simulink测试和Simulink检查产品。s manbetx 845万博1manbetx
今天,我将向您展示允许您更早地验证和验证需求的新功能。使用临时评估,您可以将文本需求转换为可以执行的明确评估。解决方案形成一个数字线程,将需求与模型中的实现以及验证需求的测试联系起来。你可以从一个汽车客户的引用中看到,基于模型的设计如何帮助更快地分析需求,并缩短满足客户需求的设计交付时间。
对包含更多基于软件的功能和产品的需求不断增长。s manbetx 845这增加了规模和复杂性,并对开发和测试过程施加了额外的压力。在传统的开发过程中,当您从左向右移动时,需求被细化为最终在代码中手工实现的规范。在开发的各个阶段都会引入错误,但研究表明,大多数缺陷都是在初始设计中引入的。这些错误会贯穿设计阶段,测试会发现许多错误,但直到需要返工和进一步测试的过程后期才会发现。但最终,一些潜在的错误可能仍然存在于软件中,只有在现场才能检测到。这些错误可能会导致安全问题或昂贵的产品召回,这是需要解决的更大的问题。
此外,研究还表明,发现bug的成本会随着时间的推移而增加。例如,在台式电脑上编写代码时发现软件缺陷比在现场生产硬件上发现该缺陷要便宜。测试的成本增加了——在开发周期中发现缺陷的时间较晚。我们需要能够尽早确定是否所有的需求都得到了实现,我是否正确理解了需求,设计是否按照需求正确运行?而且,我们还希望能够在不修改设计的情况下对其进行测试。在Simulink中,图形模型用具有精确含义的可执行模型取代模棱两可的设计。万博1manbetx
它允许您在硬件可用之前在台式机上更早地验证设计,在那里错误更便宜、更容易识别。万博1manbetxSimulink为工程师提供了一套很棒的语言来描述复杂的系统。从物理领域——比如传动系统和电机。到软件领域,比如框图和状态机。这些表示允许您抽象出不需要的细节,以专注于最重要的内容。
非正式或特别的模拟测试可以通过构建系统的虚拟表示来完成,您可以在桌面上与之交互。这是一种很好的方法,可以让您在构建硬件之前对系统有一个早期的了解,并评估设计方案。在精炼你的模型之后,Simulink设计可以通过协同生成自动万博1manbetx转换成产品代码。
有了这个完整的基于模型的设计过程,当您将设计模型细化到目标硬件中时,您可以消除成本高昂、容易出错的手动步骤。模拟是一种很好的早期验证行为的方法,但它主要是一个手动过程,主要是临时的。为了确定是否满足所有需求并正确运行,我们需要采取更严格的基于需求的测试方法,根据需求系统地测试我们的模型。在这里,MathWorks验证和验证工作流有助于自动化测试模型的手动步骤,并建立可重复的验证工作流。现在,我将逐步完成工作流以执行需求验证。
通常需求开始时是非正式的想法。它们可能来自Word、Excel甚至是更结构化的环境,比如门。工程师需要将这些非正式的想法解释为基于模型的设计,然后验证设计是否满足这些需求。当在不同的工具中查看和管理数据时,这可能非常具有挑战性。在需求与设计和测试之间建立可跟踪性是很困难的。
为了直接在Simulink中处理来自其他工具的需求,可以通过Simulink对Word、Excel、Doors万博1manbetx的需求进行导入操作。此外,大多数需求管理工具都支持标准需求交换格式--ReqIF。ReqIF。如果需求在源代码处发生更改,则需要执行更新操作如果执行同步更改,Simulink用户可能希万博1manbetx望编辑需求或添加更多详细信息,例如需求的自定义属性。
默认情况下,将外部需求视为只读,但在最近的19A版本中,解锁需求的功能允许更新需求中的字段。此外,要导入需求,您还可以直接在Simulink中创建需求,其中Simulink是源。要包括Simulink编写的需求,请整个项目内的nts和使用19A中介绍的ReqIF的出口运营。万博1manbetx
将导入、更新和导出操作与ReqIF相结合,可以使用支持该标准的外部需求工具实现往返工作流。Simulink中有两个主要视图可用于处理需求。编辑器和透视图。编辑器允许您查看和编辑项目中的所有需求集t、 透视图提供了需求和设计的一个视图,允许您在一个视图中同时使用这两个视图万博1manbetx。万博1manbetx
下面详细介绍一下需求透视图——Canvas右侧的一个控件可以打开或关闭透视图。画布上的徽章显示了链接存在的位置,您可以选择显示描述。浏览器会显示需求的表格式摘要。它包括实现和验证状态,以显示设计和测试的完整性。属性检查器包括需求的所有细节,比如描述、自定义属性,它还包括需求的链接。
通过将需求包含在Simulink环境中,它允许您在设计环境中使用它们来快速万博1manbetx创建可跟踪性链接。模拟提供了一种很好的方法来及早捕获设计错误,但是需要一种更严格和自动化的测试方法来增加对设计的信心。万博1manbetxSimulink测试提供了一种系统的方法来测试模型。
首先,您可以使用测试线束隔离被测试的组件——以允许编写测试而不会弄脏模型。可以创建测试用例,根据基线或建模代码之间的等效性验证设计。可以使用多种格式定义输入,例如--MAT文件、Excel、信号字母或文本序列。为了评估结果,您可以在中与基线输出进行比较
MAT或Excel文件。使用MATLAB单元测试编写自定义标准。并使用测试评估博客定义在线通过-失败条件。您可以链接到测试工件或需求,以完成需求设计和测试之间的可追溯性。
对链接的分析显示了需求层次结构的实现和验证的完成程度。一个全彩色的条表示存在完整需求覆盖的地方。差距确定了缺少实现或测试的地方以及需要进一步工作的地方。我将展示一个使用热泵的工作流示例。它从外部工具中的热泵控制器的一些纹理要求开始。激活热泵要求包括定时逻辑。当温度高于2度并持续两秒以上时,泵应激活,然后保持激活一段时间。
基于这些要求,控制器需要两个输入—一个用于温度,另一个用于室温。它将输出三个命令来控制总线上的泵。一个打开风扇,另一个打开水泵,第三个指定是否需要加热或冷却。控制器打开风扇并去激活用于加热或冷却的泵的行为是使用状态流程图实现的。
为了确保在模型中实现所有需求,将它们导入Simulink需求中。从这个角度来看,我可以看到,主动式热泵的实施状态显示出一个缺口,并且没有任何联系。要创建到模型的链接,我需万博1manbetx要做的就是拖放。我可以显示一个需求注释来查看模型中需求的详细信息。
注意,链接已经创建,实现状态也被更新以显示其实现。添加链接或注释不会破坏模型。使用单独的文件来维护这些工件。现在,我将继续进行需求的验证。控制器包括在一个工厂模型的加热器和热性能的房子,可以模拟其运行。我想只测试控制器而不弄脏模型的其余部分。我将通过创建一个Test Harness来实现这一点。
我选择命令来创建测试线束,然后您可以为线束提供许多操作。特别是,您可以选择不同类型的源和不同的同步。我们选择一个测试序列来驱动控制器的输入。这将创建一个新的测试线束模型,该模型仅包含控制器和测试序列块。如果有任何更改,测试上的组件将与主模型保持同步。
测试序列块允许您生成测试输入,并将评估定义为一系列步骤。您可以将其视为Stateflow的简化版本。它允许您描述复杂的时间测试序列。对于为控制器创建的测试线束,使用斜坡功能的一系列步骤会改变室温范围运行一段时间,进入控制器的所有模式。
第一步对控制器进行初始化,然后外部步骤的代码降低室温,使控制器进入加热模式。外面的热步骤测试控制器如何使房间冷却。最后,控制器回到空闲状态。测试序列提供了一种方法来创建复杂的测试步骤序列,以驱动测试输入。
让我们看看激活热泵的要求。这是一个简单的概念,当一个条件为真,那么另一个条件一定在一段时间内为真。但将评估——所捕获的时间条件——正式化是很困难的。让我们看看如何使用新的时间评估编辑器更改此需求。在测试管理器中,我使用热泵模型的test Harness打开一个测试用例,并添加评估。我使用预定义的模式构建评估。需求指定一个触发器响应模式。我为评估命名,然后我需要为触发条件选择一个模式。
在我的例子中,我希望当温差超过某个阈值超过两秒时触发测试。我键入一个与触发器条件对应的表达式,并指定条件必须为真的最小时间。注意,所有符号最初都被标记为未解析,并自动添加到符号表中。这些映射到模型中的信号或表达式。然后,选择响应条件必须评估的时间对应的时间参考。最后,我为响应条件选择一个模式,并填充条件和最小时间。
我可以折叠评估,以看到可读但准确的需求描述。我可以创建一个链接到正在测试的需求。而且,要查看需求,我可以使用链接直接导航到它。注意,已经创建了一个经过验证的链接,并且状态显示为黄色,这表明测试还没有运行。因此,我们将评估符号映射到模型,现在已经准备好运行测试用例了。我们可以运行直接从需求链接的测试。
测试运行,状态自动更新,显示测试失败。有一个链接可直接导航到测试结果。评估结果显示评估失败时的预期行为和实际结果。文本说明告诉我们泵应在13秒时激活。表达式树解释获取有关故障的更多详细信息,并允许我对其进行调试。我们可以使用数据光标查看泵直到稍后才打开,这是不正确的。
要调试错误,我们可以首先使用链接导航到模型中的实现。通过检查转换逻辑,我们可以很快地看到条件使用了错误的阈值。我在模型中更正了这个错误,现在我可以从模型导航回测试,然后重新运行测试。测试通过了,现在——导航到需求编辑器,我可以看到验证结果被自动更新为绿色表示通过。
总结一下我们所看到的——使用时态评估编辑器,我们能够使用基于表单的编辑器将文本需求转换为正式评估。评估可以用一个易读的英语句子进行查看。“评估结果”窗口允许我查看和调试结果。然后,测试结果可以追溯到需求和设计。要查看总体状态并确定差距,您可以显示实现和验证状态,以测量设计和测试的总体完整性。
对于实施状态,蓝色表示存在链接。浅蓝色表示有正当理由,闪烁表示缺少链接。对于验证状态,绿色表示测试通过,红色表示失败,黄色表示没有结果。闪烁表示测试链接丢失ng.测试线束是隔离受测组件的一种方法,但要验证设计,您可能需要访问模型层次结构中深层的一些信号。但您不希望仅出于测试目的修改设计或其接口。
新的Observer Blocs允许您监视模型的信号,同时保留设计的动态响应和接口。您可以将验证逻辑从设计中分离出来,在不修改接口的情况下访问任何层次结构中的任何信号,也不影响系统的动态响应。它有助于避免模型与只需要测试的附加信号的混乱。您可以使用验证逻辑并将其定位到与测试中的模型共同模拟的单独模型中。
试验可重复使用,对SIL、PIL或HIL进行等价性试验。SIL,或Software In the Loop测试,指的是重用来自模型的测试,在桌面PC上执行生成的代码,然后将结果与模拟结果进行比较。您还可以度量代码覆盖率,以查看生成的代码是否经过了完全的测试。PIL或Processor In the Loop测试是指交叉编译的
为目标处理器生成的代码。在目标处理器上执行该代码,然后比较来自目标的结果和仿真结果。还有第三种循环测试,叫做HIL或Hardware in the loop。在这种情况下,测试使用Simulink real time和Speedgoat检查设计和代码的实时行为。万博1manbetx
我们有许多客户使用VNV工作流。举个例子,Ellis Automotive是韩国最大的汽车开关和零部件一级供应商之一。他们需要满足原始设备制造商日益增长的需求,以更快地交付更多功能,并满足符合ISO 262标准的生产系统。Ellis Automotive公司与MathWorks咨询公司合作,采用基于MATLAB和Simulink的模型设计,以减少他们的镜子和电动窗控制的开发时间。万博1manbetx
他们运行了模拟和Simulink,揭示了客户的规格万博1manbetx错误。但是,幸运的是,这些问题相对容易解决,因为它们在开发的早期就被识别出来了。他们能够消除手工编码错误并减少开发时间。了解更多关于埃利斯汽车和其他客户访问我们的网站。
总而言之,基于模型的设计使您能够按下Play按钮更早地验证和验证设计,并在硬件可用之前捕获错误。新的测试评估语言使您能够将非正式的文本需求转换为具有精确语义的明确评估。为了更好的理解,它们可以被视为自然语言句子。
有了这个解决方案,我们能够从需求、设计到测试进行跟踪——这使我们能够轻松确定需求在何处实现以及如何测试。这也使我们能够确定如果需求发生变化,会对哪些方面产生影响。要了解更多有关MathWorks验证和验证的信息,请在工作流中,查看今天讨论的产品的产品页面或www.tianjin-qmedu.com上的解决方案页面s manbetx 845