赵冠楠++蒲阳
摘要:本文首先简要介绍了自动测试系统及其通用化设计的背景,UML的主要特点和用途,面向对象构框架的概念和基本含义。深入分析自动测试系统通用化设计的基本框架、功能构成和工作原理,利用UML的固有优势对自动测试系统模型进行图形化表达,搭建通用化自动测试系统的元模型框架。本文通过UML中的用例图来进行通用化自动测试系统的需求分析,利用类图和顺序图对系统的静态及动态模型进行图形化描述。自动测试系统的通用化设计可以有效增强系统的维护性和扩展性,提高软件复用能力,提升系统的软件开发效率,避免了重新二次开发ATS软件带来的可靠性差、占用研制资源多、时间周期长的缺陷。
关键词:通用化自动测试系统 标准建模语言 图形化建模
中图分类号:TP311.52 文献标识码:A 文章编号:1007-9416(2014)12-0060-03
ATS通常由自动测试设备(ATE)、测试程序集(TPS)和TPS软件开发工具三部分组成。ATS由20世纪50年代发展至今,已经历了第一代专用测试系统、第二代积木式自动测试系统和第三代模块化自动测试系统,目前下一代(NxTest)ATS正在开发当中。虽然开发ATS的最初目的是为军事作战所需,但是随着计算机技术和测量技术的发展,ATS广泛应用于工业生产、民航、环境试验等多个领域和场合。
早期的ATS维修费用高,各种ATS之间无通用性、TPS无法移植,系统升级时原有软件功能模块不能使用,软件开发周期长并且造成很大的浪费。90年代以来,ATS的开发逐步聚焦于ATS的通用性上来,采用共同的硬件平台,软件的框架或模块可以复用。采用面向对象技术是目前可以获得最大粒度软件复用的方式。
UML正是面向对象技术发展到比较繁荣阶段时的产物。UML的主要作用是帮助用户对软件系统进行面向对象的描述和建模,它可以描述软件开发从需求分析到实现和测试的全过程[1],并且在建模中提供跟踪机制。软件设计师常常需要在很短的时间内了解领域知识,使用UML会帮助软件设计师在建造ATS软件框架中理解模型,把握系统的全貌和部件之间的联系,防止过早地陷入各个模块细节中去,有利于提高软件的质量,缩短研制周期和降低费用。
1 UML与面向对象框架
标准建模语言(Unified Modeling Language,UML)为面向对象软件设计提供统一的、标准的、可视化的建模语言。UML是Rational公司的Grady Booch、James Rumbaugh和Ivar Jacobson三位面向对象技术专家多年研究的成果。它能让系统构造者用标准的、易于理解的方式建立起能够表达出他们想象力的系统蓝图,并且提供一种机制,以便于不同的人之间有效的共享和交流设计结果。[3]
UML由类图、对象图、用例图、状态图、顺序图、活动图、协作图、状态图、构件图和部署图九类图构成。此外,UML有四种可应用于视图中各元素的公开机制,它们分别是:详述、修饰、通用划分和扩展机制。其中,扩展机制由构造型(stereotype)、标记值(tagged value)和约束(constraint)组成,它们分别是UML词汇、元素特性和语义的扩展,使得UML更好地适应各个领域的特殊需求。特别是利用UML面向对象开发框架实现了自动测试领域的体系结构设计复用。
面向对象框架的定义有很多种,大多数人认同以下定义:框架是一种软件重用技术,它是一个应用软件系统的整体或部分的可重用设计,表现为一组抽象类及其实例之间的相互作用方式。[4]面向对象框架是特定领域应用软件的半成品,定义了领域应用的主要的体系结构,强调了更具有软件生产力意义的设计复用。[4]面向对象框架的设计不仅要实现过去类库和函数库这样的代码复用或模块复用,而且要重用相似的分析设计和体系结构。其开发的过程主要包括:对领域进行分析抽象,建立领域元模型;采用设计模式,对框架进行UML表达;框架实例化;框架测试等。
2 自动测试系统的需求分析
设计一个复杂的系统,首先要分析此系统需要做什么工作,从而提出目标,这在软件工程中就是进行需求分析的过程。今天的通用自动测试系统与早期的专用型自动测试系统相比,很重要的一个特征就是仪器和设备的模块化。经过对自动测试系统大量研究笔者发现,自动测试系统通常包含以下功能模块:系统配置、资源管理、日志信息管理、仪器驱动、数据采集和测量、数据的分析和处理、故障诊断等。需求分析是系统开发的基础,因此必须用有效的方法对软件需求进行准确的分析。UML语言中的用例图就是对系统进行需求分析的一个强有力的工具。用例图是从用户角度而非设计开发者的角度来描述系统的功能,并不考虑如何实现。用例图中的参与者(Actor)是测试系统外部与系统相交互的人或事物,它代表“谁来做”。用例(Use Case)是由系统提供的外部可见的功能单元,它由参与者发起,代表“做什么”。
图1为通用自动测试系统的主用例图。参与者Operator是与系统交互的用户或操作者,发起日志信息管理、测试系统管理等用例,被测对象(UUT)和数据库(Database)是与系统交互的物。UUT主要接受系统对其激励,并且做出响应、生成数据为测试系统所采集并加以分析处理。通用测试系统需要大量的数据存储和读写工作,为了更好地实现通用性和可维护性,采用数据库技术以方便数据的管理,将软件应用程序和测试数据分开。测试系统可以有许多种类的数据库,如操作者要通过系统进行日志管理,用到日志信息数据库;系统在测试过程中还要用到UUT库、测试流程数据库、测试结果数据库;系统中分析处理数据时还要用到故障诊断数据库等等。
3 自动测试系统的静态建模
UML的静态视图用于为软件系统进行结构建模,它构造系统的词汇和关系。而结构模型的可视化就是通过类图来实现的。类图(class diagram)是描述类、接口、协作、以及它们之间关系的图。类图不仅适用广泛而且也属于最大范围的建模概念。一个类图表述系统中各个对象的类型以及其间存在的各种静态关系,也可以表明类中的特性和操作以及用于对象连接方式的约束,如关联(指明一个事物的对象与另一个事物的对象间的联系)、依赖(一个类的变化对于依赖它的类的影响)、泛化(一种特殊/一般的关系,也可以看作继承关系)等。类图是以类为中心来组织的,类图中的其他元素或属于某个类或与类相关联。
3.1 通用自动测试系统元模型
基于前文对通用自动测试系统的需求分析,可以得知此系统需要做什么,建立UML的静态视图就是要解决如何实现这些系统功能。根据对自动测试领域的分析和面向对象设计原则,可以识别并抽象出出领域中的主要对象实体,再分析和定义这些对象实体之间的关系,从而建立起ATS的元模型,元模型包含元类(metaclass)和元关系(metarelationship)。通过分析ATS的体系结构,可以得到ATS元模型,如图2所示。
图中包含以下几个主要的元类:UUT类,定义了被测对象的类型、键号、状态等信息;Instrument类,抽象仪器类,定义了仪器的类型、配置、操作方法等,可以通过继承得到具体的测试仪器;Measurement类,测量类,从仪器中读取测量数据,并进行格式转换、换算、修正等;Test类,测试任务的抽象类,可通过继承创建具体测试任务,主要用于对测量到的数据进行分析处理;ReferenceCriteria,仪器输入输出数据的参考标准类,定义了信号采集系统和测试仪器的灵敏度、动态范围[4];supervisor类,管理类,负责资源配置、测试任务的执行等;UserInterface类,用户接口类,主要用于提供人机交互的界面;Operator类,对测试操作者的信息建立的类。系统建模时,UML各个视图中出现的对象,在类图中都必须有所定义。
3.2 主体框架的实现
元模型中的元类没有具体定义属性和方法,基于元模型进行通用自动测试系统框架开发时,可以根据领域需求适当添加或删减类、并定义属性和方法。通用自动测试系统可以根据具体的测试任务、测量方法将框架的各个对象结构进一步细化,并转化成面向对象编程语言。如图2中的UUT、Instrument、Test等类在进行框架开发时都需要通过继承获得具体的、与问题域相关的子类。图3为测量类在组成某一具体测量系统是被扩展为的一个对象模型,可以分为电压测量、电流测量和频率测量。这些主体框架可通过Rational Ros软件转化成VC++或其他语言的代码,通过这种方法可逐步实现自动测试系统的各种功能。
4 自动测试系统的动态建模
在建立起系统静态模型的基础之后,需要对ATS的动态行为进行分析和建模。由于类图只描述了系统各个对象实体及其之间的静态结构,对于分析各对象实体在测试系统中如何各司其职,随着时间的变化它们的行为如何变化,就要建立相应的动态模型。
在UML中主要用顺序图来描述系统的动态行为顺序。系统中参与交互的对象实体有序排列在顺序图顶端,每个对象底部的虚线是生命线,从一个对象的生命线到另一个对象生命线的箭头是对消息建模,箭头按时间顺序在图中从上到下排列。当执行一个用例行为时,顺序图中的每条消息对应了一个类操作或引起对象实体状态转换的触发事件。消息序列是顺序图中不可或缺的一部分,它描述消息是在哪些对象间按何种顺序发送和接收的。浏览顺序图的方法是:从上到下按消息符号的顺序查看对象间交换的消息。
顺序图中每个对象在类图中应当均有定义。图4为通用自动测试系统中主要对象之间交互的顺序图。操作者Operator发送操作消息给UserInterface(用户界面)对象,用户界面根据操作完成系统配置,并且给Test对象发送消息控制测试任务的执行。Test对象创建测试任务,发送消息给测量对象Measurement以获取测量值。仪器对象接到测量对象发来的消息coupling后,发送消息给Coupling对象,要求其读取UUT信息。Coupling获得UUT对象的响应后,将UUT信息返回给仪器对象。仪器对象获得测量值后,将测量值返回给测量对象。测量对象将数据进行分析处理,再返回到主界面上,用户可根据需要进行读、储存、打印等操作。图4只是简单描述了测试系统的一个典型的动态测试过程,在描述具体复杂系统的动态行为时,可根据需要进一步描述和扩展。
5 结语
本文充分采用面向对象元模型的方法,建立了通用自动测试系统的框架模型。通过UML的几种视图,对系统的功能需求、静态结构、动态结构进行可视化图形建模,该模型在Rational Rose的环境中生成。面向对象的模型具有较高的抽象性,使用框架开发的技术根据需要进行扩展或剪裁,可快速创建成各种测试系统。该测试系统模型具有良好的通用性,并且减少了大量的重复性工作,提高了软件的复用性和开发的效率。
参考文献
[1]吴建,郑潮,汪杰.UML基础与Rose建模案例[M].北京:人民邮电出版社,2004.10:2~5.
[2]杨晶.基于UML状态图的自动化测试框架研究与实现[D].华东理工大学,2010.
[3]Joesph Schmuller.Sams Teach Yourself UML in 24 Hours[M]. Third Edition.Sams Publishing,2004.
[4]徐小良,汪乐宇,周泓.自动测试系统的对象框架[J].浙江大学学报(工学版),2004,38(1).
[5]李传煌,王伟明,施银燕.一种UML软件架构性能预测方法及其自动化研究[J].软件学报,2012.7.
[6]王晓宇,钱红兵.基于UML类图和顺序图的C++代码自动生成方法的研究[J].计算机应用与软件,2013.1.