运用设计模式改进软件设计质量的研究.pdf

上传人:qwe****56 文档编号:69626412 上传时间:2023-01-07 格式:PDF 页数:5 大小:237.95KB
返回 下载 相关 举报
运用设计模式改进软件设计质量的研究.pdf_第1页
第1页 / 共5页
运用设计模式改进软件设计质量的研究.pdf_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《运用设计模式改进软件设计质量的研究.pdf》由会员分享,可在线阅读,更多相关《运用设计模式改进软件设计质量的研究.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 第 32 卷 第 2 期 电 子 科 技 大 学 学 报 Vol.32 No.2 2003 年 4 月 Journal of UEST of China Apr.2003 运用设计模式改进软件设计质量的研究 唐晓君*刘心松 查小科 邱元杰 杨 峰(电子科技大学计算机科学与工程学院 成都 610054)【摘要】针对应用设计模式改进软件设计质量中不规范的问题,提出一种运用设计模式改进软件设计质量的通用规范化方法。该方法基于客观度量标准、问题驱动和半形式化描述,减少了人为因素的影响,提高了设计模式应用的自动化程度。同时,通过改进一个流播放器设计的实例演示了该方法的具体实施过程,结果表明,该方法为开

2、发人员运用设计模式改进软件设计质量提供了有效手段。关 键 词 面向对象;设计模式;设计质量;度量标准 中图分类号 TP311.52 文献标识码 A Research and Experiment on Applying Design Patterns to Improve Software Design Quality Tang Xiaojun Liu Xinsong Zha Xiaoke Qiu Yuanjie Yang Feng (School of Computer Science and Engineering,UEST of China Chengdu 610054)Abstract

3、 This paper proposes a semi-formal,metric-based,problem-driven specification method to reduce the man-made effect and make the process of adopting design patterns on object-oriented software construction more automatically.Then,it demonstrates the method by redesigning an existed design of a streami

4、ng player via object-oriented method.Finally,it concludes the effect of this method on daily object oriented designing.Key words object oriented;design pattern;design quality;metric 恰当地运用设计模式可提高面向对象软件设计质量1,但依赖于设计者经验的运用方式常常无法达到预期的效果,不恰当的模式应用可能使设计更为复杂和难于维护2。为解决这一问题,文献2在具体的工程实践中开展了相关的尝试性工作,并取得了一定成效,但这些

5、尝试仅局限于特定的工程设计,而不是通用的规范化方法。本文提出一种运用设计模式改进软件设计质量的通用规范化方法,它基于客观度量标准,由问题驱动并采用半形式化描述,其主要特点为:1)引入IEEE std.982.1的软件成熟度标准并加以改进3,用于清晰、简洁地挖掘并描述待改进设计所面临的问题;2)采用目前广泛使用的C&K度量体系来度量面向对象设计的各项指标3,4,作为引入设计模式后对设计影响的客观评价基础;3)采用半形式化的方式,以便结合标准化描述的设计模式和现有的uml设计工具(如dia),作为实现应用模式改进设计的辅助工具。1 基本思想 1.1 度量标准 本文采用度量标准0来衡量软件设计稳定性

6、3,度量标准16为C&K面向对象度量标准2,4。1)度量标准0为SMI=|Mt|(|Fa+|Fc|+|Fd|)/|Mt|,其中Mt为软件中的模块全集;Fc为被修改的模块集合;2002年8月5日收稿 *男 26岁 硕士生 主要从事面向对象技术、软件工程和分布式流媒体技术方面的研究 电 子 科 技 大 学 学 报 第 32 卷 170 Fa为新添加的模块集合;Fd为被删除的模块集合。SMI越趋近1,表明需要变动的部分越少,软件设计越成熟、稳定。可用SMI(condition,m)表示设计的成熟度,其中condition为设计面临的改变需求,m为计算SMI的模块单位。2)度量标准1为WMC=,其中C

