一种基于UML的嵌入式系统可视化开发方法
扫描二维码
随时随地手机看文章
1 引言
随着信息产业和微电子技术的发展,嵌入式系统的功能日渐强大,结构也愈加复杂,传统的嵌入式开发方法已不能满足开发要求,人们开始尝试用一些形式化的开发方法进行开发。一种适合于嵌入式系统的形式化开发方法,不仅能缩短嵌入式系统开发的周期,还能减少开发成本,提高系统质量。本文结合统一建模语言UML,提出一种嵌入式系统可视化开发方法,并将其实际运用到了嵌入式远程温度监控系统的开发过程中,验证了该方法的可行性和有效性。
2 基于UML 的嵌入式系统可视化开发方法
2.1 统一建模语言UML
UML(Unified Modeling Language) 是一种定义良好、易于表达、功能强大且普遍适用的面向对象和基于构件的系统建模语言。它扩展了现有方法的应用范围,不仅可建立软件系统的模型,还可建立非软件系统的模型,可广泛用于描述系统软件、嵌入式系统、企业机构或业务过程等。 UML由图、视图、模型元素、通用机制和扩展机制等几个部分组成。其中图是UML建模的关键,根据图在系统开发过程中不同阶段的应用,可以分为用例图、静态图、行为图、交互图、实现图等五类,这些图为系统的开发提供了多种图形表达形式,应用于建模的不同阶段。
2.2 将UML 语言应用于嵌入式系统开发的优势
随着嵌入式系统的日趋复杂化,较多的系统都需要由一个团队共同完成,因此,团队成员之间的相互合作,软硬件之间的协同开发,乃至开发人员和客户之间的交流都需要有一个统一的标准作为基础。UML正是这样一种标准的系统建模语言。它详细描述系统的内容和工作方法,先进行系统建模后再编写代码,在开始阶段就保证了系统结构的合理性。UML系统模型包含许多不同框图,使项目小组可以从不同角度了解整个系统。另外,UML可以用统一的形式表现软件和硬件,支持循环迭代并可多次修改软硬件方案直到满足要求,可实现软硬件协同设计。 特别的,UML是一种语言,不是方法,它独立于开发过程 [3] ,所以我们可以结合UML语言提出一套针对嵌入式系统的开发过程,从而为嵌入式系统的开发提供一条新的途径。
2.3 基于UML 的嵌入式系统可视化开发方法
文中提出的基于UML的嵌入式系统开发方法支持需求、分析、设计、实现、测试的循环迭代,使用面向对象思想,通过细化分析和设计阶段的步骤,使得整个过程更有条理、充实,更适合于多任务的嵌入式系统开发。方法的需求、分析、设计过程被细化后分别包括了以下几个步骤:
需求阶段明确了系统所要实现的功能以及所要达到的性能,是整个系统开发的目标。
功能性需求:明确系统应该提供什么功能。
非功能性需求:明确系统的特定特性或者约束。
分析阶段主要是精化和结构化需求,清楚地描述系统内部,是设计阶段的基础。分为两个步骤:
系统架构分析:运用面向对象技术描述系统的静态结构。
系统行为分析:从动态的角度描述系统的对象间相互作用的特性。
设计阶段是在对系统各方面有了解的基础上来确定特定的解决方案。分为两个步骤:
分层结构设计:确定了具体实现时软件和硬件的最佳分界。
详细设计:在软件方面是深入到了系统低层信息,如操作的属性、类的流程等;硬件方面则是到了设计具体电路板的阶段。
本方法利用面向对象的概念将系统分成了相互关联却又较独立的模块,一方面方便了系统开发时的迭代过程以及系统的后期维护,设计人员可以根据不同的新的需要对各个步骤中相应部分进行调整来实现改进,这样就可以大量减少重复分析或设计的过程;另一方面,对象概念可以和嵌入式系统中的任务概念很好的映射起来。任务可看成是由一个或多个对象协作而成的,在分析、设计过程中确立对象的同时也就确定了系统的多个任务,为嵌入式系统的多任务特性提供了很好的支持。[!--empirenews.page--]
本文后续部分将以嵌入式远程温度监控系统为例,简单阐述和验证此方法。
3 系统需求
3.1 功能性需求
功能性需求是系统功能的陈述。在UML中是应用用例图来描述系统功能的。如图1所示,系统大致由下述几个角色和用例组成:
三个角色:数字式测温仪,Internet远端用户,本地用户。
五个用例:当前温度信息显示、更改最高警戒温度、更改最低警戒温度、修改测温仪工作状态以及登陆服务器(身份验证)。
以上的各个用例只是对系统功能的大致划分,主要目的是为后面的系统分析作基础。
3.2 非功能性需求
非功能性需求是系统的特定特性。本系统的非功能性需求是:
温度测量范围要求0-400℃,显示精度 为0.2℃。
在工业现场,远程监控系统对数字式测温仪实现无线监控。
远程监控系统为Internet远端用户提供统一开放的平台,
远程监控系统每秒自动更新提供给用户的温度信息。
远程监控系统也为本地用户提供友好的人机交互界面。
可以看出,这些非功能性需求为确定系统的结构和系统选用的技术等进行了约束。
4 系统分析
在系统分析阶段,通过细化和结构化系统需求,可将系统需求转换成系统中的结构、类、对象和关系等实体元素,并从静态和动态两个角度来清楚描述这些实体元素。
4.1 系统结构分析
系统结构分析是对系统元素静态的描述,它在系统需求的基础上确定系统的总体架构及内部对象。
首先用部署图来描述系统的物理架构,如图2所示,其中带有阴影的为处理器,未带有阴影的是外部设备;系统采用了目前远程监控系统中比较流行的浏览器/服务器模式(B/S)。这样系统的4个功能用例都将主要由嵌入式Web服务器实现。此外,根据非功能性需求中的无线监控约束,在工控现场,运用了蓝牙技术。
图 2 部署图[!--empirenews.page--]
然后用类图来描述系统静态的对象结构及其相互关系。从用例图(图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协议栈也就将在软件层中描述而不在硬件层中出现。[!--empirenews.page--]
图 4 部署图
这里用部署图描述的系统硬件层(如图4),它将类图中的数据处理对象,即软件层中的操作系统所具有的任务映射到了处理器的各个线程,并且还设置了每个线程的优先级。而蓝牙模块所带的操作:蓝牙底层协议,表示蓝牙底层协议是由蓝牙模块硬件实现的。系统的软件层也可以通过组件图来描述。
5.2 详细设计
详细设计是一次循环中需求、分析、设计的最后一步,指定了细节问题,明确了单个对象的范围、内数据结构和算法的实现等。
先前已对类的属性和操作作了定义,而在详细设计中,为了编写代码,必须对每个类中定义的操作的各个属性(包括它的类型和初始值等)填补完整。因为此时的类图是为软件编程准备的,所以应根据体系结构设计过程中组件图的内容重新进行整理,保留并细化由软件实现的所有类。完整的类图如图5所示。
图5 细化类图
依照这些类的行为流程图,在编程阶段就可以容易的实现代码,并且由于有了统一的设计决策, 即使是由不同的编程人员编写,最后的代码体现出的思路都是大同小异的,也方便非开发人员了解 和维护系统。
6 结束语
通过对UML语言的分析,文中提出了一种基于UML的嵌入式系统可视化开发方法,并实际应用到嵌入式远程温度监控系统的开发过程中。此方法面向对象,步骤清晰流畅,并全部由UML的统一标准符号加以描述,有效的提高了系统的开发效率,也有利于系统以后的维护和升级。