基于PREEvision的UML设计

众所周知,PREEvision是一款强大的电子电气架构协同开发及管理软件,可以很好地帮助架构工程师完成架构开发工作,其功能包括需求管理、定义功能逻辑、系统软件开发、网络设计、线束设计及整体工程的产品线管理和变形管理等。随着工程师们越来越重视系统工程分析,PREEvision也逐渐丰富 UML相关设计语言。UML(Unified Modeling Language)统一建模语言,可用于系统分析和设计,是辅助工程师进行思考和沟通的工具。

在软件行业,UML系统开发初期需要做需求获取、需求分析等工作,这里面的需求获取是系统设计的源头,需求分析是对系统设计前期的验证和过渡,包含业务用例、概念用例等分析,但是对于整车功能的设计而言,输入多为制定好的功能列表,前期的需求已经相对明确,架构工程师只要从系统分析阶段入手就可以了。

接下来我们将以“后视镜折叠功能”为例,了解在PREEvision中是如何应用UML进行分析建模的。

定义用例

作为系统需求分析的起点,通常以功能为用例,例如后视镜折叠是一个功能,而折叠方式是功能的实现方式,可以把手动折叠后视镜和自动折叠后视镜作为后视镜折叠功能的继承,如图所示:

描述用例

描述系统用例有两种方式:1.用例规约 2.用例场景(活动图)

用例规约是对用例的具体描述,包括触发条件、执行步骤等,可以在Use Case构件的Description或自定义属性中描述,如下图对“自动折叠后视镜”用例进行描述:

也可以用活动图去描述用例,该种方式更为直观,能够体现功能的执行流程。同样,根据“自动折叠后视镜”用例画出活动图。因为自动折叠后视镜的前提是完成锁车,所以我们分为两个活动图去设计,也便于锁车活动被其他功能调用,如图所示:

左侧自动折叠后视镜活动图中的“执行锁车”Action可以关联右侧的遥控闭锁活动图;在PREEvision中可以找到两者的调用关系,如图所示:

假设自动折叠后视镜功能组成部分为“钥匙”、“锁系统”、“后视镜”、“后视镜控制”,那么可以将活动图分泳道显示,如图所示:

这里的泳道叫做Activity Partition,可以将其与逻辑模块/软件模块/Class进行关联,代表Partition的提供者。

类图设计

类图用于描述系统中各类之间的交互关系,帮助工程师简化对系统的理解,实现系统的结构化设计。从上面的活动图分析中可以得到相关的类及其属性参数,如图所示:

定义逻辑模块

针对类图的分析,可以整理规划出逻辑模块,并根据类的属性方法、类之间的交互关系定义逻辑接口。该部分工作类似于UML设计中的类到组件的映射,但PREEvision已经有非常完备的逻辑图,逻辑模块可以代表类和接口的集合,也可以用软件层的SWC去承接设计,但是个人比较习惯用逻辑层进行初步的接口定义,到软件层再进行细化设计。

接着上面“自动折叠后视镜”功能继续分析,在逻辑层有三种常用逻辑类型,输入(Sense)、控制(Logical Function)、输出(Actuation),我们把上面的Class按照这三种类型进行分类,“门”、“钥匙”、“电源模式”、“锁”都为Sense,“门锁控制”、“后视镜控制”属于Logical Function,“后视镜”由于既有状态监控又有驱动执行,所以可以把它拆分为Sense和Actuation两个逻辑模块,如图所示:

其实在前面类的分析时也可以把后视镜传感和执行分别设计成两个类,门和锁也可以划为一个逻辑模块,这个就取决于工程师个人的设计思路了。

设计逻辑图

将定义好接口的逻辑模块整理连接,得到逻辑框图,如图所示:

软件架构设计

根据逻辑框图建立SWC,创建其接口信息和映射关系,完成软件架构设计,如图所示:

