UML在指纹门禁系统开发中的应用
扫描二维码
随时随地手机看文章
嵌入式系统的开发是一个软硬件协同设计过程,它需要不同技术背景的人共同开发.而传统的嵌入式软件分析与设计方法严重脱节,开发过程没有—个确定的统一的标准,这使得产品形成的每一个过程人为因素影响严重.此外,分析设计的结果不能在开发类似项目或产品时重用.以上几个问题成为多年来制约嵌入式系统发展的主要瓶颈,使得大部分嵌入式软件的开发工作变得十分困难甚至无法进行.
作为面向对象建模技术的标准,UML适合于将复杂的系统设计问题简单化.它采用面向对象图形的方式对系统进行描述,支持从分析、设计到建模的全过程.按照UML规范,使用CASE工具Rational Rose对嵌入式系统建模,不仅可以使系统分析设计实现标准化,而且将UML分析建模的构建方法和相应的集成和测试策略结合在一起,完全可以实现系统分析、设计和制作、测试分别由不同的项目成员在统一、一贯的方式下完成,这将会使高质量的嵌入式系统的开发变得更为容易.
1 指纹门禁系统需求分析
目前,将指纹识别技术应用到各种需要身份验证的系统或者嵌入到原有的大量保安系统,会大大提高系统的安全性和便捷性.本文中,设计了一个嵌入式指纹门禁系统,它使用指纹识别技术来验证用户身份,并提供了一套完整的软硬件来实现门禁系统的日常管理.主要包括:用户信息注册、删除、查询、指纹比对、门禁控制和监视以及日志管理等.
针对嵌入式指纹门禁系统的复杂性,在本系统的开发中,按照UML规范,采用基于UML的嵌入式软件分析与建模方法,使用CASE工具 Rational R0 绘制了各种模型图,从不同的层次和角度为系统的分析、设计、验证以及实现过程提供支持,详细讨论了如何使用UML辅助完成整个系统的开发.
1.1 系统功能需求
建模过程首先应该从系统中的类开始,为了理解类的结构,需要对系统及其工作过程做一个总体陈述.经分析,该系统包含一个电动门、一个指纹传感器、一个微处理器、一个存储指纹库的存储系统、一个数字键盘、一个十字型按键、一个液晶显示屏、一个电动门以及两个状态灯.系统从指纹传感器中获取指纹数据,并在微处理器中进行预处理和特征提取,获取指纹的生物代码信息,并与指纹库中注册用户的指纹模板进行匹配算法的验证,并输出结果,通过状态灯显示,同时根据匹配结果发送控制信号控制门的开关.通过对系统及类做进一步分析可得到系统总的类图如图1所示.通过这幅图我们可以得知系统中所包含的基础类及其相互之间的关系,为后文动态模型的建立奠定了基础.
图1 指纹门禁系统类图
1.2 用例说明
通过对系统的需求分析,我们确定了该系统需要实现的功能.那么如何形象化地描述这些功能,以便使我们更好地与用户沟通,更准确地了解他们的需求呢?这就要使用UML的用例模型.在UML中,用例可以被描述为参与者与系统之间的一次交互作用.每一个用例都是一种不同的使用系统的方法,都会产生不同的结果.而角色是与系统交互的对象,它是使用该系统的人或者其它系统.用例图列出了用户最想要的功能以及每个功能的描述.经分析,本系统的用例图如图2所示.
图2 指纹门禁系统用例图
从图中我们可以明确地了解到系统的功能需求.该系统主要有两类用户:普通用户和管理员.“启动系统”用例表明系统初始化时要进行传感器和微处理器等的自检.进入正常工作状态以后,普通用户可以通过“身份验证”用例进行指纹验证.如果是未注册用户则在获得合法II)的前提条件下,通过“注册”用例注册自己的相关信息.系统提供的“开/关门”用例则主要是根据指纹匹配结果,通过信号线将控制信号传输给门的驱动电动机以此来控制门的开关.管理员主要负责系统维护,可以使用 “注册”、“查找”和“删除”等用例进行信息管理操作.由于在该阶段我们对系统还没有充分理解,同时为了控制用例的数目,在这里我们只是给出了系统的总体用例模型,在随后的详细设计阶段我们可以对这些用例进行进一步的细化以精化系统的需求.
2 指纹门禁系统设计
需求分析完成以后,可以依据分析结果和所建立的模型图进一步指导系统的设计.系统设计主要包括了用例详细设计、类设计、数据模型设计等.
2.1 用例详细设计
详细设计阶段需要对系统需求中的每个用例进行详细的分析,并以一种通用的表示来文档化,以便使开发人员更清晰得了解每个用例的具体实现过程 [5].本文以指纹验证用例为实例,对该用例进行更进一步的详细分析,它包含了指纹采集、预处理、图像增强、细化、二值化处理、特征码提取、比对、结果输出等过程,这些过程都可以通过文档清晰地表示.我们在描述系统用例时,是从用户角度出发的,没有涉及系统内部.通过分析得到满足系统需求的类之后,便可根据用例驱动的思想,通过类之间的交互来实现用例.嵌入式系统一般都要与硬件设备如传感器等进行交互,同时还有很强的时间和内存空间的约束.交互图就是用来描述对象间的动态交互行为的,它一步步地显示了使用案例的流程.在UML中定义了两种交互框图:顺序图和合作图.这两种框图显示同一信息,但组织方式不同.顺序图按时间排序,依次显示对象间进行的操作;合作图则以数据流为中心,显示各个对象间的数据交换情况.由于顺序图能更好地说明对象间的交互顺序,有利于我们理解系统,所以本文以“指纹验证”用例的顺序图(见图3)为例来描述对象之间的交互过程.其它用例都可以采用此种方法来详细说明,以便我们更清晰地了解系统每个功能(用例)的具体实现过程.
图3 指纹验证用例顺序图
2.2 类设计
UML规范按照类职责不同将系统设计类分为边界类、实体类和控制类.其中实体类是系统运行的数据基础类,也是类设计的核心部分.按照RUP的思想,采用名词分析法对系统需求进行分析,便可以得到大部分的实体类.对于指纹门禁系统而言,指纹信息数据是系统的核心数据,同时,一些相关的管理信息也是实体类的组成部分,主要有用户信息、系统13志等等.在这里我们只对系统中两个主要类进行分析,如下表格1,2所示.
表1 指纹图象FingerImage实体类
表2 指纹特征Fingerfeature实体类
2.3 数据库模型设计
完成实体类的分析与设计之后,可建立其数据库模型.在本系统中采用Pc机与嵌入式处理器之间的通信来管理相应的数据,因此PC机上数据管理系统的数据库模型设计如下图4所示.数据库表组成包括注册用户管理、被鉴定人信息、指纹特征数据和日志管理,数据库中表结构字段的描述与上文实体类成员变量的结构是相对应的.例如:注册用户信息由RegisterUsers表组织,设置的字段有:用户ID、姓名、用户级别等;指纹图像数据表Fin- gerimage设置的字段有:图像名称、图像保存路径、
图像特征数、图像宽度、高度等;指纹特征数据表FingerFeature设置的字段有:ID、注册用户指纹特征、被鉴定人指纹特征、指纹特征数等,完全可以满足系统的需求.图中其它各表的详细数据项描述可根据实际的需要来设计,在此不作过多举例说明.各个表间的连线表示数据表约束,例如: RegisterUs-ers表和Worklog表之间的对应关系为一个注册用户可以对应多条日志记录.同时,RegisterUsers表的主键用户 ID)是表WoALog的外键,图中其他依赖关系表示含义相同.
3 指纹门禁系统实现与集成测试
通过反复迭代上述建模及模型验证过程,便可建立起整个系统的正确模型.建模工作流完成以后便是系统的实现阶段,此阶段主要进行下列工作:
(1)实现平台的选择
①硬件的设计与实现
本系统硬件平台采用SAMSUNG公司的S3C2410开发板设计实现,CPU采用,S3C2410A ARM920T.
②系统软件的设计与实现
ARM应用软件的开发需要交叉编译环境,而在Windows平台下常用的ARM SDT调试器提供了一个集成开发环境]DE,可以在一台Pc机上完成编辑、编译、链接、下载和调试等工作.开发工具安装之后,可以用ARM Project Manager来生成一个自己的工程,并在ARM Debuggefor Windows下进行调试.因此,本系统的指纹图像处理及匹配算法采用VC语言在IDE中实现。在系统编码中,已成熟的指纹处理算法为系统的设计奠定了良好的基础。
图4 数据库模型设计
(2)软件编码
建模的最终目的是为了得到可执行的代码,因此在系统实现中很重要的一部分是软件编码.为此,在实现阶段,需要选择某种面向对象的编程语言来完成代码部分的实现.本系统所有软件代码我采用vC语言在IDE中实现,数据库采用SQL Server2000.由于本文中系统采用满足UML规范的建模工具Rational Rose2003,可以很好地支持正,逆向工程,通过对类和对象的详细设计中的规范说明信息,由代码生成器可自动生成可执行的代码框架,开发人员在此基础上对代码进行修改大大提高了代码编辑效率.
系统实现之后,在集成测试时可联合使用所有的UML框图认真分析每个构件的原理,针对每一个系统功能每一个可能发生的错误写出相应的测试程序,进行完整而可靠的测试.
4 小结
本文详细介绍了UML软件分析与建模技术在— 个嵌入式系统开发中的应用,使用Rose建立了该系统的完整模型,通过模型的建立对基于UML的嵌入式软件开发方法进行了一些探索和研究.通过该实例的开发,定性地说明了UML的优点以及它对嵌入式软件开发所能起到的良好的指导作用.但由于UML过于庞大和复杂,不同建模工具对该语言的侧重方面也有所不同,本文是使用了Rational Rose2003完成了所有模型的设计,因此,所建模型在抽象层次等方面还存在一定不足,有待于进一步验证准确性及完整性.在实际开发中可考虑使用多种建模工具对所建模型进行比较,以精化、细化模型,从中选择最优模型来改进系统设计方案.此外,在以后的开发实践中,开发环境应该选择能够支持直接的可执行的模型生成,并且支持基于实时框架的代码生成,从而解决嵌入式软件的可移植性问题.