APP下载

基于SOA的军用测试系统软件开发方法研究

2017-06-07范凯胤王学奇姚鹏唐希浪张景昆

科技与创新 2017年8期
关键词:软件开发

范凯胤 王学奇 姚鹏 唐希浪 张景昆

摘 要:针对网络化条件下,被测对象日益复杂、测试数据难以整合、测试需求变化迅速等问题,提出了一种基于SOA的测试软件开发方法。从业务需求的角度出发,采用业务流程模型详细地分析了测试业务过程,捕获到测试中需要的数据对象和完成的任务。根据业务流程模型,使用面向服务架构建模语言(SoaML),分别从服务框架构建、服务识别和定义、服务实现等几个方面建立了一个测试服务模型。利用Web Service的技术将测试服务模型映射到服务组件,实现了基于SOA的军用测试系统软件。实践表明,基于SOA的测试软件开发方法能够有效解决测试领域面临的问题。

关键词:测试系统;软件开发;服务建模;SoaML

中图分类号:TP311.5 文献标识码:A DOI:10.15913/j.cnki.kjycx.2017.08.017

军用测试系统经历了专用测试系统、积木式测试系统、模块化测试系统和网络化测试系统等4个发展阶段。在网络化的条件下,测试系统能够实现远程测试、诊断和信息共享。但随着被测对象的日益复杂,且产品丰富,测试需求将会更加多变,测试数据也将更加庞大。如何应对迅速变化的测试需求,如何有效整合测试数据,是分布网络环境下的军用测试系统所面临的主要问题。

面向服务的构架(Service-Oriented Architecture,SOA)是包含运行环境、编程模型、架构风格和相关方法论等在内的一整套新的分布式软件系统构造方法和环境。SOA拥有一套统一的标准,使信息高度共享,且不依赖于特定技术、特定平臺,请求者与提供者之间高度解耦。这种松耦合的系统使得软件可以灵活地适应业务需求的变化,且复用性强。将SOA应用在自动测试领域,可以有效地解决测试领域面临的问题。

本文提出了一种基于SOA的测试软件开发方法,从测试业务需求分析、测式软件SOA模型建立、Web Service技术实现等几个实践过程入手,简要介绍了如何构建和开发面向服务的测试软件。这对测试软件开发人员有一定的参考价值。在开发软件的同时,也参考了SPR生物传感检测系统软件的设计与实现,基于uC/OS-Ⅱ操作系统的无人机飞控系统软件设计的一些经验、方法。

1 测试业务需求分析

传统的军用自动测试系统采用的是封闭结构,具有应变能力不足、软件复用和升级难、系统间互操作性不强、故障诊断的效率和准确性低等缺陷,无法适应信息化条件下多军种联合作战对多型装备系统、多级维护的需求。为此,国内外专家提出下一代自动测试系统采用开放的体系结构,以便能够灵活、快速适应需求变化,具有良好的软件可移植性和互操作能力,提高诊断的有效性。同时,这种结构还具备资源管理服务、测试管理服务、诊断服务、运行时服务和测试数据服务等能力。根据这些需求,整个系统的业务结构如图1所示。

测试代理采取Web应用的形式,作为测试人员与系统之间的交互代理,提供用户管理服务和运行时服务,例如用户登录、输入输出、测试报告等。同时,它也作为各服务之间的统筹模块,根据测试人员的输入,协调并请求各服务模块执行相应的动作。测试管理提供测试服务,接收测试代理的测试请求,加载、运行测试项目,调度测试资源,完成测试任务并返回测试结果。测试数据管理提供数据服务,它收集并保存不同测试平台、不同环境下的测试结果,形成一个海量测试数据库,在测试代理的请求下,提供历史测量数据。另外,它作为一个描述信息库,可以保存各类描述文件,需要时可以被测试代理调用。故障诊断中心提供故障诊断和故障预测服务,它拥有丰富的诊断算法和知识库,在测试代理的请求下可以迅速、准确地完成故障诊断或预测,且可以提供有效的维修决策建议。

要想建立一个有效、可靠的SOA模型,需要构建一个业务流程模型,详细分析业务需求。业务流程模型是一种描述和归档业务(或业务的一部分)如何运作(或希望如何运作)的方法,它可捕获必须执行的步骤或任务(包括决策点),执行这些