软件架构设计完成后就可以映射到ECU,通过信号路由生成信号,通讯工程师可以基于此进行通讯设计,这里就不展开叙述了。

状态机设计

在PREEvision中可以针对某一个逻辑/软件模块分析其不同状态的转换关系,这里我们对软件模块“Rearview mirror control”进行状态分析。确认好模块所有的状态,并定义模块之间的现态/次态关系以及转换的触发事件、监护条件、执行动作等信息,完成模型如图所示:

状态转换可以定义的信息如图所示:

状态可定义的信息如图所示:

在系统分析过程中,可能会得到一些新的系统需求,我们可以逐步完善需求库,并做好追溯关系。

系统工程设计有很多的方法和流程,包括OOSEM、Arcadia、Harmony SE、State Analysis、MagicGrid等,但是不同的企业有不同的组织结构和工作流程,所以必然不能照搬硬套,需要结合实际情况去定制化裁剪或者探索出适合自己的系统设计方法。

支持系统工程语言的工具也有很多,比如EA、Rhapsody、Umodel、Agilian等,但是这些工具在汽车电子电气架构设计方面局限性较大,对于整车厂而言需要工具支持的不仅仅是需求分析,还有软件架构设计、硬件设计、整车通讯设计、功能安全、测试管理等,因此需要的是能够覆盖整车开发V流程的工具,那么PREEvision则可以满足以上V流程的设计和管理。

本篇短文只是简单介绍了PREEvision在UML建模方面的应用,若想获取更加详细的建模方法,可以后台留言或将需求发送至东信创智市场邮箱market@dotrustech.com,期待与您进一步沟通。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65552.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

闲谭Scala(2)--安装与环境配置

1. 概述 Java开发环境安装,需要两步,第一安装JDK,第二配置环境变量。 Scala的话,也是两步,第一安装Scale环境,第二配置环境变量。 需要注意的是,配置环境变量,主要是想让windows操…

智慧地下采矿:可视化引领未来矿业管理

图扑智慧地下采矿可视化平台通过整合多源数据,提供实时 3D 矿井地图及分析,提升了矿产开采的安全性与效率,为矿业管理提供数据驱动的智能决策支持,推动行业数字化转型。

王鹤棣新剧《大奉打更人》开播 数据亮眼刷新招商纪录

临近年末,各类国产剧集仍频上新,档期竞争格外激烈。而由王鹤棣领衔主演的古装悬疑轻喜剧《大奉打更人》已于12月28日在CCTV-8和腾讯视频同步播出,开播即横扫各大榜单。该剧从定档官宣到开播,热度一路攀升,开播后更是掀…

数据中台从centos升级为国产操作系统后,资源增加字段时,提交报500错误