7、=niiC1i为类方法的cyclomatic complexity复杂度。WMC度量单个类的 复杂度,该指标越大,类越复杂,通用性、可复用性和可维护性越差。3)度量标准2为RFC=|RS|,RS=MiallijRij,令M=Mi,M为类的(包括其子类)方法全集,Rij为Mij调用的所有方法。RFC度量某个类与系统其他部分的耦合度,RFC越大,表明某个类与系统其他部分的耦合度越高,其可复用性、可维护性越差。4)度量标准3为LCOM=(|P|Q|),若|P|Q|0,则LCOM=0。其中P为类中不共享任何数据成员的方法对全集,Q为类中共享数据成员的方法对全集。LCOM度量某个类的内聚度,LCOM越大

8、,内聚度越低,类的划分越不合理,可复用性和可维护性越差,可以通过分解类降低LCOM。5)度量标准4为CBO=|Nrelate_by_non-inheritance|,其中Nrelate_by_non-inheritance为某个类发生非继承关系耦合的类的全集。CBO度量类之间非继承耦合度,CBO越小,类之间非继承耦合度越小,类的可复用性越好,且可理解程度和可维护性越好。6)度量标准5为DIT=某个类在继承关系树中层数,DIT越大表明某个类从父类继承的成员越多,预测其行为越困难,设计和维护越复杂,但其可复用性越好。7)度量标准6为NOC=|Nof_immediat_subclass|,其中Nof

9、_immediat_subclass为类的直接子类集合。NOC越大表明类设计不合理的可能性越大,但可复用性越好。1.2 方法描述 1.2.1 基本设定 1)令DS为设计集合,包含供选择的设计,DxDS表示将设计Dx加入集合DS;2)令D为需要改造的原始设计,C为设计面临的需求场景,P为需要解决的问题集,D|C表示设计D在C条件下需要作的改动,P:(SMI(D|C,M)表示由SMI(D|C,M)导致设计面临的问题P;3)PiPai表示列出可解决问题Pi的模式集合Pai;4)TRY(D,PaiPi)Di,表示运用候选设计模式Pai改造设计D得到Di;5)DataSet(Di,D)=DataOOME

10、TRIC,DSMI,DataOOMETRIC=CMP(D,Di,OOMETRIC),DSMI=CMP(SMI(D|C,M),SMI(Di|C,M),其中DataSet(Di,D)表示度量值比较集合,CMP(D,Di,OOMETRIC)表示统计并比较设计Di和D的度量标准16的值,CMP(D,Di,SMI)表示计算并比较设计D和Di的度量标准0的值。1.2.2 应用设计模式改进设计质量方法的半形式化描述 1)DDS,定义C、M,计算SMI(D|C,M),得问题描述P:(SMI(D|C,M);2)对于每个PiP:(1)PiPai;(2)对于每个PaijPai,TRY(D,PaiPi)Di,DiDS

11、,计算得DataSet(D,Di)=DMETRICS,DSMI,根据DMETRICS,DSMI评价Di;3)REPLACEWITH(Dbest),选择DS中最好的设计Dbest替代D。2 应用实例 本文以一个改进流播放器设计为例,演示上文描述方法的具体实施过程。图1是一个流播放器的设计类图,其主要功能是实现从流服务器获得媒体流,解码后同步播放。图中,Skin实现图形用户界面,Session封装RTSP协议5,实现会话管理(创建媒体流、控制播放进度),MediaStream描述一个媒体流,包括媒体流接收(RTPStream),解码(VCodec,ACodec负责音频和视频数据解码)和播放(VRe

12、nder、ARender播放视频和音频解码后的数据)。第 2 期 唐晓君 等:运用设计模式改进软件设计质量的研究 171 -hSyncMutexSession-hvCodec-haCodec-hVRender-hARender-hMutexMediaStream+hMutex()+hWnd()VRender-Mutex-hWndARender-hMutex-hWndSkin+Init()+GetNextFrame()+GetState()-hMutexRTPStream1*11-RTPStreamVCodec-RTPStreamACodec11111111 图1 流播放器设计类简图(仅包含和本

13、文相关部分)。假设改进设计的目的是提高流播放器的可移植性和数据流播放方式的可扩展性(讨论时假设某一部分采用设计模式,而其他部分没有发生改变)。按照1.2节的方法,上述问题可以描述如下:令D=原始设计,DS为设计集合;C=C1,C2;C1=将播放器从平台A移植到平台B,且C11、C12和C13;C11=互斥机制不同;C12=线程机制不同;C13=GUI不同;C2=目前的播放方式为RTP流6,需要播放器能够播放文件流。D|C1需要修改类为:除了VCodec和ACodec的其他类,得P1:(SMI(D|C1,class)=0.25),说明D的可移植性有提高的余地。D|C2需要修改类为:MediaSt

