利用Model Inspector测量模型度量

本周的技术文章又上新啦!上一篇为大家分享了有关制作车载软件建模指南的知识,不知道对您有没有帮助呢?今天向大家分享的这篇文章是《利用Model Inspector测量模型度量》,主要涉及到我们的模型级检测工具Model Inspector,还想了解代码级别及模型级别检测工具更多信息的请积极留言告诉我们哦!

图片

1.何为模型度量?

模型度量就是指能够分析模型,评价模型复杂度、大小、可读性、可测试性及是否遵守标准的模型品质指标。可通过测量的度量针对模型制作质量标准,并可灵活利用多种度量实现高水平管理。但目前并没有标准文书明确规定必须使用度量。(ISO 26262标准中仅是建议使用度量测量)

实际上,度量中很重要的一点并不是度量的测定值本身,而是与质量相关的度量的范围。例如圈复杂度 (Cyclomatic Complexity)是典型的复杂度度量,测定值越大就代表代码越复杂,越难以理解,且发生缺陷的可能性越高。此时应设置圈复杂度范围,若超过此范围即可认定模型具有过高的复杂度。

像这样仅通过测量度量,无法准确地掌握模型质量。若以个人/组/部门为单位,确定各度量的范围,并制定其范围的质量标准,将有助于提高产品质量。

 

2.设置Model Inspector度量范围

利用Model Inspector测量度量后,以各度量为单位设定范围,可导出想要的值。

图片

<图1> 被测度量概要及详情视图

可通过Model Inspector的度量环境设置编辑度量。在度量编辑窗口中可通过不定式功能来设置测量范围。

如下图所示,通过此设置可确认局部复杂度(子系统的复杂度)大于3的子系统。

图片

<图2> 通过度量编辑窗口设置度量范围

可确认局部复杂度大于3的子系统模型内有几个分区。

图片

<图3> 通过设置的范围测量的局部复杂度度量

另外,通过下面<图4>的度量详细信息视图,可以确认每个子系统局部复杂度的数值。

           图片

<图4> 关于局部复杂度的度量详情视图

 

3. Model Inspector支持的度量

(1)复杂度(Complexity)

测定模型复杂度的方式有两种,一种是应用编码复杂度测量方法的Cyclomatic,另一种是Halstead。本工具采用Cyclomatic方法进行测量。

名称

说明

Cyclomatic   Complexity

Complexity   = P + 1

P :   Decision block (if-else, switch, while, for iterator block)

Model Inspector中的复杂度是以Subsystem和Chart为单位,基于Decision Block,Stateflow的State数,具有条件的Transition数进行复杂度计算。

DO-331、IEC 61508、IEC 62304、ISO 26262及EN 50128标准中建议遵守模型和代码的大小、复杂性及可读性等相关质量指标。

 

(2)内聚度(Cohesion)

在模型中子系统依据功能上有关联的block的聚合而相连接的块组数量来计算内聚度。例如,若一个子系统内的所有BLOCK都依靠信号相互连接,则可称为高内聚。未连接的块组可分离至其他子系统,即内聚度低意味着子系统构成的功能关联性小。

图片

(3)耦合度(Coupling) / Fan-In, Fan-Out

在模型中,子系统通过输入(Input)和输出信号(Output Signal)连接,建立相互依存关系,因此以此为标准计算耦合度。除去与基本块(Basic Block)的连接外,与相同的子系统的连接计算为1个。耦合度要分别计算扇入和扇出。即耦合度高意味着子系统的依赖性低。

 

(4) 模型及Chart大小

模型大小和Chart大小是影响可读性和复杂性的因素,例如影响维护的程序大小,因此需要适当的管理。为此,必须测量各种类型的尺寸系数。

种类

Block

计算模型内的Block 数量(链接库内的Block除外)

Subsystem

计算模型内的Subsystem数

Linked library

计算模型内的链接库数(测定链接库数而不是库数)

Chart

模型内的Chart数

Subsystem深度

计算模型内Subsystem深度(模型系统的深度初始值为0)

State

计算Chart内的State数

Transition

计算Chart内的Transition数(包含default Transition)

这些是与模型大小及Chart大小的DO-331、IEC 61508、IEC 62304、ISO 26262和EN 50128标准建议遵守的模型和代码的大小以、复杂性和可读性的要求中与模型大小有关的质量指标。

图片

    <图5> Model Inspector metric perspective 画面           

 

参考资料

- “Complexity Analysis of Simulink Models to improve the Quality of Outsourcing in an Automative Company”, Jeevan Prabhu, August 2010

- Mathworks

- “Simulink Models Are Also Software Modularity Assessment”, Yanja Dajsuren, Mark G. J. van den Brand, Alexander Serebrenik, Serguei Roubtsov , Eindhoven University of Technology

- MISRA: MISRA Report 5, Software Metrics

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
利用Unity进行航母模型搭建之前,我们需要先获取航母的相关模型和材质。可以通过在互联网上搜索或使用三维建模软件来创建一个航母模型。接下来,我们将航母模型导入Unity中。 首先,打开Unity并创建一个新的项目。然后将航母模型的文件夹拖动到Unity的"Project"窗口中,以导入模型文件。确保模型文件的格式(如FBX或OBJ)与Unity兼容。 导入后,将航母模型拖动到"Scene"窗口中的合适位置。通过在"Inspector"窗口中调整模型的位置、旋转和缩放来确保航母正确放置并适应场景。 接下来,可以对航母模型进行更多的调整和增强。例如,可以应用材质和纹理来增加航母的外观。选择航母模型并在"Inspector"窗口中选择合适的材质,或者将自定义的纹理文件拖动到对应的材质槽中。 在模型完善后,我们可以为航母添加交互功能和动画效果。例如,我们可以使用Unity的动画系统来创建航母的起飞和降落动画,或者通过编写脚本来控制航母的运动和行为。 最后,我们可以在Unity中进行航母模型的展示和渲染。通过添加光照和摄像机组件,以及调整场景设置,可以实现逼真的渲染效果。还可以添加音效和特效来增加航母模型的真实感和沉浸感。 总的来说,利用Unity进行航母模型搭建需要导入模型、调整位置和材质、添加交互和动画效果,并进行渲染和展示。通过这些步骤,我们可以创建出一个逼真而又令人印象深刻的航母模型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值