计算机工程与设计ComputerE吨ineeringand Design 3198 2010,31 (14) ·段件品算怯·面向方面的软件产品线需求建模李强,中利民(燕山大学信息科学与工程学院,河北秦皇岛066004)摘要:为了将软件产品线的横切关注点在开发的早期阶段分离出来,完成系统分析向设计阶段的顺利过渡,提出了一种面向方面的软件产品线需求分析模型,并给出该模型需求分析的基本步骤.通过冷库管理系统的实例,给出了识别和描述功能需求、非功能需求和横切关注点的方法,利用UML类图完成方面和功能整合,在此基础上介绍了用关系矩阵和合并非功能需求集合的方法来描述非功能需求.实验结果表明,该方法能够有效简化软件产品线需求建模的复杂性.关键词:软件产品线;面向方面;横切关注点;非功能需求;统一建模语言中固法分类号:TP311 文献标识码:A文章编号:1000-7024 (2010) 14-3198-03 Aspect-oriented requirement modeling of so玩wareproduct line LI Qiang, SHEN Li-min (Department of Inforτnation and Engineering, Yanshan University二Qinhuangdao066004, China) Abstract: In order to sep缸atethe cross-cutting concems from so玩wareproduct line in the early stages of development, completing the systems analysis and design phases of a smooth transition. An aspect-oriented so武wareproduct line requirements analysis model is pre›sented and the basic steps of requirements analysis are given by the model. The method is given by the examples of cold storage mana›gement system that identi马rand describe the functional requirements, non-functional requirements and cross-cutting concems, which completing ωpects and functional integration with the UML class diagrams. On this basis, the relationship matrix and combining set of non-function is given to describe non-functional requirements. At last this method show that the complexity ofthe 80企wareproduct line requirements modeling is effectively simplied. Key words: software product line; aspect-oriented prograrnming; crosscutting concems; non-functional requirement; UML 本文在软件产品线的需求分析阶段,对产品线的功能和。引言非功能需求都进行可变性分析,同时,将AOP思想引入到需软件产品线是一种面向特定业务领域、系统化的基于复求工程中,模块化横切关注点,并用UML工具整合方面和功用的软件开发方法。作为软件需求的一部分,安全性、可靠能需求,最后解决可能出现的冲突,完成对软件产品线的需性、易用性、拥有成本等非功能性的质量需求同样存在于软件求建模。产品线之中,而且与功能性需求一样存在差异性。然而,当前1 面向方面的软件产品结需求分析模型软件产品线中的领域分析研究工作主要都关注于功能性的可变性分析,忽略了非功能性质量需求可变性分析U)。又由于大文献[6]描述了基于UML实现→般的面向方面需求工程多数的非功能需求有横越多个功能模块的特点,故尝试在需方法,同时也指出基于视点的需求分析的实现过程。在此基求建模中用AOP(aspect-orientedprogramming, AOP)思想在需础上,提出一个基于UML的面向方面的软件产品线的需求工求分析阶段来分离这类特殊的关注点剧。方义秋等研究证实:程方法。该过程大体分为4个步骤,如图1所示:①将需求按如果能在系统开发的早期阶段识别系统中的横切关注点,可功能需求和非功能需求分别识别和表示,功能需求按扩展的提高系统模块化程度和复用性I叫。但目前AOP使用Aspect的用例图来表示,非功能需求先用关系矩阵列出各产品的需求概念来解决横切关注点的有效分离和局部化的问题,只是从集,然后合并成一个需求集,再用特殊的模板描述说明:②用程序设计语言的层次上提供系统的方法,在软件开发的早期关系矩阵来识别横切关注点,即方面;@将方面和功能需求整阶段运用较少,在需求工程中也没有确立表示某个需求的横合,有重叠、覆盖和包涵3种方式:④可能发生冲突的方面,需切属性的方法剧。要通过设定优先级或者次序等方法加以解决。收稿日期2009-09-21;修订日期2009-11-21.基金项目2国家自然科学基金项目(60873008);河北省自然科学基金项目(F2008000861)。作者简介:李强(1982一),男,河北石家庄人,硕士研究生,研究方向为柔性软件工程、软件产品线;申利民(1962-),男,黑龙江佳木斯人,教授,博士生导师,CCF高级会员,研究方向为柔性软件工程、应用及商用软件、电子商务系统性能分析。E-mail:liqiang1840@
李强,中利民:面向方面的软件产品线需求建模2010,31 (14) 3199 。+入<<alternative>> 库管员图2冷库管理系统产品线用例图图1面向方面的软件产品线需求分析模型表示不同,所以需要将安全性分解成各个小的非功能需求集合,而后与所有产品组成的产品系列集合组成关系矩阵,当产品支2 需求分析过程持某个非功能需求时就用".j"表示,不支持就用"x"来表示。为了更好说明建模过程,选用一个冷库管理系统产品线表1非功能需求和产品系列的关系矩阵的局部作为例子,来说明具体建模过程。软件产品1为普仓系统。能够完成商品按批次进行入库、R4 产品IJ 出库、转库操作,有区位理货的功能,库管员能清楚地了解到产品 x .J .J 每个客户的每种商品的存放位置和数量。另外,有严格的权注Rl.只有库管员才可以登录系统R2.库管员只能对自己管辖的库限管理,只有库管员才可以登录系统,库管员只能对自己管辖进行入库、出库、转库和区位理货操作R3.操作前进行日志记录R4.的库进行入库、出库、转库操作和使用区位理货子系统,操作操作成功后进行日志记录。前和成功后都要进行日志记录。接着采用合并非功能集合的方法简化产品线非功能需求软件产品2为租仓系统。能够按客户名和商品,即按存分析,需要对相同类型的非功能需求进行合并,形成一个新的货进行入库、出库、转库操作,因客户己承包了固定的区位,所非功能需求,比如权限,产品l的非功能需求为{Rl,R2},产品以不需要区位管理的功能。另外,只需要普通的权限管理,登2的非功能需求为{Rl},对整个产品系列的非功能需求定义为录用户只有库管员就可以进行入库、出库、转库操作,在操作Ql,那么Ql= {Rl,R2} U {Rl}将作为一个统一的非功能需求前和成功后都要进行日志记录。进行下一步的建模活动,用模板来描述,如表2所示。非功能 识别和表示功能需求需求中的日志定义为Q2,那么Q2={阳,R4}U {R3,R4},最后在软件产品线环境中,UML用例图方法可直接用于建立非功能需求的结果集为{Ql,Q2}。用此结果集将参与横切关软件产品线需求模型和描述领域需求的公共部分。对变化部注点的识别过程。分,UML用例图方法缺乏有效的支持,需要对其作必要的扩充气为支持角色和用例的可变性,UML用例图必须扩展两表2权限的模板说明种新用例关系z可选关系和互斥关系,分别用<<optional))和名称| 权限管理<<alternative))表示剧。在冷库管理系统产品线中,如图2所示,描述| 对系统的权限管理区位理货的用例不是每个产品都支持的,故是可选择的,用来源| 问题的原始描述<<optional))来表示:两个产品对存放商品的处理方式不一样,导需求集合Rl.也致产品线只能且必须选择一种方式进行业务操作,即如果按模型| 入库,出库,转库,区位理货批次入库,那在出库存就不能按库存出库,对产品线来说是互斥的关系,用<<alternative))表示。 识别横切关注点 识别和表示非功能需求由关系矩阵可以识别横切关注点。如果一个非功能需求非功能需求定义系统的全局属性,是对功能需求的质量影响多个用例则此非功能需求是横切性的,即此非功能需求约束。在软件产品线环境中,不同产品的非功能需求可能是为横切关注点。冷库管理系统产品线中,经过功能和非功能不同的,差别在于约束的程度不一样。为简化分析难度,采用需求分析后,把功能需求构成的集合与合并后的非功能需求非功能需求和产品系列组成的关系矩阵来表示,即先对每个构成的集合组成关系矩阵,如表3所示,例如权限控制对入库、产品的非功能需求分解成一组不能再分解的原子需求,再对出库、转库和区位理货都有作用,用"~"表示,则权限控制属所有产品同一类的非功能需求取全集,最后用一个包含所有于一个横切关注点,其它类似。非功能需求的集合代替原来的多个产品的多个非功能需求。功能需求中如果-个功能需求影响多个用例则此功能需在冷库管理系统产品线中,对使用系统的用户进行了限制,并求也是横切性的,其识别方法与上述非功能需求横切关注点记录了相关的操作信息,安全性就成为一个要考虑的系统非的识别类似。例如,批次管理的功能需求影响入库、出库、转功能需求。为表示产品线中全部的非功能需求关系,采用关库和区位理货,则批次管理就被认为是一个横切关注点,本文系矩阵的方法,如表1所示。由于在不同的产品中,安全性的为简化分析,只对非功能需求作横切性分析。
3200 2010,31 (14) 计算机工程与设计ComputerEngineering and Design 表3功能需求和非功能需求的关系矩阵|堂里主主|I~I 区位理货operation 权限控制J 权限控制自忘记录J 日忘记录业务操作success 整合方面和功能需求功能需求可以单独包装为功能模块,横切关注点也可以日志记录单独包装成非功能模块,然后利用UML类图将二者整合,完成系统建模。在冷库管理系统产品线中,功能需求包括基本图4方面问执行顺序图业务操作和区位理货操作,按批次的库存管理和按存货的库存管理在基本业务操作上派生出不同的类。权限和日志这两交叉,IJ为影响因子,0::三IJ::三1,则需要开发时间为X(P+Q)+XIJ个横切点可以合并成一个安全管理的方面,约束和记录基本PQ,如果采用面向方面的方法开发时,需要时间X(P+Q),说业务操作和特殊业务操作的执行。权限和日志又可以单独包明采用面向方面的方法可以大幅缩短开发时间,节省时间为装不同产品的不同需求。整合的过程就是将方面横切各个业XIJPQ。务类,库管员在实际访问业务类时都是须先通过安全管理的如果有m个产品,经分析后产品系列的非功能需求个数方面的验证,然后才能继续业务操作。方面与业务类整合后为{Nl,N2,N3,…,Nm},每个模块的开发时间为X,则开发的的系统类图描述如图3所示。总时间为(N1+N2+…Nm)X。在采用了合并非功能集合的方法后,则非功能需求的个数N为Max{Nl,N2,N3,…,Nm}运N::三Nl+N2+N3+…Nm,在最坏的情况下即各个产品的非功能互相独立时,合并后的个数为各产品非功能个数的和:在最好的情况下,合并后的个数为等于其中某个产品的非功能需求个数,这种情况下开发的总时间为NX,定义一个影响因子也0::三α运1,产品系列中各软件产品的非功能需求越相似,α越小。开发时间的关系为NX= a(N1+N2+…Nm)X。因此,通过关系矩阵分析产品系列的非功能需求,然后合并非功能集合的方法可以避免非功能需求的重复分析,简化了产品线需求分析的难度。图3系统类图3 结束语系统类图实现了方面和功能需求的静态整合,对方面的通过在需求工程中引入AOP的思想方法,将功能需求和横切操作还需要结合UML顺序图作动态的分析。安全性方面横切各业务操作,以重叠方式整合。结合用例图,至少能确非功能需求分别识别和表示,再整合建模,针对非功能需求,定两个关于方面执行顺序的场景2①通过权限验证的业务操利用关系矩阵和合并非功能集合的方法进行简化和统一,这很好地降低了软件产品线分析的复杂性,同时需求阶段就识作成功的情况,如图4所示:②未通过权限验证的业务操作。别出横切关注点,提高了需求的追踪性和系统的模块化。安全性方面包含了权限和日志两个方面,权限控制在业务操下一步的研究工作包括z将功能需求中的横切关注点也作之前执行,而后将业务操作成功结果返回给用户,臼志记录参与到方面与功能需求的整合过程中:在识别和解决冲突过在业务操作之前和操作成功之后都要执行,且日志记录是在程中,用量化的方法设定方面的优先级来解决冲突将是下权限控制之后执行。步研究的目标和方向。 识别和解决冲突方面之间存在着大量的依赖关系,甚至是冲突,所以有必参考文献:要对方面之间的相互影响进行识剔,然后根据识别结果进行[1] 黄逸秋.计算机科学技术学报:软件产品线技术有望推进软件相应的处理。在冷库管理系统产品线中,权限控制方面和日工业化步伐[EB/OL]. 志记录方面共同影响一组功能需求,此时冲突就有可能发生,2009-03/27/content 11 084723 .htm,2009-8-30. 就需要规定这些方面的执行顺序,或者用优先级来约束这些[2] Whittle J,Araujo J .Scenario modelling with aspects[J] .IEEE Pro›方面的执行顺序,优先级可以事先规定,也可以由一个算法动态地指定每个方面的优先级。ceedings-So企ware,2004,151 :157-161. [3] 方义秋,冉华锋,葛君伟.基于西向方面需求建模[J].计算机工 实验结论与分析为验证此模型可提高产品线的开发效率,做以下分析。程,2009,35(12):44-46.假设一个软件系统中有P个功能模块,有Q个非功能模块,每[4] 李福荣,张杨,张京军,等.基于UML面向方面需求建模[J].计算个模块的开发时间为X,每个非功能模块与IJP个功能模块有机应用与软件,2007,24(6):35-37.(下转第3228页)
3228 2010,31 (14) 计算机工程与设计ComputerEngineering and Design 时,显示需要秒。。)建立4层网格索引和要素分级,将图幅分别分为1块,2*2块,4叫块,伊6块,地图在逐步放大和缩小的过程中,显示速度变化不大,基本都在.....1. 8秒之间,平均为秒:在此基础上,如果采用折线与矩形求交算法只绘制屏幕内的地理要素和地理要素在屏幕内的部分,平均显示速度为秒。对以上3种试验方法的试验结果进行比较、分析,可以得出:本文所述方法能显著提高嵌入式平台上矢量地阁的显示速度,可满足用户的使用要求。将Points[i],§ 结束语Points [i+l]所构成的线段加入LineSel主要从如何减少地理要素的读取量、如何减少地理要素的查找时间、如何提高地图数据显示处理效率3个方面进行了研究,建立了要素分级的多层网格索引数据模型,以将Points[i-J]和Points[i]所构成的线段加入LineSet;减少地图数据的读取量和查找时间,在绘制时对线面要素如果什I<N,将Points[i]和Points[i+l]所构成的线段进行快速的求变运算来提高显示处理效率,并通过试验结加入LineSet果表明,上述方法能显著提高矢量地图的显示速度。曾用所述方法辅助等高线数据压缩、双缓冲池显示技术开发了嵌入式矢量地图显示引擎,实现了地图平滑漫游、快速缩Points [i], Points [i+ I 放,应用于手持GPS定位软件,能够满足用户对地图操作的所构成的线段是否与ScreenRect的四条边中的快速响应要求。任意一条相交参考文献:[1] 石文杰,刘绍平,许晓宏.嵌入式GIS概述及开发浅析[J].计算机与信息技术,2007(22):61-62.[2] 薛华柱.WebGIS中的矢量数据压缩[JJ.焦作工学院学报,2004,23(2):95-97. [3J 杜毅,杨茂,贾英智地理信息系统中曲线压缩技术研究[J].天然气与石油,2005,23(3):11-13.[4] 许成刚,马范援.矢量地图在嵌入式GIS系统中的高速显示研究[J].微型电脑应用,2005,21(9):3-6.图4折线与矩形求交算法流程[5] 徐敬海,李清泉,宋莺,等.基于Kiwi数据格式的地图显示研究[J].武汉大学学报,2005,30(10): CF卡存储器,安装微软公司嵌入式操作系统。CF卡中存放有4幅1:5万全要素矢量地形图试验数据。[6] 邬伦,刘瑜.地理信息系统原理、方法和应用[M].北京:科学出版试验方法和结果如下z社,2001.(1)不进行图幅分块的网格索引和分级处理,全要素矢量[7] 张丽芬,王晓华,胡景松.基于网格划分的儿种空间索引[J]北京地图的显示、放大和缩小平均需要15秒。理工大学学报,2004,24(2):140-144. (2)做单层网格索引和要素分级,将图幅分为4*4块,在显[8] 徐智勇,吴小芳.LOD技术在电子地图显示中的应用研究[J].示比例为200~也-500%时,平均显示需要秒:当地图逐步缩测绘信息与工程,2004,29(5):19帽20.小时,显示速度越来越慢,在显示比例为10%时,显示需要11[9] 梁浩,吴敏君两类典型空间索引技术的分析与评价[J]安阳工秒;当地图逐步放大时,显示速度也变慢,在显示比例为1000%学院学报,2006(2):51-55.(上接第3200页)[5] Bedir飞AnaM,Joao A,et aspect:Aspect-oriented requi›dings of the IEEE Joint International Conference on Require›rements engineering and architecture design[C].Report on也ements Engineering Essen,2002:199-202. third Early Aspects: Early Aspects: Aspect-Orented Require›[7] 罗代忠,赵文耘,彭鑫.一种基于UML的软件产品线可变性建ments Engineering and Architecture Design Workshop,2004. 模方法[J].计算机应用,2008,28(8):2137-2140.[6] Rashid A,Sa\叮erP,Moreira A,et aspects:A model for [8] 张涛,王海鹏,胡正国.基于UML用例图的软件产品线需求建aspect-oriented requirements engineering[C].Germany:Procee-模方法[J].计算机应用研究,2004,21(10): 190-191.