14、ream、VCodec和ACodec,得P2:(SMI(D|C2,class)=0.56),说明D的数据流可扩展性有提高的余地。2.1 解决可移植性问题P11)分解问题P1,并描述其子问题。P11:(SMI(D|C11,class)=0.25)(在D|C11情形下,设计中共包含8个类,仅ACodec和Vcodec不需要修改,所以SMI(D|C11,class)=(86)/8=0.25,后继SMI值计算方式类同);P12:(SMI(D|C12,class)=0.75);P13:(SMI(D|C13,class)=0.75);P11说明平台A、B的互斥(Mutex)机制不同,对设计稳定性的影响存在

15、减小的空间;P12说明平台A、B的线程机制不同,对设计稳定性的影响存在减小的空间;P13说明平台A、B的GUI机制不同,对设计稳定性的影响存在减小的空间。2)P11Pa11(列出可以解决问题P11候选模式)得1Pa11=Bridge Pattern 3)尝试用模式改造设计(1)TRY(D,Pa11P11)D11,得如图2所示的设计(仅描述了加入的部分);(2)D11DS(将设计D11加入集合DS);(3)DataSet(D11,D)(比较设计D11和D的度量值)DataOOMETRIC=CMP(D11,D,OOMETRIC),得统计数据(其中DIT、NOC,RFC和CBO由Understand

16、 for C+辅助计算获得,WMC根据函数复杂度作了修正3,LCOM值为手工计算,以后的计算方法类同),D11相对D的原有类度量值增量和新加入类的度量值如表1、2所示,表1中,+为增,为减。Datasmi=CMP(D11,D,SMI),计算结果如表3所示(在D11|C1情况下只需添加新的类xxxMutexImp)。(4)分析上述数据可知,改进后D11较改进前D的RFC和CBO值略有提高,表明由于引入Bridge Pattern屏 电 子 科 技 大 学 学 报 第 32 卷 172 蔽不同平台互斥机制的差异,使类之间的非继承关系的耦合度有所提高;WMC、LCOM值没改变,说明单个类的复杂性没有

17、提高;DIT和NOC值没改变,说明类继承关系的耦合度没有提高;SMI(D|C,class)提高了0.66,表明不同平台的互斥机制不同给设计带来的不稳定性明显降低。所以,引入Bridge Pattern降低了互斥机制的差异对可移植性的影响,达到了预期的目的,D11优于D。(5)REPLACEWITH(D11)(应用Bridge Pattern改造原有设计中的互斥机制)。4)以同样步骤和方法处理P12和P13。表1 D11相对D的原有类度量值增量 相关类 WMC DITNOC LCOM RFC CBOSession 0 0 0 0+3.00+1.00MediaStream0 0 0 0+3.00+

18、1.00Vrender 0 0 0 0+3.00+1.00Arender 0 0 0 0+3.00+1.00Vcodec 0 0 0 0 0 0 Acodec 0 0 0 0 0 0 RTPStream 0 0 0 0+3.00+1.00Skin 0 0 0 0+3.00+1.00平均 0 0 0 0+2.25+0.75+GetImp()+WaitForMutex()+Release()-hMutexImpMutex+WaitForMutex()+Release()MutexImp+WaitForMutex()+Release()-hMutexWinMutexImp 图2 采用Bridge P

