一种基于 UML 的嵌入式系统可视化开发方法

2023-10-25 06:32

本文主要是介绍一种基于 UML 的嵌入式系统可视化开发方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 引言

  随着信息产业和微电子技术的发展,嵌入式系统的功能日渐强大,结构也愈加复杂,传统的嵌入式开发方法已不能满足开发要求,人们开始尝试用一些形式化的开发方法进行开发。一种适合于嵌入式系统的形式化开发方法,不仅能缩短嵌入式系统开发的周期,还能减少开发成本,提高系统质量。 本文结合统一建模语言UML,提出一种嵌入式系统可视化开发方法,并将其实际运用到了嵌入式远程温度监控系统的开发过程中,验证了该方法的可行性和有效性。

  2 基于UML 的嵌入式系统可视化开发方法

  2.1  统一建模语言UML

  UML(Unified Modeling Language) 是一种定义良好、易于表达、功能强大且普遍适用的面向对象和基于构件的系统建模语言。它扩展了现有方法的应用范围,不仅可建立软件系统的模型,还可建立非软件系统的模型,可广泛用于描述系统软件、嵌入式系统、企业机构或业务过程等。 UML由图、视图、模型元素、通用机制和扩展机制等几个部分组成 [2] 。其中图是UML建模的关键,根据图在系统开发过程中不同阶段的应用,可以分为用例图、静态图、行为图、交互图、实现图等五类,这些图为系统的开发提供了多种图形表达形式,应用于建模的不同阶段。

  2.2  将UML 语言应用于嵌入式系统开发的优势

  随着嵌入式系统的日趋复杂化,较多的系统都需要由一个团队共同完成,因此,团队成员之间的相互合作,软硬件之间的协同开发,乃至开发人员和客户之间的交流都需要有一个统一的标准作为基础。UML正是这样一种标准的系统建模语言。它详细描述系统的内容和工作方法,先进行系统建模后再编写代码,在开始阶段就保证了系统结构的合理性。UML系统模型包含许多不同框图,使项目小组可以从不同角度了解整个系统。另外,UML可以用统一的形式表现软件和硬件,支持循环迭代并可多次修改软硬件方案直到满足要求,可实现软硬件协同设计。 特别的,UML是一种语言,不是方法,它独立于开发过程 [3] ,所以我们可以结合UML语言提出一套针对嵌入式系统的开发过程,从而为嵌入式系统的开发提供一条新的途径。

  2.3  基于UML 的嵌入式系统可视化开发方法

  文中提出的基于UML的嵌入式系统开发方法支持需求、分析、设计、实现、测试的循环迭代,使用面向对象思想,通过细化分析和设计阶段的步骤,使得整个过程更有条理、充实,更适合于多任务的嵌入式系统开发。方法的需求、分析、设计过程被细化后分别包括了以下几个步骤:

  · 需求阶段明确了系统所要实现的功能以及所要达到的性能,是整个系统开发的目标。

  功能性需求:明确系统应该提供什么功能。

  非功能性需求:明确系统的特定特性或者约束。

  · 分析阶段主要是精化和结构化需求,清楚地描述系统内部,是设计阶段的基础。分为两个步骤:

  系统架构分析:运用面向对象技术描述系统的静态结构。

  系统行为分析:从动态的角度描述系统的对象间相互作用的特性。

  · 设计阶段是在对系统各方面有了解的基础上来确定特定的解决方案。分为两个步骤:

  分层结构设计:确定了具体实现时软件和硬件的最佳分界。

  详细设计:在软件方面是深入到了系统低层信息,如操作的属性、类的流程等;硬件方面则是到了设计具体电路板的阶段。

  本方法利用面向对象的概念将系统分成了相互关联却又较独立的模块,一方面方便了系统开发时的迭代过程以及系统的后期维护,设计人员可以根据不同的新的需要对各个步骤中相应部分进行调整来实现改进,这样就可以大量减少重复分析或设计的过程;另一方面,对象概念可以和嵌入式系统中的任务概念很好的映射起来。任务可看成是由一个或多个对象协作而成的,在分析、设计过程中确立对象的同时也就确定了系统的多个任务,为嵌入式系统的多任务特性提供了很好的支持。

  本文后续部分将以嵌入式远程温度监控系统为例,简单阐述和验证此方法。

  3 系统需求

  3.1 功能性需求

  功能性需求是系统功能的陈述。在UML中是应用用例图来描述系统功能的。如图1所示,系统大致由下述几个角色和用例组成:

  三个角色:数字式测温仪,Internet远端用户,本地用户。

  五个用例:当前温度信息显示、更改最高警戒温度、更改最低警戒温度、修改测温仪工作状态以及登陆服务器(身份验证)。

  以上的各个用例只是对系统功能的大致划分,主要目的是为后面的系统分析作基础。

  3.2 非功能性需求

  非功能性需求是系统的特定特性。本系统的非功能性需求是:

  温度测量范围要求0-400℃,显示精度 为0.2℃。

  在工业现场,远程监控系统对数字式测温仪实现无线监控。

  远程监控系统为Internet远端用户提供统一开放的平台,

  远程监控系统每秒自动更新提供给用户的温度信息。

  远程监控系统也为本地用户提供友好的人机交互界面。

  可以看出,这些非功能性需求为确定系统的结构和系统选用的技术等进行了约束。

  4 系统分析

  在系统分析阶段,通过细化和结构化系统需求,可将系统需求转换成系统中的结构、类、对象和关系等实体元素,并从静态和动态两个角度来清楚描述这些实体元素。

  4.1  系统结构分析

  系统结构分析是对系统元素静态的描述,它在系统需求的基础上确定系统的总体架构及内部对象。

  首先用部署图来描述系统的物理架构,如图2所示,其中带有阴影的为处理器,未带有阴影的是外部设备;系统采用了目前远程监控系统中比较流行的浏览器/服务器模式(B/S)。这样系统的4个功能用例都将主要由嵌入式Web服务器实现。此外,根据非功能性需求中的无线监控约束,在工控现场,运用了蓝牙技术。

  图 2 部署图

  然后用类图来描述系统静态的对象结构及其相互关系。从用例图(图1)中我们可分解出一些类,并将这些类之间的结构描述出来。比如从远端用户的“登录服务器”用例就可分解出嵌入式Web服务器中的网卡、TCP/IP、HTTP类,本地用户的“登录服务器”用例则可分解出嵌入式Web服务器中的键盘、显示器和本地监控等类。依次略推在嵌入式Web服务器中共定义了网卡、TCP/IP、HTTP、蓝牙模块、键盘、显示屏、本地监控、数据处理等类。

  每个类可以设置属性和操作,但我们在这个步骤中并没有定义,而仅仅是对嵌入式Web服务器的 对象结构作静态描述,类的属性和操作的定义将随着完整的类图在后文中出现。

  4.2 系统行为分析

  系统行为分析就是从多个角度来描述所研究系统的动态部分。我们可用状态图描述系统的状态行为,然后根据系统内部所具有的行为来定义和精化类的操作,另外也可用顺序图和协作图从不同的角度来显示动态的信息流。

  这里采用嵌入式Web服务器的状态图来简单说明(如图3所示)。根据嵌入式系统的特点,在此处,状态图不但包括嵌套层次结构状态的概念,还可用并发的概念来表示那些可以和其他状态同时处于活动状态的独立状态,图中用虚线表示。

  图 3 嵌入式Web服务器状态图

  5 系统设计

  设计阶段是在对系统各方面都有充分了解的基础上确定特定的解决方案。

  5.1 层次结构设计

  我们在系统的分析阶段,一直使用统一的标识来描述系统,但系统具体实现时还是需要将软、硬件分开实现,所以我们要在系统设计阶段对软硬件层次进行划分。若这次的划分最终不能满足要求,也可以通过迭代在以后的循环中尝试多种方案,直到满足要求。

  在系统结构分析中用类图所作的统一描述涵盖了软件层和硬件层共同组成的系统结构,所有软件层和硬件层都是由类图中提取而来的,但类图中既可由软件实现又可由硬件提供的一部分内容则要根据性能、价格、规格大小等因素来加以选择。如本系统中TCP/IP协议栈的实现,就即可通过软件编程,也可选择购买提供TCP/IP协议栈的网卡芯片,相比较而言,自带TCP/IP协议栈的网卡芯片提供的性能更高、更稳定,但成本也较高,但本系统对网络实现并没有特别高的要求,所以从成本上考虑,还是选择了软件实现TCP/IP协议栈。这样,TCP/IP协议栈也就将在软件层中描述而不在硬件层中出现。

 

  这里用部署图描述的系统硬件层(如图4),它将类图中的数据处理对象,即软件层中的操作系统所具有的任务映射到了处理器的各个线程,并且还设置了每个线程的优先级。而蓝牙模块所带的操作:蓝牙底层协议,表示蓝牙底层协议是由蓝牙模块硬件实现的。系统的软件层也可以通过组件图来描述。

  5.2 详细设计

  详细设计是一次循环中需求、分析、设计的最后一步,指定了细节问题,明确了单个对象的范围、内数据结构和算法的实现等。

  先前已对类的属性和操作作了定义,而在详细设计中,为了编写代码,必须对每个类中定义的操作的各个属性(包括它的类型和初始值等)填补完整。因为此时的类图是为软件编程准备的,所以应根据体系结构设计过程中组件图的内容重新进行整理,保留并细化由软件实现的所有类。完整的类图如图5所示。

  依照这些类的行为流程图,在编程阶段就可以容易的实现代码,并且由于有了统一的设计决策, 即使是由不同的编程人员编写,最后的代码体现出的思路都是大同小异的,也方便非开发人员了解 和维护系统。

  6 结束语

  通过对UML语言的分析,文中提出了一种基于UML的嵌入式系统可视化开发方法,并实际应用到嵌入式远程温度监控系统的开发过程中。此方法面向对象,步骤清晰流畅,并全部由UML的统一标准符号加以描述,有效的提高了系统的开发效率,也有利于系统以后的维护和升级。

这篇关于一种基于 UML 的嵌入式系统可视化开发方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/280679

相关文章

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

Python实现数据可视化图表生成(适合新手入门)

《Python实现数据可视化图表生成(适合新手入门)》在数据科学和数据分析的新时代,高效、直观的数据可视化工具显得尤为重要,下面:本文主要介绍Python实现数据可视化图表生成的相关资料,文中通过... 目录前言为什么需要数据可视化准备工作基本图表绘制折线图柱状图散点图使用Seaborn创建高级图表箱线图热

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默

在Linux系统上连接GitHub的方法步骤(适用2025年)

《在Linux系统上连接GitHub的方法步骤(适用2025年)》在2025年,使用Linux系统连接GitHub的推荐方式是通过SSH(SecureShell)协议进行身份验证,这种方式不仅安全,还... 目录步骤一:检查并安装 Git步骤二:生成 SSH 密钥步骤三:将 SSH 公钥添加到 github

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