2012年9月计算机工程第38卷第18期Septerriber 2012 Computer Engineering 飞' 文章编号1001←3428(2012)18→037~5文献标识码.A中图分类号. ·软件技术与数据库·网络式软件非功能需求冲突消解越新辉1,袁开银吴尽昭3(1郑州大学体育学院科研处,郑州450044;2.河南财经政法大学现代教育技术中心,郑州I450002; 3.中国科学院成都计算机应用研究所,成都610041)摘要:在构建非功能需求冲突管理元模型的基础上,给出相关建模元素的形式化描述,将需求忡突的语义定义作为检测依据。根据不同的需求冲突类型和程度,提出一种排除冲突和降低冲突的网络式软件非功能需求冲突消解方法。以旅游出行领域中计算行程费用服务的非功能需求为例,验证了该方法的有效性。关键词:网络式软件;需求工程;非功能需求;形式化建模;冲突检测;冲突消解Conflict Resolution of Non-functional Requirement for N etworked Software 123 ZHAO Xin-hui, YUAN Kai-yin, WU Jin-zhao(1. Division of Research Administration, Physical Education College of Zhengzhou University, Zhengzhou 450044, China; 2. Modem Education Technology Center, Henan University ofEconomics and Law, Zhengzhou 450002, China; 3. Chengdu Institute ofComputer Application, Chinese Academy ofSciences, Chengdu 610041, China) (Abstract) Based on the Non-functional Requirement Conflict Management Meta-model(NFRCMM), this paper gives formalization description for modeling elements, and makes也edefmition of requirement semantic conflict as也efoundation of checking requirement conflict. According to the different types and degrees of requirement conflict, a resolution method for conflict elimination and conflict decrease is provided. As the example of calculation travel costs service nonfunctional requirements in tourism travel field, it verifies由eeffectiveness of the proposed method. (Key words) networked s。如础;requirement engineering; non扣lctionalrequirement; formal modeling; conflict detection; conflict resolution DOI: 个需求"计算行程计费服务应具有高安全性和高准确性"1 概述为例,说明了排除非功能需求冲突的→个完整过程。随着软件系统的网络化、服务化趋势,需求冲突分析研究开始关注非功能需求[1]冲突的问题。如何对非功能需2 非功能幡求的形式化表示求进行分析是网络式软件[2]需求工程中亟待解决的问题, 非功能幡求冲突管理元模型为支持非功能需求的形式化建模,抽取非功能需求主要表现在:(Non-functional Requirement, NFR)框架的元类并加以扩展,(1)以用户为中心的设计思想,将用户体验作为重要的提出一种非功能需求冲突管理元模型[4](Non-functional指标,用户体验不仅关注系统能做些"什么"更加关住Requirement Conflict Management Meta-model, NFRCMM), 系统做的"~虫如日何"如图l所示。(ρ2凋)H服R务质量成为服务发现和组合方法的重要约束,网非功能目标(Non-functionalGoal, NFG)是将非功能需络式软件需求的非功能需求会直接影响到服务质量描述。求和其他影响非功能需求精化的因素(如功能需求和情境)本文探讨→种非功能需求的冲突消解方法,首先,为了实现需求冲突的自动检测和消解,在非功能需求冲突管有机揉合在→起的一种表示形式。非功能目标包括指定特理元模型的基础上,给出相关建模元素的形式化描述[3]定功能需求的类型(NFGType)和主题(Topic)。主题包括功提出相应的需求冲突定义作为检测需求冲突的依据。其能需求和情境(Context)。情境作为主题,与功能需求不同次,根据需求冲突的不同类型和程度,提出排除冲突和降的是情境不能单独作为主题使用,只能和功能需求一起作低冲突的需求冲突捎解方法。最后,以旅游出行领域的→为主题。基金项目:国家"973"计划基金资助项目"需求模型验证与管理"(2007CB310803) 作者偏介:赵新辉(1980-).男,硕士、CCF会员,主研方向:网络与信息安全;袁开银,讲师;吴尽昭,研究员、博士生导师收稿日期2011-12-05修回日期2012-01-16E-mail: snowlyn凶@
38 计算机工程2012年9、月20日Method, topic>: 1) operationMethod=<modifierWord, headWord>是可操作目标的执行方法,由→个二元组表示。modifierWord是一个形容词或副词,headWord是和非功能属性相关的名词或动词。2)topic和非功能目标中的定义相同。模型构成的主要关联元素包括贡献关联和精化关联,贡献关联与精化关联的形式化描述如下:(1)目标贡献关联目标间的贡献关联定义为一个二元组conTBDEP=<cType, cAss>: l)cType E Positive U Negative是目标之间贡献关联的回1非功能"求神突管理元模型类型。Positive={Make, Help, Some( +)}是积极的贡献关联,可操作目标(Operationa1Goa1)是非功能目标的解决方称为积极贡献关联,分别赋予贡献关联值{3,2,1};案,不仅限于功能,且能够和系统的数据、操作和约束相Negative={Break, Hurt, Some(-)}是捎极的贡献关联,称为对应。建立可操作目标与非功能目标之间的贡献关系(积消极贡献关联,分别赋予贡献关联值{-1,一2,-3} 0 极贡献或消极贡献)。例如,可操作目标"图形化用户界2)cAss ;; (GOPERxGOPER) U (GOPERxGNP)是贡献源与贡丽"与非功能目标"用户友好性"之间是积极贡献关系。献目标之间的二元关系,GNP是非功能目标集合,GOPER 声明目标(C1aimGoa1)说明、解释非功能目标或者依是可操作目标集合,记为cAss(source,target)。赖关系的情境。使用声明目标的内容能够自动生成非功能(2)目标精化关联目标的情境主题。目标间的精化关联定义为一个二元组refineDEP=精化关联(Refinement),上层目标和下层目标之间的<rType, rAss>: 精化表示目标间静态依赖,精化关联的类型包括根据耍素1) rType E {Mandato巧,Optiona1, OR, Alternative}是目或成分精化的"必选的(Mand由atω01)俨和"可选的(ρO阱ptiona均11)飞标之间精化关联的类型。根据属性的约束精化的"多选一(队Alt饨er口n刚创at叩ive)"和"多选多2)rAss♀GNpXG是上层非功能目标和下层非功能目NP(OR)俨"标之间的二元关系,记作rAss(叩per,lower)。上层和下层贡献关联(Cont创rib山utωiωo时n1)表示可操作目标的实现对上分别由一个非功能目标充当。层非功能目标是"积极(σPOω剑si让t刨i刊ve)"还是"消极(Negative)"3 非功能需求神突检测作用,贡献关联的积极类型包括He1p、Make、Some(+),非功能需求冲突的定义是建立在非功能需求冲突管消极类型包括Break、Hurt、Some(-)。理元模型被赋予语义的基础上,所以,在定义非功能需求将非功能需求抽象为目标是NFR框架的核心思想,的语义冲突之前先给出领域本体相关的语义定义,主要包NFRCMM元模型沿用这一核心思想。与NFR框架相比丰括领域概念语义相等和语义不一致。富了非功能目标的分解关系和目标精化的模式。定义1(领域概念语义相等)对于2个领域概念Cj和 形式化表示C,在领域本体中,如果Cj与C有"ow1:sameClasaAs" 在NFRCMM的基础上,可以给出相关建模元素的形jj式化描述[匀。模型构成的主要元素包括非功能目标和可操关系,则称概念Cj和Cj语义相等,记作Cj=C。j定义2(领域概念语义不一致)对于2个概念Cj和C作目标。j,在领域本体中,如果Cj与C有"ow1:disjointWith"关系,(1)非功能目标j则称概念Cj一个非功能目标表示为一个二元组gNP=<NFGType,和概念C语义不一致,记作CjnC=0。jj使用"ow1:.disjointWith"关系表达一组类是不相交的,tOplC>: 它保证了属于某一个类的个体不能同时是另一个指定类I)NFGType E {T"飞,…,T}是非功能属性集合的元n的实例。在特定领域中,互为反义词的形容词或者副词概素,非功能属性集合根据非功能属性分类构造。p 念被定义为"ow1:disjointWith"关系,如Uncompressed门2)topic E Gp U (GFxAContext)是非功能目标的主题,GCompressed=②。是功能目标集合,AContext表示情境属性集合。非功能目标定义什么是非功能需求之间的冲突是讨论非功能需的topic至少包含一个功能目标,和是否包含情境属性与求冲突检测和消解问题的基础。在非功能需求冲突管理元声明目标有关。模型中以非功能目标和可操作目标作为载体,并形式化描(2)可操作目标述了非功能目标、可操作目标及其之间的关联。在这些工一个可操作目标表示为→个二元组gOPER=<operation
第38卷第18期赵新辉,袁开银,吴尽昭:网络式软件非功能需求冲突消解39 作的基础上,讨论目标间的冲突并定义相应的冲突规则。突和降低冲突。讨论目标的冲突问题时,首先需要确定目标的主题 忡突排除改变需求冲突的一方是较彻底、有效地排除需求冲突(Topic)语义等价。不同的语义主题目标不具有可比性。主的方法,可以通过为冲突的非功能目标找到可替代目标实题的语义等价能够根据功能目标和情境属性的语义等价现。这种方法在检测到非功能需求冲突后,通过合理的取判断,判断的基础是定义l。代方式彻底排除需求冲突。针对非功能目标的绝对冲突,定义3(可操作目标冲突)对于主题语义等价2个操作可以通过取代其中的一个非功能目标的方法排除2个非功目标gOPERi和gOPI!Rj'两者方法表示为operationMethodi=<modifierWordi, headWordi>, operationMethodj=<modifier 能目标之间的冲突,可定义为:定义7对于2个精化关联refineDEPi=<rType,rAssi> Wor句,headWor句〉。若modifierWordi n modifierWor司j=巨型和refineDEPj=<rType,rAssj>,有rAssi(gNFbgNFi)和rAssj且headWordi=headWor句,则称gOPERi和gOPE同产生语义(gNFk, gNFj) ,且gNFi学gNFj'如果rTypeE {OR, Altemative} , 冲突,记作OConflict(goPERi,gOPERj)。同一个分支上的上层目标和下层目标的Topic都被认则gNFi和gNFj互为取代非功能目标,记作SUb(gNFi)=gNFj或SUb(gNFj)=gNFi0 为是兼容的。例如,2个操作目标gOPERi=<Compressed,Format>和gOPERj=<Uncompressed,Format>,由于Uncom精化关联类型是多选一(Altemative)或多选多(OR), pressed门Compressed=②,且Format三Format,则OConflict说明为了满足上层目标,选择其中的任一都可以,那么这些非功能目标被认为是可以相互取代的。(gOPERi, gOPERj)。定义4(非功能目标绝对冲突)对于2个贡献关联con在取代非功能目标定义的基础上,讨论绝对冲突的排除方法。算法l的作用是在非功能需求冲突管理模型中发TBDEPi=<cTypei, cAssi>和conTBDEPj=<cTypej,cAssj>, 现conflict(gNFi,gNF)。有cAssi(gOPERi,gNFi)和cAsSj(gOPERj,gNFj) ,如果{cTypei,算法1排除绝对冲突算法cTypej} E Positive且OConflict(goPERi,gOPERj),则gNFi和gNFj产生绝对冲突,记作ACon时l诅血fli叫ct叫(勘gNF肌i,缸gNF旧j)EliminateAConflict(gNFi, gNFj) 由于积极贡献关联的可操作目标是实现非功能目标输入gNFi和gNFj是相互冲突的2个非功能目标输出True:l!lG False 的唯→方法,这种可操作目标之间的冲突必将影响非功能步骤:需求的实现,称为绝对冲突。另外,还有一种现象不会影1.初始化SubstitutedG,SubstitutingG=Null, int i=O, G[]; 响某个非功能需求的实现,但是对非功能需求的共同实现(value( cTypei)ζvalue( cTypej)) 造成→定的阻碍。阻碍最早是作为一个抽象实体出现,被 G[2]={gNFi, gNFj} ; 定义为→个和目标相对的概念,本文的冲突消解方法将阻 G[2]={gN町,gNFi}; 碍也看作是一种目标,如果一个目标的实现会对另→个目 标产生消极影响,则目标之间存在阻碍。阻碍会导致相对(i<2) 冲突,定义为:7.根据定义7调用SubstitutingG=G[i]; 定义5(非功能目标阻碍)对于2个贡献关联conTBD Sub(SubstitutedG)返回为Null,Then i=i+ 1; Else跳出循环; EPi=<cTypei, cAssi>和conTBDEPj=<cTypej,cAssj>,有(SubstitutingG=Null) cAssi(gOPERb gNFi)和cAsSj(gOPERbgNFj) ,如果cTypeiE 排除需求失败并返回False;Positive八cTypejE Negative,则gN巧是gNFi的阻碍,记作使用SubstitutingG取代当前的SubstitutedGt返回TruejmakeObstac1e(gNFj’ gNF时i). 寇义6(非功能目标相对冲突)如果m丑na挝k巳Obstac1叫e(勘gNFi,u, 说明:gNF时j),且makeObstac1e(gNFj'gNF山则称gNFi和gNFj产生相(1 )SubstitutedG是→个目标类的对象,表示被取代的对冲突,记作Conflict(gNFi,gNFj)。非功能目标SubstitutingG也是一个目标类的对象,表示4 非功能需求忡突捕解取代的非功能目标。传统的需求冲突消解方法侧重于处理功能需求冲突,(2)G[]是一个目标类型的数组。主要包括WinWin[6]和多视点框架[7]0WinWin使用需求冲(3)valueO是获取贡献类型值的方法。突策略帮助需求消解过程,但无法支持机器自动消解。基(4 )SUb(gNF)方法根据定义7实现,返回gNF的一个可于多视点框架的方法能够自动发现需求冲突,但该方法仅取代非功能目标,且该非功能目标和另一个导致冲突的非能提供转移冲突而无法完全支持自动消解。功能目标不会产生新的冲突。非功能需求冲突较功能需求之间的冲突发生率高,冲算法分析:排除冲突是消除冲突的首选方法,但排除突的程度不高但直接影响用户的满意度,在非功能需求冲冲突的要求较严格,要求冲突非功能目标必须有可取代目突检测方法的基础上,讨论冲突消解的解决方案:排除冲标。当这一前提无法满足时,无法采取排除方法消除需求
40 计算机工程2012年9月20日冲突。另外,对于产生相对冲突的非功能目标,没有必要输入gNFi和gN盯是发生阻碍的2个非功能目标,make采取替换非功能目标的方法,对于上述情况,可采用降低Obstacle叫(勘gN叶F需求神突的方法。作目标 摊突降低输出待播加的可操作目标降低需求冲突是在不改变非功能目标的前提下,通过步骤:优化可操作目标来部分捎解需求冲突。对于无法排除的绝1.初始化OperG,TargetG, TargetG’, AddingOperG, ALo侣,int i=O; 对神突,通过取代关联值较小的贡献关联来降低忡突,即2.赋值OperG=gOPER;,TargetG=gN町,.T argetG'骂NFd添加一个既能与非功能目标有积极贡献关联,又不与另外3.调用choosePOperG(TargetG),并赋值给队列ALofG;一个可操作目标发生语义冲突的可操作目标,来弱化导致(i<) 间接冲突的贡献关联。在非功能需求冲突管理模型中,有 (OConflict(OperG, (i)) V checkNConDEP(TargetG’, AConflict(gNFi, gNFj)。 (i))) 算法2降低绝对冲突的可操作目标发现算法 i=i+1; AddingOperG= (i); findOperGforAConflict(gNFi, gNFj, gOPERb gOPERj) 输入gNFi和gNFj是相互冲突的2个非功能目标, 和gOPERj是导致绝对冲突的可操作目标10.返回AddingOperG.输出待添加的可操作目标说明:步骤:(1 )choosePOperG和AddingOperG都是可操作目标类1.初始化OtherOperG,TargetG, AddingOperG, ALofG, int i=O; 的对象TargetG和TargetG'是非功能目标类的对象;(value( cTypei)’;;; value( cTypej)) ALofG是一个可操作目标类型的ArrayList。3. Then TargetG=gNF;; OtherOperG=goPERj; TargetG=gNFj; OtherOperG=gOPER;; (2)checkNConDEP(gNF, gOPER)是判断gNF与gOPER是否 有消极贡献关联的方法,如果是则返回True,否则返回6.调用choosePOperG(TargetG),并赋值给队列AL。而;False 。7. While(i<) 算法实现 OConflict(OtherOperG, (i)) 以上3个算法的分析与设计框架由目标精化和非功能 i=i+l; 需求目标冲突消解组成。10 .E1se AddingOperG= (i); 网络式软件中的用户需求获取主要方式是使用 语言描述需求。该框架首先提供用户需求输入的接日,在 13.返回AddingOperG.领域本体的指导下,接收SORL描述的非功能需求目标并说明:对SORL语言描述的用户需求进行解析。目标精化后,在( 1 )OtherOperG和AddingOperG都是可操作目标类的非功能类型冲突关系列表的指导下,检测非功能需求目标对象TargetG是非功能目标类的对象ALofG是一个可之间是否存在冲突,与用户进行协商,消除或降低可能冲操作目标类型的ArrayList。突,进行冲突捎解。(2 )choosePOperG(TargetG)是获取与TargetG有积极贡为了实现网络式软件中人网交互的需求过程,将该框献关联的所有可操作目标的方法,返回一个可操作目标类架构建为→个B/S(Browser/Server)程序,该程序使用Java型的ArrayList。实现,是一个典型的MVC模式的应用程序。将根据(3 )OConflictO是判断2个操作目标是否有语义冲突的NFRCMM相关建模元素形式化描述后的模型持久化存储方法,如果冲突返回True,否则返回False。于关系数据库中,使用时加载入内存,采用的关系数据库算法分析:和原有导致绝对冲突的可操作目标相比,是伯克利(BerkeleySoftware Distribution, BSD)提供的开源通过算法2获取的可操作目标更具有优越性,在模型中使数据库PostgreSQL。为了便于操作,领域模型由Javabean用后者取代前者。封装。对于相对冲突,通过取代产生阻碍的非功能目标对应5 实例分析的可操作目标,即添加一个既能与非功能目标有积极贡献以旅游出行领域中计算行程费用服务的非功能需求关联、又不与另外一个非功能目标有消极关联的可操作目的实例来说明非功能需求冲突的检测和消解过程。标,来弱化导致相对冲突的贡献关联。算法3的作用是在 形式化描越非功能需求冲突管理模型中有makeObstacle(gNFj'gNFi)。用户提出的需求通常可以抽象为→个顶层非功能目算法3降低阻碍的可操作目标发现算法标。根据旅游出行领域的一个实例"计算行程费用服务findAddingOperGforObstacle(gNFb gN町,gOPERi, gOPERj) 应具有高安全性和高准确性"是一个初始需求,通过SORL
第38卷第18期赵新辉,袁开银,吴尽昭:网络式软件非功能需求冲突消解41 conTBDEP3=<Help, cASS(gOPER3, gOPER2)> 需求预处理表示为非功能目标"安全性[计算行程费用]" 摊突撞测和"准确性[计算行程费用]飞根据NFRCMM框架建立非首先gOPERl和gOPER3的topic兼容,根据定义3判断得功能需求冲突管理模型:到OConflict(gOPER1,gOPER如其次有贡献关联conTBDEP=2(1)精化分解,以"安全性[计算行程费用]"的精化为<He1p,cAss(gOPER2’ gNFll)>和conTBDEP=<He1p,cAss 3例,功能目标"计算行程费用(Ca1cu1ateTripExpense)"精(gOPER3, gOPER2)>'可得conTBDEP4=<He1p, cASS(gOPER3, 化为一个必选子目标"计算道路费用(Calcu1ateRoad gNFll)>。Expense)"和→个可选子目标"计算住宿费用(Ca1cu1ate根据定义4,对于conTBDEP=<He1p,cASS(gOPERb 1HotelExpense)" ,根据非功能目标的精化将非功能目标分gNF5)>和conTBDEP4=<He1p, cASS(gOPER3’ gNFll)>'由于解为2个非功能目标:必选的目标"安全性[计算行程费OConflict(gOPERb gOPER3),因此AConflict(gNF5,gNFll)。用]"和可选的"安全性[计算住宿费用]飞功能目标"计 神突捕解算道路费用"精化为2个必选子目标"获取道路收费标准"首先使用排除使用非功能需求冲突的算法1,执行步和"监控行程气根据功能目标的进一步精化将非功能目骤如下:标"安全性[计算道路费用]"分解为2个必选的目标"安(1)由于va1ue(Help)=value(Help), G[2]= {胁时,gNFll};全性[获取道路收费标准]"和"安全性[监控行程]"(2)当i=O,SubstitutedG=gNF5’ SubstitutingG=Null, (ο2)将"准确性[计算行程费用]"也进行精化分解后,i=i+1 ; 选取合适的可操作目标来实现非功能目标并建立贡献关(3)当i=1, SubstitutedG=gNFll’ SubstitutingG=gNF12; 联,为了实现非功能目标"安全性[获取道路收费标准]"(4)使用gNF12取代gNF5,冲突消解成功。和"准确性[查询收费标准]飞分别指定唯一的可操作目标该实例说明了绝对冲突消解的过程,能成功找到可以并建立积极贡献关联。取代gNFl的非功能目标是冲突消解的关键。对于无法通过根据NFRCMM相关建模元素的形式化描述,可得旅排除冲突方法泊解冲突的情况,可以使用降低冲突的方游出行领域NFRCMM模型的形式化表示:法。使用降低冲突的方法时,能成功找到可以取代gOPERl(1)非功能目标的可操作目标是冲突消解的关键。安全性[计算行程费用]:gNFI=<Security, CalculateTripExpen se> 6 结束语安全性[获取道路收费标准]:本文探讨了一种非功能性需求的冲突消解方法,从一gNFS=<Security, CaptureREStand ard> 定程度上填补了需求分析问题缺乏非功能需求问题分析准确性[计算行程费用]:的空白。另外,与传统的需求冲突管理方法不同,该方法gNF6=<Accuracy, CalculateTripExpen se> 是一种语义层面的需求冲突管理方法,推进了基于语义的准确性[查询收费标准]:gNFII=<Accuracy, QueryREStandard> 需求冲突研究的进展。准确性[查询交费记录]:gNFI2=<Accuracy, QueryPERecord> 参考文献(2)可操作目标[1] 杨放春,龙湘明.软件非功能属性研究[J]北京邮电大学学报,权限认证[获取道路收费标准]:2004,27(3): 1-12. gOPERI =<AuthenticateRight, CaptureREStandard> [2] 何克清,彭蓉.网络式软件[M]北京·科学出版社,2008.实时确认[查询收费标准]:[3] 李嘉丽,王念滨,孙琼鸿.基于UML的本体表示方法研究[J].gOPER2=<RealtimeValidation, QueryREStandard> 计算机工程,2009,35(12):41-43. 无需权限认证[查询收费标准]:[4] 刘琦.面向服务的软件需求获取与分析研究[D].武汉:武汉gOPER3=<UnauthenticateRight, QueryREStandard> 大学,2008(3)精化关联[5] 古夭龙.软件开发的形式化方法[M].北京:高等教育出版社,权限认证[获取道路收费标准]:2005. gOPERI=<AuthenticateRight, CaptureREStandard> [6] Boehm B, Kitapci H.ηle WinWin Approach: Using a Require›实时确认[查询收费标准]:ments Negotiation Tool for Rationale Capture and Use[EB/OL] gOPER2=<RealtimeValidation, QueryREStandard> (2006-06-30). 无需权限认证[查询收费标准]:gOPER3=<UnauthenticateRight, QueryREStandard> . (4)贡献关联[7] 梁正平,毋国庆,王志强.一种基于问题框架的视点表示模conTBDEP 1= <Help, cASS(gOPERt. gNFS)> 型[J].计算机工程,2007,33(15):67-69. conTBDEP2=<Help, cASS(gOPER2, gNFII)> 编辑陆藕菲