文章目录 背景一、步骤1.分析阶段2.查看nginx3.修改用户(也可以修改所有者权限) 背景 故障报错: nginx报错信息: 2024/12/19 15:25:31 [crit, 500299#0: *249 onen0 " /var/lib/nginx/tmp/cient body/0000000001" f…

BLE core 内容整理解释

本文内容比较杂散,只是做记录使用,后续会整理的有条理些 link layer 基本介绍 **Link Layer Control(链路层控制)**是蓝牙低功耗(BLE)协议栈的核心部分,负责实现设备间可靠、安全、低功耗的数…

【疑难杂症】 HarmonyOS NEXT中Axios库的响应拦截器无法拦截424状态码怎么办?

今天在开发一个HarmonyOS NEXT的应用的时候,发现http接口如果返回的状态码是424时,我在axios中定义的拦截器失效了。直接走到了业务调用的catch中。 问题表现: 我的拦截器代码如下: 解决办法: 先说解决办法&#xff…

聚类评价指标

聚类评价指标分为 内部指标 和 外部指标 两大类,用于评估聚类算法的性能。 一、内部评价指标 内部评价指标不依赖真实标签,主要通过聚类结果本身的紧凑性和分离性进行评估。 轮廓系数(Silhouette Coefficient, SC) 衡量数据点与其…

flask后端开发(1):第一个Flask项目

目录 一、Helloworddebug、host、port的配置 gitcode地址: https://gitcode.com/qq_43920838/flask_project.git 一、Helloword 一般是会创建两个文件夹和app.py app.py from flask import FlaskappFlask(__name__)app.route(/) def hello_world():return Hello…

一文复盘:RAG技术-大模型

原文:https://zhuanlan.zhihu.com/p/13962398269 RAG(Retrieval-Augmented Generation)之所以被关注,有两方面原因: 1、没有跑大模型的资源:大多数人没有GPU集群搞LLM的预训练。 2、大模型缺乏知识&…

使用 OpenCV 绘制线条和矩形

OpenCV 是一个功能强大的计算机视觉库,它不仅提供了丰富的图像处理功能,还支持图像的绘制。绘制简单的几何图形(如线条和矩形)是 OpenCV 中常见的操作。在本篇文章中,我们将介绍如何使用 OpenCV 在图像上绘制线条和矩形…

WinForm 美化秘籍:轻松实现 Panel 圆角虚线边框

文章目录 1、引言2、案例实现1、创建自定义 Panel 类2、定义圆角矩形3. 使用自定义 Panel4. 调整属性5、使用背景图片来实现5、拓展:使用 Panel 的 Paint重绘单独实现虚线边框效果 3、实现效果4、总结 1、引言 在 Winform 应用程序开发中,美化用户界面&…

Spring Cloud LoadBalancer (负载均衡)

目录 什么是负载均衡 服务端负载均衡 客户端负载均衡 Spring Cloud LoadBalancer快速上手 启动多个product-service实例 测试负载均衡 负载均衡策略 自定义负载均衡策略 什么是负载均衡 负载均衡(Load Balance,简称 LB) , 是高并发, 高可用系统必不可少的关…

OpenCloudOS简介

OpenCloudOS是一款开源的云操作系统,具有诸多特性和优势,广泛应用于多个领域。 一、项目背景 开源社区发起:由操作系统、云平台、软硬件厂商与个人共同倡议发起的操作系统社区项目,旨在打造全面中立、开放、安全、稳定易用、高…

NLP 中文拼写检测纠正论文 Automatic-Corpus-Generation

拼写纠正系列 NLP 中文拼写检测实现思路 NLP 中文拼写检测纠正算法整理 NLP 英文拼写算法,如果提升 100W 倍的性能? NLP 中文拼写检测纠正 Paper java 实现中英文拼写检查和错误纠正?可我只会写 CRUD 啊! 一个提升英文单词拼…

区块链安全常见的攻击合约和简单复现,附带详细分析——不安全调用漏洞 (Unsafe Call Vulnerability)【6】

区块链安全常见的攻击分析——不安全调用漏洞 Unsafe Call Vulnerability 区块链安全常见的攻击合约和简单复现,附带详细分析——不安全调用漏洞 (Unsafe Call Vulnerability)【6】1.1 漏洞合约1.2 漏洞分析1.3 攻击步骤分析1.4 攻击合约 区块链安全常见的攻击合约和…

留学生交流互动系统|Java|SSM|VUE| 前后端分离

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、VUE、jquery,html 5⃣️数据库可…

算法基础一:冒泡排序

一、冒泡排序 1、定义 冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。 …

跨域请求问题

跨域请求简介 跨域请求:通过一个域的JavaScript脚本和另外一个域的内容进行交互 域的信息:协议、域名、端口号 同域:当两个域的协议、域名、端口号均相同 如下所示: 同源【域】策略:在浏览器中存在一种安全策略就是…

C++“STL之String”

​ 🌹个人主页🌹:喜欢草莓熊的bear 🌹专栏🌹:C入门 目录 ​编辑 前言 一、STL简介 1.1 STL是什么? 1.2 STL的版本(这个不是很重要了解即可) 1.3 STL的六大组件 二…