步骤或任务的实体或角色,以及它们如何交互实现对信息(数据)的处理和共享。构建业务流程模型可以使用业务流程建模符号(Business Process Modeling Notation,BPMN),它包含以下3个关键要素:①通道(Lane)。它表示活动的分组,通常用于表明一组活动均由相同的实体(例如人员或系统)或者角色执行。②任务(Task)。它表示通用活动,仅包含名称和记录。③消息(Message)。也可以将其认为是一个数据对象,表示在一个流程内的2个实体间发送的信息。

根据对业务需求的初步分析,可以构建一个测试业务流程模型(为了使后续建模和程序设计具有可溯性,建模均采用英文),具体如图2所示。

从图2中可以看出,根据使用需求可设置5个通道,分别对应测试人员(Tester)、测试代理(TestAgency)、测试管理(TestManager)、数据管理(DataManager)和诊断中心(DiagnosticCenter)等5个实体,每个实体在一次测试过程中都拥有各自的任务,在任务之间包含着一些信息的传递。采用这种方法,整个测试的业务流程被清晰地展现出来,且各参与者需要在何时完成何任务,数据对象如何流向等信息都会被捕获到,这将为下一步的建模打下坚实的基础。

2 基于SOA的测试软件模型

2.1 SoaML概述

为了建立一个标准的SOA模型,本节将采用SoaML(面向服务架构建模语言)进行建模。SoaML是由OMG(对象管理组织)定义的开源规范,是对UML(统一建模语言)的扩展,它定义了一种符号和元模型来描述面向服务的系统。使用SoaML,可以从2个角度开发服务架构:①自上而下的设计。根据BPMN图定义服务架构,以探索参与者之间的连接方式,而后识别服务、定义服务、实现服务。②自下而上的抽象。服务模型已经存在,需要被抽象为更高层次的描述。这2种设计方法有所差异,但软件的设计通常是一个迭代的过程,所以,2种方法都会在设计中用到。由于篇幅有限,本文将以自上而下的方法为例阐述测试软件的建模过程。

2.2 测试软件服务框架的构建

运用自上而下的设计方法创建服务框架时,必须要考虑参与者之间怎样联系,要试图解决哪些问题。这些已经在业务流程模型中捕捉到了,将BPMN图映射到服务框架如图3所示。

在图3中,5类参与者对应BPMN图中的5个通道,参与者之间通过服务契约进行绑定。例如,测试代理与测试管理之间就是通过名为测试执行(TestExcute)的契约绑定的。服务契约实际上反映了2个参与者(服务提供者和服务请求者)之间的交互活动,它将定义一系列协议,规定消费者与提供者之间的活动在何时、何地,以何顺序进行。例如,在系统运行时,管理(RunTimeManage)契约可以用时序图描述,如图4所示。

图4清晰地描述了测试代理和测试管理这2种角色之间的活动契约。测试代理作为一种逻辑上的角色,任何参与者(例如测试站、生产方、研究所等)都可以扮演测试代理这种角色,只需要遵循图4所示的活动契约,就可以调用测试管理所提供的服务接口实现加载项目、卸载项目、启动测试、获取测试结果等功能。

2.3 测试软件的服务识别和定义

服务识别和定义是整个建模过程中最关键的一步,它实际上就是要以业务需求为驱动,找出并定义参与者需要提供或消费的服务。在BPMN图中可以清晰地看到每个参与者均需完成一系列的任务,这些任务实际上就是该参与者所应具备的能力,而服务接口的职责就是要暴露这些能力。下面,以参与者测试管理的测试服务为例加以说明。从BPMN图中可以明确TestManger通道中所有的任务映射为保证测试管理顺利进行而应具备的能力,作为候选服务,有些操作是测试管理内部完成的,例如运行测试动作(Run Test Action)和驱动仪器(Drive Instrument)等,这样的操作无需作为服务供外部调用,可将其删除,再根据之前构建的服务框架定义好服务接口,具体如图5所示。

在定义服务接口时,还需完成另一个重要的任务,即定义服务操作的输入输出参数,例如加载测试项目和卸载测试项目需要以测试项目描述作为输入参数,生成测试结果以测试结果作为输出参数。这些参数类型应当具有统一的标准,以便实现信息共享。在测试领域,ATML(Automatic Test Markup language,自动测试标记语言)是基于XML(Extensible Markup Language,可扩展标记语言)的数据交换标准,它定义了一个描述,比如测试项目、测试资产、被测对象、测试数据等测试信息的XML模式集合。所以,在服务定义中,操作的输入或输出参数实质上是加载或生成的ATML文件,使测试信息高度共享,从而解决了测试数据难以整合的问题。

