该部分适用于开发模型检查工具的公司。MathWorks汽车咨询委员会(MAAB)为使用MathWorks工具箱开发工具的供应商制定了这些建议,工具供应商应该根据该部分开发模型检查工具。为了向工具的潜在用户提供最大限度的信息,建议工具供应商提供一个合规性矩阵(compliance matrix),该矩阵可在工具运行时轻松访问。无需购买工具即可获得此信息。
合规矩阵应包括以下信息:
⏹ 检查使用的指南版本
● 包括MAAB指南标题页上的完整标题(完整标题和版本号)。
⏹ 每条指南应该包括如下信息:
● 指南ID
● 指南标题
● 合规性等级
● 详情
注:指南ID和标题应与指南中ID和标题完全一致。
合规性等级包括:
纠正(Correction)–工具检查并自动或半自动纠正不合规项。
检查(Check)–工具检查并标记不合规项。由软件开发人员纠正。
部分检查(Partial)–工具检查指南的部分规则。细节部分应明确指出检查了哪部分规则和哪部分规则未检查。
无(None)–工具未检查指南。对于未检查项,强烈建议供应商提供如何手动检查的方法。
12.附录B:指南制定(Guideline Writing)
该部分适用于指定新的指南。具有以下特征的指南易于理解和使用,因此,指定指南时至少应包括以下特征:
● 可理解且明确的(Understandable and unambiguous)
● 易于查(Easy to find)
● 最小化(Minimal)
可理解且明确的(Understandable and unambiguous):指南描述应准确、措辞清晰、简洁,并应定义模型(或模型的一部分)的属性特征。小心地使用“必须”、“应当”、“应当”和“可以”等词;它们具有不同的含义,对模型开发人员和模型检查人员(人工和自动化)很重要。如果指南作者描述了如何达到指南规范一致的操作(例如,通过选择特定选项或单击特定按钮),则对读者很有帮助。示例、反例、图片、图表和屏幕截图也很有用,推荐使用。最小化准则允许的例外情况;它们模糊了准则,使其更难应用。如果一个准则有许多允许的例外情况,您可能试图用一个准则覆盖太多的特征-请参阅下面的“最小化
(Minimal)”了解一些解决方案。
易于查(Easy to find):指南应该有一个清晰,稳定的标题,并放在指南的合适位置。指南的标题应该描述所涵盖的主题,而不是具体的标准。这使得标题不太可能随着时间的推移而改变,因此更容易到。具体的标准应包含在指南的描述中。例如,如果一条准则涉及名称中允许的字符,则准则的标题应类似于“名称中允许的字符”,准则的说明应明确指出哪些字符是或不使用的。如果指南具有先决条件,则它们应出现在从属指南之上或之前。(如果先决条件在不同的部分中,先决条件可能不能总在从属指南之前。)
最小化(Minimal):每条指南仅规定一个模型特征。指南应该具有原子性(不可再分割)。例如:与其编写一个同时处理错误预防和可读性的大准则,不如制定两个准则——一个处理错误预防,一个处理可读性。此外,大的指导方针比小的指导方针更有可能要求妥协以获得广泛接受。因此,大的指导方针可能会变得更弱、更不具体、更不有益。小的、有重点的指导方针不太可能因为妥协而改变,而且更容易被采纳。
13.附录C StateFlow 参考(Flowchart Reference)
StateFlow流程图中下列模板适用于If-then-else-if结构。 | |
直线流模板 | 曲线流模板 |
苹果11怎么截图IF THEN | |
IF THEN ELSE | |
IF THEN ELSE IF | |
Cascade of IF THEN | |
StateFlow流程图中下列模板适用于case结构。 | |
直线流模板 | 曲线流模板 |
互斥选择CASE(CASE with exclusive selection) | |
互斥条件CASE(CASE with exclusive conditions) | |
StateFlow流程图中下列模板适用于循环结构。 | |
直线流模板 | 曲线流模板 |
FOR LOOP | |
WHILE LOOP | |
DO WHILE LOOP | |
在Stateflow流程图中If-then-else-If结构可在以下模板中二选一。 | |
直线流模板 | 可替换的直线流模板 |
IF THEN ELSE IF | |
Cascade of IF THEN | |
14.过时的规则(Obsolete rules)
14.1在2.2版本中删除规则
JM_0013:注释:该指规则在最初版本R13中存在一个打印错误。在R14 SP1中修改了该错误。
14.2在版本3.0中删除规则
在版本3.0中没有规则被删除
术语(Glossary)
动作(Actions)是Stateflow图执行的一部分。动作可以从一个状态到另一个状态转移过程
中执行,或者在活动状态中执行。转移动作分为条件动作和转移动作。例如:
状态有进入(entry),过程中(during),退出(exit)和事件( on event_name)动作。例如:
如果输入名称和反斜杠,然后直接输入一个或多个动作(不带entry关键字),则该动作将被解释为输入动作。 如果仅指定进入(entry)动作,则此快捷方式很有用。
动作语言定义了您可以指定的动作类别及其相关符号。 动作可以是函数调用,要广播的事件,要赋值的变量等。
动作语言(Action Language)
有时需要动作在Stateflow图执行过程中发生。 动作可以从一个状态到另一个状态转移过程中执行(称为转移动作)或者在活动状态中执行。转移动作分为条件动作和转移动作。 状态(States)有进入(entry),过程中(during),退出(exit)和事件( on event_name)动作。
动作可以是函数调用,要广播的事件,要赋值的变量等。动作语言定义了您可以指定的动作类别及其相关语法格式。 解析器将违反动作语言符号的行为标记为错误。 本节介绍动作语言符号规则。
表实例(Chart Instance)
一个表实例是一个Stateflow模型到Simulink 库中表的连接。Simulink 库中的表可以有多个实例(可以理解为库中的表时定义了一个类,模型中的表实例相当于类的一个对象,作者注)。更新Simulink 库中的表会更新模型中表的实例。
发布评论