《武汉工程大学学报》  2015年04期 51-55   出版日期:2015-04-30   ISSN:1674-2869   CN:42-1779/TQ
目标模型中目标关系的自动发现


0  引 言面向目标的需求分析方法是需求获取和组织的重要方法之一.在面向目标的需求分析方法中,使用目标来判断系统需求是否完整[1].如果需求描述能满足目标,则说明该需求是完整,否则,需求不是完整的.在需求工程领域,有很多面向目标的分析方法.最常见的两个目标分析方法是KAOS方法[2]和 I*框架[3].除了这两个方法,近年来出现了GONFR[4], Goal Process Requirement Net框架[5],Hierarchical Goal Model [6]等目标方法.这些目标方法首先从需求文档中提取出初始目标,然后对初始目标进行细化和抽象,最后构建成目标模型.随着面向目标需求分析方法的发展,面向目标的需求分析方法越来越被重视.为了在需求的后续阶段更方便的使用目标模型,如何存储目标模型和获取目标模型中的目标关系成为关键问题. EXtensible Markup Language(XML)是一套定义语义标记的规范,可以定义与特定领域有关的结构化标记[7]. XML Schema是一种定义和检验XML文件格式的模式. XPath和XQuery是标准的XML文件查询语言[8-9],用来描述选择XML文档元素的要求. 针对需求阶段的层次目标模型存储及目标关系发现问题,本文在分析目标模型[6,10]的基础上,使用XML文件存储需求阶段的目标模型,实现了目标模型中目标关系的自动发现. 1 目标模型文献[6]提出了一种层次目标模型,并给出了目标模型以及其形式化定义,该目标模型的最大特点是层次性,如图1所示[6]. 在该目标模型图中,功能性目标对应需求中的功能需求,包括业务目标、用户目标和原子目标. 最高层次的目标称为业务目标,用六边形表示,最低层的目标称为原子目标,即不可再分解的目标,用矩形表示,中间层的目标称为用户目标,用圆角矩形表示. 软目标对应的是非功能需求,用椭圆形表示.目标模型呈现出来的是一个层次形状的目标关系图,为了方便后面对目标模型的处理,将目标模型存储为一定形式的文件是有必要的. XML是一套定义语义标记的规范,也是一种元标记语言,可以定义与特定领域有关的结构化标记. 目标模型的最大特点是层次性,树结构的XML文档也是树型层次结构,使用XML文件存储目标模型,目标模型中的层次关系依然清晰可见. XML支持自定义标签,这一点使得XML文件可以准确的描述目标模型的特性. 除此之外,树结构的XML文档的查询使用XPath和XQuery很容易实现,即提取目标模型中的信息很方便. 因此,使用XML文件存储目标模型是一种比较好的方式. 图1 目标模型Fig.1 Goal model将目标模型存储至XML文件中,其映射关系如表1所示. 表1 目标模型到XML文件的映射Table 1 Map goal model to XML file使用XML文件存储目标模型,需要先定义目标模型的XML Schema. 在XML Schema文件中,定义了目标元素,该目标元素有目标分解Decompose、目标层次GoalLevel和是否与软目标有关联LinkNFR3个属性,包含目标名称和目标2个子元素. Decompose属性用来表示目标的分解方式, GoalLevel属性用来表示目标的层次,LinkNFR属性表示目标是否与软目标(SoftGoal)有链接. 其中目标分解Decompose、目标层次GoalLevel两个属性是必选的,LinkNFR属性是可选的. 子元素目标名称用来显示目标名,子元素目标用来表示当前目标包含的子目标. 2 目标关系的自动发现目标关系的自动发现方法过程如图2所示. 开发人员首先要为系统需求建立目标模型,然后将建立好的目标模型存储为XML文件,按照给出目标关系的查询规则文件使用转换程序自动生成XQuery查询程序,通过该查询文件对XML目标模型进行信息处理,得到目标关系查询结果,实现目标关系的自动发现. 图2 目标关系的发现过程Fig.2 The process of discovery of goal relation其中,查询规则文件goalquery.rules的格式定义如下:[model.xml]Name of goal model[rule]Relation rule of goals为了避免重复的编写目标查询文件,给出了查询文件的自动生成算法. 根据规则文件生成目标查询文件,其过程算法描述如下:Procedure: RuleFile-To-QueryFileInput: File ruleFile Output: File queryFilePrecondition: ruleFile and queryFile Postcondition: queryFile Begin goal model = Name of goal model rule = Relation rule of goals return queryFile;End本文使用Java语言实现了该算法,通过读取规则文件中的目标模型和规则信息,和查询文件框架组合成完整的查询文件. 表2给出了几种常见目标关系. 表2 目标关系Table 2 Goal relationAltova XMLSpy 是一个XML编辑工具[11],使用它可以对XML及其相关文件进行编辑、调试和运行. 根据规则文件生成的关系查询文件可以直接在Altova XMLSpy中运行,并得出结果. 3 实例应用通过机票预订管理系统描述上述方法的应用. 该系统通过机票预订服务商为用户提供机票查询和预订服务[12]. 功能需求包括:支持客户查询机票、订票与退票;实现客户积分管理;机票销售的统计分析报表;自动完成与航空公司及银行间的清算;软目标主要包括:审计、安全性、易用性与可靠性. 3.1 目标模型的建立与存储Altova XMLSpy是一个英文的XML集成开发工具,为了避免出现字符编码的问题,使用英文来来描述机票预订管理系统目标模型. 根据机票预订管理系统需求描述,提取出初步目标,包括功能性目标与非功能性目标. 功能性目标有:机票管理,银行清算,航空公司清算,退票,积分管理,机票查询,订票,销售报表统计;非功能性目标有:审计,安全性,易用性,可靠性. 然后,对初步目标进行抽象或者分解,确定目标之间的关系,根据目标之间的关系建立机票预订管理系统目标模型. 建立的目标模型如图3所示[6].使用XML文件存储目标模型时,机票管理作为XML文件根元素,依次存储每个目标. 每个目标Goal的信息包括目标名称,目标层次,分解关系,非功能目标的关联和子目标. 例如银行清算Bank account settled目标的XML标记描述,从中可以知道银行清算Bank account settled是一个用户目标,其分解属性为AND,子目标有发送银行请求Request sent to bank、银行确定支付金额Count settle amount of bank、转账Transfer、异常提示Exception prompted和日志记录Log. 同银行清算Bank account settled目标一样,其子目标也有完整的信息描述. 图3 机票预订管理系统Fig.3 The ticket booking management system3.2 实验结果上一节中给出了几种常见的目标关系,事实上目标之间有很多有意义的关系,如相同语义的目标,这些目标是可以相互替换的. 下面介绍父目标和非功能目标关系的自动发现. (1)父目标查询目标模型文件GoalModel.xml中目标Log的所有父目标. 其规则文件goal.rules描述如下:[model.xml]GoalModel.xml[rule]ParentGoal(Log)使用规则转换程序把goal.rules规则文件转换成goal.xquery文件,生成的代码如下所示:xquery version "1.0";declare function local:function() as element()*{let $doc:=doc("GoalModel.xml")for $goalName in distinct-values ($doc//Goal/GoalName)let $goalNameText:=data($goalName)for $result in ($doc//Goal[@GoalLevel! ="Business"]/GoalName[text()=$goalNameText]/../../Goal/GoalName)where $goalNameText="Login"return<Goal> <GoalName>{$result}</GoalName></Goal> };<results>{let $doc:=doc("GoalModel.xml") for $goalName in local:function()return<Goal><GoalName>{data($goalName)}</GoalName></Goal> }</results>在Altova XMLSpy中运行goal.xquery文件,得到的结果有Bank account settled、Airline company account settled、Unsubscribe和Book. (2)非功能目标查询目标模型文件GoalModel.xml中的所有非功能目标. 其规则文件goal.rules描述如下:[model.xml]GoalModel.xml[rule]NFR()使用规则转换程序把goal.rules规则文件转换成goal.xquery文件,运行goal.xquery文件,得到的结果有Exception prompted、Log、Login和Query results showed四个. 4 结 语通过对需求阶段的目标模型的存储和目标之间的关系进行研究和实验,结果表明:使用XML文件存储目标模型能体现目标之间的层次关系,存储为XML文件的目标模型提取信息很方便. 使用XQuery能实现目标模型中目标关系的自动发现. 现阶段目标模型到XML文件的转换是人工完成的,如果模型比较复杂,这将很耗费时间. 目标模型到XML文件的自动转换将是以后的研究方向. 致 谢感谢国家自然科学基金委员会、湖北省教育厅对本研究的支持和资助.