19、attern屏蔽Mutex平台相关性 表2 新加入类的度量值 表3 采用Bridge Pattern前后设计稳定性比较 2.2 解决数据流处理方式可扩展问题P21)描述问题P2P2:(SMI(D|C2,class)=0.75),说明播放器的数据输入方式的可扩展性有提高的余地。2)P2Pa2(列出可以解决问题P2候选模式)得1Pa2=Factory Pattern 3)尝试用Pa2中的模式改造设计(1)TRY(D,Factory PatternP2)D2,采用Factory Pattern改造原有设计得设计D2,如图3所示(仅描述改变部分)。(2)D2DS(将设计D2加入集合DS);(3)Dat

20、aSet(D,D2)(比较设计D2和D的度量值),计算得DOOMETRICS,统计结果如表4、5所示,Dsmi的计算结果如表6所示。(4)分析上述数据知,改进后D2较改进前D的CBO、RFC略有提高,表明D2较D类非继承关系的耦合度有所提高;WMC、LCOM值没改变,说明单个类的复杂度没有提高;DIT和NOC值没改变,说明类继承关系的耦合度没有提高。SMI(Di|C,class)升高0.36,说明系统数据输入机制的可扩展性有所提高。所以,引入Factory Pattern模式有效地提高数据输入方式的可扩展性,D2优于D。4)REPLACEWITH(D11)(应用Factory Pattern改

21、造原有输入方式)。相关类 WMC DIT NOC LCOM RFC CBOMutex 4 0 SMI(Di|C,class)相关设计 0 0 2 2MutexImp 0 0 1 改进前(D=D,C=C11)0.25 改进后(D=D11,C=C11)0.91 2 0 0MutexWinImp 4 1 0 0 0 0 第 2 期 唐晓君 等:运用设计模式改进软件设计质量的研究 173 +Init()+GetNextFram+GetState()e()MediaByteStream+I+G+G+Ad+R+Se+Rnit()etNextFrame()etState()dRtpPacket()ecvPa

22、cket()ndRR()ecvSR()-hM-hM-hM-iBuheadtailutexfferTimerRTPStream+Init()+GetNextFrame()+GetState()-hMutexFileStream+GetStream()-hMStreamStreamCreator表4 D2相对D的原有类度量值增量 WMC DIT NOC LCOM RFC CBO NOC相关类 Session 0 0 00 0 0 0MediaStream0 0 00+4+20Vrender 0 0 00 0 0 0Arender 0 0 00 0 0 0Vcodec 0 0 00 0 0 0Aco

23、dec 0 0 00 0 0 0RTPStream 0+100 0 0 0Skin 0 0 00 0 0 0 平均 0+0.1300+0.50+0.250图3 采用Factory Pattern提高数据流输入方式可扩展性 表5 新加入类的度量值 表6 采用Factory Pattern设计稳定性比较 WMC DIT NOC SMI(DLCOM RFC CBO NOC|C,class)相关类 相关设计 i改进前(D=D,C=CStreamCreator 2 0 0 0 0203 结结 束束 语语 本文提出的方法为设计人员在实际工程实施中提供了简单可行、便于文档化的操作规范,其基于客观度量标准的方

24、式使开发人员能够系统、便捷地提取(改进)设计,更为客观地评价设计模式的应用效果,该方法也为设计模式的创建者提供了提取、测试和描述新设计模式的参考手段。参 考 文 献 1 Erich G,Rechard H,Ralph J,et al.Design pattern elements of reusable object-oriented softwareM.Beijing:Person Education North Asia Ltd,1995 2 Masuda G,Sakamoto N,Ushijima K.Redesigning of an existing software using d

25、esign patternsC.Proceedings.International Symposium on,2000,165-169 3 Roger S P.Software engineeringa practitioners approachM.Beijing:McGraw-Hill Companies,Inc,2001 4 Chidamber S R,Kemerer C F.A metrics suite for object oriented design.Software EngineeringJ.IEEE Transactions on,1994,20(6):476-493 5 Network Working Group.Real Time Streaming Protocol(RTSP)S.1998 6 Network Working Group.RTP:A Transport Protocol for Real-Time ApplicationsS.1996 编 辑 徐培红 MediaByteStream 0 0 0 0 00 12)0.56 改进后(D=D2,C=C2)0.92

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 财经金融

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