2.4 测试软件的服务实现

参与者是实现服务的实体,这些参与者之间的服务和消费关系可以通过服务通道来连接,具体如图6所示。

图6反映了所有参与者之间的服务关系,但这些参与者都是大颗粒的,它们只能够在顶层上描述整个测试服务体系,而在程序的实现上需要作进一步的分解。例如,TestManager(测试管理)可以被分解为TestProjectManager(测试项目管理)、TestProcessManager(测试过程管理)和TestResourceManager(测试资源管理)等3个参与者,所以,在参与者层级又可以按照同样的方法构建一个新的服务框架。由于方法一致,这里不再赘述。

3 基于SOA的测试软件实现

从技术层面上来看,实现SOA的方法有多种,而Web Service(Web服务)是其中最主流的实现方案。Web 服务作为功能实現体,向外界暴露能通过Web调用的API,而这些API都采用WSDL(Web Services Definition Language,Web 服务描述语言)进行描述,并使用SOAP(Simple Object Access Protocol,简单对象访问协议)进行数据交换,这些标准都是统一、开放的,与平台无关。

开发Web服务的平台也有多种,例如JAVA的J2EE平台和微软的.NET平台,开发者可以采用自己比较熟悉的平台开发。但随着.NET技术的日益成熟,以及测试行业标准对.NET的支持(例如IVI驱动定义了IVI.NET),基于.NET平台开发军用测试系统软件将成为测试领域的一种趋势。

技术上实现SOA的过程实际上就是从SOA模型到服务组件的映射过程。有的开发工具能够自动完成这个映射过程,例如IBM公司的Rational Software Architect就能根据SoaML自动创建SCA(Service Component Architect,服务组件架构)工件,而且能够生成主干源代码,开发人员只需扩充源代码实现功能即可。将Microsoft Visual Studio.net作为编程环境创建Web Service时,可将测试服务模型(服务定义)映射到(或采用工具自动映射到)服务组件,并编写代码,实现服务功能。图7表述的是参与者测试管理实现测试服务的Web Service。

图7展示了测试管理所提供的Web服务,这些服务接口与平台无关,任何一个消费者只要按照服务契约均可调用图7中的服务接口。这样做,可以大幅提高测试软件的可重用性和可移植性。另外,测试管理提供的测试服务与其他参与者提供的服务没有任何耦合关系,当一个服务需要升级时,并不会影响其他服务的工作。例如,诊断管理中心需添加新的诊断算法,暂时停止诊断服务,但它并不会影响测试代理请求测试管理的服务,因而使测试软件能够敏捷地应对需求的更新和测试系统的升级。

4 结束语

本文从测试业务需求分析、测试服务建模、测试服务实现等几个方面入手,研究了SOA在测试领域的实践方法。使用该方法能够克服传统测试软件复用升级难、数据整合效率低和应变能力不足等缺陷。基于SOA的测试软件将为大数据和云计算在测试领域的应用创造机会,而如何治理已经实现的测试服务软件,实现云测试和大数据故障预测将是下一步需要解决的关键问题。

参考文献

[1]肖明清,胡雷刚.自动测试系统概论[M].北京:国防工业出版社,2012.

[2]毛新生.SOA原理·方法·实践[M].北京:电子工业出版社,2007.

[3]ZHAO Xin,XIAO Ming-qing.Research on the TPS Development based on SOA.2009 IEEE AUTOTESTCON Proceedings. California,2011:151-154.

[4]IBM developerWroks.Design and develop a more effective SOA[EB/OL].[2011-05-02].http://www.ibm.com/

developerworks/library/ws-designsoapart1/index.html.

[5]方江雄,何红波,李义兵.基于SOA和BPM的ERP系统的研究与实现[J].计算机应用,2007,27(5):1264-1267.

[6]杨军,吴松,李圆怡,等.SPR生物传感检测系统软件的设计与实现[J].传感器与微系统,2010,29(6):95-97.

[7]史峰,何立明,马晓峰,等.基于uC/OS-Ⅱ操作系统的无人机飞控系统软件设计[J].传感器与微系统,2008,27(4):94-96.

本文部分参考文献因著录项目不全被删除。

〔编辑:白洁〕

猜你喜欢

软件开发
基于安卓平台的移动式教学模式研究
软件开发中JAVA编程语言的应用
信息安全环境下的计算机软件开发研究
核电厂定期试验管理软件开发
FPGA软件开发过程中编码规范的作用