顾卫杰,王云良,史二颖,钱月霞
(常州机电职业技术学院信息工程系,江苏 常州213164)
基于UML的嵌入式模型设计及应用研究
顾卫杰,王云良,史二颖,钱月霞
(常州机电职业技术学院信息工程系,江苏 常州213164)
为了解决嵌入式软件开发过程复杂,对需求变化等实际问题的应变能力差等问题,在传统的嵌入式软件开发基础上,提出了一种新的开发方法,并给出了基于UML的建模步骤,最后,结合指纹识别系统,完成了嵌入式模型设计,对文章提出的建模方法的可行性进行了验证。
嵌入式系统;开发方法;UML建模
嵌入式系统是以应用为中心,以计算机技术为基础,是软硬件可裁减的,能适应应用系统对功能、可靠性、成本、体积、功耗等综合性严格要求的专用计算机系统。如今,嵌入式系统已被广泛地应用到航空航天、工业控制系统、仿真系统、信息家电等众多领域中,对国民经济产生了越来越重要的影响。然而,嵌入式系统的需求复杂性、不确定性也在不断地提高,系统规模越来越大,给嵌入式软件的开发带来了新的挑战。统计资料显示,有34%的嵌入式软件项目在开发过程中被迫停止,72.7%的软件在产品开发完成时成本已超出预算的50%。目前,尽管有许多工具可用于嵌入式系统的开发,但是在实际的开发过程中嵌入式系统的开发方法仍没有太大的突破,系统的分析抽象和编程开发之间缺少有效的中间步骤,因此研究一种支持嵌入式系统从分析、设计、验证到编码这一整个开发过程的模型系统及建模方法愈显重要。
系统描述的主要任务就是用一种或几种描述语言对目标系统的结构、行为、功能和性能等特征进行抽象描述,这一活动也可称为系统建模,描述语言也可称为建模语言。建模的目的是为了更好地理解系统,目前,在软件设计领域,已成为工业标准的通用建模语言,就是统一建模语言(Unified Modeling Language,UML)。
本文在改进嵌入式系统开发方法的基础上,提出了新的嵌入式系统开发方法,探讨了嵌入式系统的开发步骤,并对指纹识别系统进行了UML建模研究。
“宿主机/目标机”开发模式是利用宿主机上丰富的资源和良好的开发环境开发目标机上的嵌入式软件,然后通过串行口或以太网接口将编译生成的目标代码传输并装载到目标机上,并用交叉调试器在监控程序或操作系统的支持下进行实时分析和调试,最后目标机在特定的环境下运行。无论是哪种方法,目前的开发模式都是基于这种“宿主机/目标机”的,本文拟寻求一种更科学的嵌入式系统开发方法,更好地指导、协同硬件和软件的开发。
该方法和一般软件的开发相同,必须经过分析、设计、编码、测试四个阶段。分析过程定义了软件要解决的问题,设计过程定义了问题的解决方法,编码是对设计部分的具体实现,测试过程可以验证系统是否满足需求,实现是否满足设计[2]。这种传统的嵌入式软件开发方式最大的特点是以源程序的开发和测试为核心的。但是由于嵌入式产品的更新换代较快,因此就要求研发周期尽可能的短,同时在开发过程中能动态地调整需求[3]。
统一软件开发过程RUP(Rational Unified Process)是由提出UML的三位方法学家提出的,它与UML形成了最好的结合。在“初始、细化、构造、移交”四个阶段重用“需求、分析、设计、实现、测试”五个核心工作流程,从最核心的用例开始设计、实现,逐步增加实现的用例数,直到所有的用例都实现为止。RUP定义的开发过程正是表现为一系列系统原型不断迭代和增量的过程。
柔性是用来描述材料性质的一个概念,1980年以来,柔性一词频频出现于管理和机械制造领域的文献中,1990年以后又开始出现在软件工程领域。从技术角度,柔性软件开发方法可以定义为允许或能够对业务过程进行调整或进行其它变更的开发方法[4]。其基本思想为:首先明确用户要求,在此基础上为系统建立模型,通过对模型的模拟运行,分析模型是否满足用户需求和满足的程度。整个建模过程是自顶向下逐层细化的,而模拟修改则由底向上进行,然后在保证模型正确的基础上,进行代码的生成,如下图1所示。
本文结合RUP和柔性软件开发方法的特点,提出一种新的支持UML对嵌入式软件开发的方法。这种基于UML的嵌入式软件开发方法融合了上述两种软件开发模式的优点,我们称之为“迭代增量式柔性开发方法”,即在整个系统开发过程中运用迭代增量的开发思想,而在每个软件版本的开发过程中采用柔性的软件开发模式。由于嵌入式软件的需求复杂性较高,很难一次性确定,因此在开发的初期,并不是将所有的需求都确定,我们先对已确定的需求进行分析,给出系统的模型,通过模拟和修改来获得正确的模型,然后利用正向工程实现代码,最后通过测试结果来验证是否满足用户需求,通过这种柔性开发过程便生成了系统的第一个版本。当有新的需求时,我们按上述步骤重复进行,经过反复迭代,软件开发过程递增向前产生不同版本的软件,直至获得系统的最终版本。这种开发方法很好地支持了软硬件的协同设计;迭代增量的思想更好地适应了用户需求的变化,得到了反馈;模型的模拟和修改可以较早地发现设计阶段的错误,降低了系统开发风险和成本,如图2所示。
软件过程是活动的集合,软件过程可分解为若干个活动。活动与活动之间存在着复杂的时序关系,如同步、异步、串行、并行、反馈等[5]。活动可以理解为特定的开发人员在工具的帮助下,利用已有的软硬件资源产生不同的产品,过程建模就是要对以上元素及其间的关系进行抽象的本质描述。如图3所示,当采用UML建模时,第一步是需求分析,包括识别角色、识别用例,建立角色与用例之间的关系,得到用例图。第二步,用类图描述过程模型中的重要元素之间的静态关系。第三步,描述活动、产品等元素在执行时的时序关系或交互关系,其中动态行为用顺序图和状态图描述。由于已建立的过程模型在过程模型环境的支持下是可执行的,UML描述可转化为代码,通过对过程执行的跟踪和监控,可收集与过程有关的量度参数,对过程进行评价,以便得到反馈信息从而改进过程模型。
本文以“指纹识别系统”的设计为例,利用迭代增量式柔性开发方法,分析嵌入式系统的开发过程,给出整个UML建模过程。
“指纹识别系统”的主要功能为通过指纹的验证来确定用户的身份是否合法,比传统的“用户名”加“口令”的方式更安全,每个人的指纹都是唯一的,不能盗取。
当用户向管理员申请注册时,管理员为用户分配一个ID号,同时将该ID号、用户级别、指纹信息等存入指纹数据库。在数据库中,用户的ID号和指纹图像数据是一一对应的。当用户需要认证时,首先通过数字键盘输入自己的ID号,并按下“确认”按钮,同时在指纹传感器上按下指纹。FLASH中预先存放了合法用户的ID号及指纹数据,因此传感器提取用户的指纹,微处理器登陆指纹库中将具有相同ID号的指纹信息检索出来,与用户提供的指纹信息进行比对。如果匹配成功则表示是合法用户,否则为非法用户。最后,指纹匹配结果提示信息通过液晶屏显示给用户,同时用户每次的出入记录等都会被存储在操作日志中作为历史记录以供查询。
根据前文提出的“迭代增量式柔性开发方法”,我们可以根据需求设计用例,并按优先级进行划分。首先开发的用例应该是用户要求在短时间内实现的,或者是实现其他用例的基础;另外,风险大的用例一般要先开发。然后,我们可以根据用例的优先级制定出下一阶段的迭代计划,需求级别如表1所示。
在本例中,我们可以先开发出满足前两个需求的原型系统,在与客户沟通验证后再实现其他功能,直至完成最终版本,在每个版本的开发过程中,首先建立模型,然后对模型进行模拟分析,并进一步与客户沟通需求,在保证模型正确的基础上,编写代码。
表1 “指纹识别系统”需求级别
构建用例模型的第一步是角色识别,通过角色的识别可以进一步识别用例,从而得到用例模型。对于嵌入式系统来讲,系统本身包括大量的硬件设备,这些硬件都要与系统进行交互,但是它们并不都被识别为角色,对于如何识别我们遵循这样一个原则:如果需求描述中明确指出了关于该硬件的约束,则该硬件应当识别为角色。对于本系统,指纹传感器、LCD、键盘以及指示灯都没有提出任何的约束,而电池的容量则要通过LCD显示。同时电池也不是系统的必要组成部分。综上所述,可以得到该系统的两个角色“用户”和“电池”。其中用户是系统的使用者,分为普通用户和管理员;电池是系统需要应付的外部设备,系统要检测电池的电量,用例图如图4所示。
类图的建立
寻找正确的类和对象是面向对象分析和设计的基础,对象是对现实世界中事物的抽象。首先,要去掉那些与系统无关的事物。其次,要在与系统有关的事物的特征中寻找与系统有关的特征,以建立合适的类。根据分析,本例中应包括“指纹传感器类、微处理器类、存储指纹库的类、数字键盘类、液晶显示屏类以及状态灯类”,如图5所示。
我们在描述系统用例时,是从用户角度出发的,没有涉及系统内部。顺序图是交互图的一种,主要对系统的工作流程做进一步分析,系统从指纹传感器中获取指纹数据,并在微处理器中进行预处理和特征提取,获取指纹的生物代码信息,并与指纹库中注册用户的指纹模板进行匹配算法的验证,通过状态灯显示输出结果。这样,我们就可以得到系统的顺序图了,如图6所示。
活动图是对系统的动态行为建模的四个图之一,它可以看作是状态图的特殊形式,在活动图中一个活动结束后将立即进入下一个活动。图7就是该系统的整体工作流程的具体描述。
下一步,可根据上述UML模型进行系统的详细的后读设计。
随着后PC时代的到来,嵌入式系统软件应用将迅速增长,嵌入式软件开发方法将备受关注,本文提出的“迭代增量式柔性开发方法”综合了传统的开发方法的优点,能够更好地支持UML对嵌入式软件的开发,加强了软硬件的协调开发。下一步的研究工作主要是完善本文提出的开发方法和UML模型的一致性检验研究。
[1]王少锋.面向对象技术UML教程[M].北京:清华大学出版社, 2004:1-17.
[2]尚利宏,熊运鸿.一种基于UML的嵌入式实时应用软件开发环境[J].电子质量(自动化与仪器仪表卷),2001(9):25-30.
[3]刘苗苗.UML在嵌入式软件开发中的研究与应用[D].中国海洋大学,2006.
[4]Nelson Kay M,Nelson H Jame,Ghods M.Proceedings of HICSS97:Technology Flexibility:Conceptualization,Validation, and measurement [C].New York:IEEE Computer Society Press,1997:76-87.
[5]陈建峡.基于UML的分析建模方法[J].湖北工业大学学报, 2005(4).
责任编辑 王荣辉
TP39
A
1674-5787(2010)05-0147-03
2010-08-02
本文系常州机电职业技术学院2010年院级课题资助项目(CZMEC201006)。
顾卫杰(1980—),男,江苏南通人,硕士,常州机电职业技术学院讲师,主要研究方向:软件工程、嵌入式系统。