|
摘要:软件需求变更是导致软件项目失败的主要因素。之前学者们在分析软件体系结构的变更风险时,体系结构间依赖值的获取主要是依靠经验预估,而不是基于模块的进一步划分和相关耦合参数的关联推导。针对这一问题,提出利用DSM和QFD模型对组件进一步细划分成粒度更小的关键设计参数(类或对象),分析参数间的依赖程度,推导出模块间的关联度,接着对模块开发顺序进行重组,从而在一定程度上控制需求变更风险。最后,通过将某公司集装箱管理系统进行模块切分和重组对所提方法的可行性和正确性进行了验证。
关键词: 软件需求变更;DSM;QFD;变更传播;信息反馈
中图分类号:TP311文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.09.022
引用格式:王跃鹏,张春海.基于QFD和DSM的软件需求变更影响分析方法与应用[J].微型机与应用,2017,36(9):74-77.
0引言
近几十年来,软件产业呈现爆发式增长,需求巨大,并且软件规模迅速膨胀,结构复杂,伴随而来的失败风险成指数级增加。然而软件需求变更在项目系统开发上面临着效率、技术和管理等诸多问题,越来越被专家和学者们看作是项目开发过程中的重要风险来源之一[1]。目前以用户体验至上的开发流程愈发导致需求不断地变更,因而给软件项目管理带来了很多不可控的因素[2]。系统的各种需求与开发过程中的各种组件是相互映射、紧密联系的,这就是项目开发过程中存在巨大风险的主要原因。然而,软件体系结构是反应系统联系和耦合的重要载体。每当某些需求变化时,与之关联的组件就会受到影响,与被影响组件间接相关联的组件又会受到传播效应,这就形成了一种变更传播风险,从而在整个软件体系结构中都有可能产生“涟漪”效应。Cooper等专家基于依赖控制和数据依赖的模型图对软件需求变更影响进行了研究和分析[3]。杨鹤标和陈震则利用面向对象程序设计的理论模型,利用系统中函数间的关系概念和函数关系图,提出了面向函数粒度的程序代码行变更影响分析模型,并且利用静态分析和动态分析相结合的研究思路对需求变更的传播范围和影响程度进行了测试[4]。除此之外,DSM矩阵能够从本质上反映系统内部模块间的关联关系[56];而QFD矩阵多用来表现外部实体与系统内部组件之间的耦合度。以往学者们在分析软件体系结构的变更风险时,体系结构间的依赖值还主要是靠经验获取或预测,而不是基于模块的进一步划分和相关参数耦合关联推导,因此,本文基于专家学者已发表的需求变更评估模型,尝试通过对模块进一步划分成一个个具体的关键参数(类或对象),以及通过参数的依赖程度推导出模块间的关联度,最后再通过模块开发顺序的重组来控制需求变更风险[7]。
1信息传递与QFD质量功能矩阵
QFD矩阵表示质量功能展开,又叫质量屋,主要表示需求空间与体系结构间的映射关联关系。QFD作为一种设计阶段的映射方法,着重于系统需求与软件体系结构间的匹配和映射。
如图1所示,矩阵的行表示某需求由哪些组件实现,矩阵的列表示该组件(模块)的变动所影响到的所有需求。因此,构建出需求与软件体系结构之间的 QFD 关系映射,可以分析出当一个或多个需求发生变更时会直接影响到的组件。
001.jpg
2基于QFD和DSM的影响分析方法
研究过程和实施步骤如下:
(1)通过对用户需求分类和评估,最终由用户确定每个需求的重要度,即权重值。其中用户需求重要度的确定采用了粗糙集理论[8]。
(2)构造需求和模块对应的QFD映射矩阵,根据模块所影响的功能点归纳出每个模块(组件)的重要度:
Q(χ)=∑ni=1(m×ki)(1)
其中,Q(χ)代表组件χ的重要度; ki表示需求的重要度权值;m是依赖值。
(3)模块(组件)都是由一个或多个设计参数(类或对象)组成的,构造出组件参数QFD矩阵,根据模块对设计参数的依赖程度和模块的重要度权值推出模块间的自相关性,即软件体系结构DSM矩阵。
DSM(i,j)=∑nk=1(ωk×Ij→i×QFD(j,k))/∑nk=1(ωk×QFD(i,k))(2)
其中,K是关键设计参数的个数, Ij→i表示设计参数P对组件i和j有无制约关系,若无制约关系,则Ij→i=0,反之,Ij→i=1。
QFD(i,k)是QFD中第i行、k列的值,依赖度QFD(i,k)取值越大, 表示组件i与设计参数P之间的依赖关系越强,即设计参数P的变化会引起组件i较大程度的变化,反之,则表示对组件i的影响较弱[9]。
(4)上面得到的DSM矩阵只反映出了模块间的直接影响,然而模块间可能会存在着间接影响,例如A→B , B→C , 那么A对C也是有着传播影响的,即模块间的变更传播所造成的影响。由此构造出完整的DSM相关性矩阵,反映出软件体系结构的累积变更影响。
DSM(i,j)=∑∞m=1Ri,j(m)(3)
其中Ri,j(m)表示m阶传播影响[10]。
(5)通过模块重组减少反馈信息,降低模块变更的频率和影响范围,从而控制变更风险。
3应用举例
本文结合青岛某公司集装箱物流管理系统来验证该方法控制项目风险的可行性。该信息化系统主要包含以下几个需求:(1)财务管理,包括付款管理、财务审核、账务管理等;(2)客户信息管理模块;(3)订单模块;(4)停港靠港信息录入和导出;(5)统计查询,包括各类详细数据的查询、计算、导出和预估;(6)系统设置,包括用户角色管理、 权限管理、密码修改等;(7)信息导入导出模块。
(1)通过与客户不断地深入沟通和交流,对需求进行分类和归纳,最终由客户确定每种需求的优先级或重要程度,如图2所示。
002.jpg
(2)构造出需求组件的QFD矩阵,如图3所示,然后再根据组件所影响的需求个数和每种需求的重要度推算出组件的重要度或权重值,如图4所示。
003.jpg
(3)将组件进一步拆分成粒度更小的类或对象并构造出组件参数QFD矩阵,如图5所示。由于组件都是由一个或多个设计参数(类或对象)组成的,根据模块对设计参数的依赖程度和模块的重要度权值推出模块间的自相关性,即软件体系结构DSM矩阵,如图6所示。
004.jpg
本文暂时只考虑制约依赖关系,暂时不考虑其中的非制约依赖关系。
(4)上面得到的DSM矩阵只反映出了模块间的直接影响,然而模块间可能会存在着间接影响,例如A→B, B→C , 那么A对C也是有着传播影响的。因此,需在上步得到的DSM基础上计算出累积变更影响矩阵DSM,如图7所示。
005.jpg
图7表示组件间的累计变更传播矩阵,由上文中的公式(3)推出,表中影响值R(i,j)≤0.02的并没有计算在内,这种影响值微乎其微,可忽略不计。
(5)需求变更始终都会存在,真正的需求变更风险体现在:当某需求变动之后会影响相应的模块组件,形成一种强烈的反馈和返工,反馈会带来很大的成本投入和失败风险,因此合理调整模块的开发顺序,通过模块重组减少反馈(设计迭代),降低模块变更时的反馈和传播风险,从而控制变更风险。图8所示为模块重组后的DSM矩阵。
006.jpg
(6)最后利用仿真方法来评估模型改善后的效率和影响[1113],在做仿真时,各功能的学习率取值0.7~0.8,分别将优化前后的重组顺序执行300次仿真计算,结果如图9~图10所示。结果显示,与优化前相比,优化后项目开发总成本的均值和离散范围进一步缩小,这表明本文提出的优化模型有助于缩短项目周期、控制成本,并降低项目失败风险。
007.jpg
4结束语
本文在现有风险分析模型的基础上,将需求和系统组件联系起来的同时把组件划分成粒度更小的更容易把控的类或对象,从而根据依赖强度的大小推算出组件间的关联度,然后再根据依赖顺序将模块的开发顺序重组从而降低系统迭代和反馈,最后,对优化后的模型方法进行仿真评估,结果表明新方法可进一步准确地预估组件间的联系,在一定程度上降低了需求变更所带来的风险。 |
|