没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
58页
在软件开发中,软件度量的根本目的是为了管理的需要。利用度量来改进软件过程。人们是无法管理不能度量的事物。在软件开发的历史中,我们可以意识到,60年代末期的大型软件所面临的软件危机反映了软件开发中管理的重要性而对于管理层人员来说,没有对软件过程的可见度就无法管理:而没有对见到的 事物有适当的度量或适当的准则去判断、评估和决策,也无法进行优秀的管理。 我们说软件L_程的方法论主要在提供可见度方面 卜工夫。但仅仅是方法论的提高 并不能使其成为工程学科。这就需要使用度量。度量是一种可用于决策的可比较 的对象。度量已知的事物是为了进行跟踪和评估。对于未知的事物,度量则用于预测。
资源推荐
资源详情
资源评论
汕头大学计算机系硕 [:J断究生论文
摘 要
软件会随着时间变得越来越难以理解,越来越难以维护。重构是在保持程序
外邵可观察行为不变情况下,对软件的内邵结构进行重新改造和组织的技术,是
获得软件质量的一项关键技术 然而 “在哪使用哪种重构方法”始终是重构技术
需解决的主要问题之一。
重复代码是程序中最常见的代码 “坏味道”,Kont。91。n。15度量是检测重
复代码的一种量化方法 然而,由于该度量方法所用的 McCabe度量技术不能区
分 IF语句与循环语句的控制流复杂性,另外此方法不对两个比较函数的返回类
型进行判断,因而在度量重复代码时会产生错误匹配。通过引入两个新的度量变
量对其进行改进,提高该检测方法的准确性,并减少匹配错误 并通过引入过程
蓝图改进它的检测过程,避免了要将源代码转换为抽象语法树这一复杂费时的工
作,提高检测过程的效率 同时给出一种基于过程蓝图的程序环路复杂性度量实
现方法,简化度量过程和实现,提高度量处理的效率。
K。。t。91::;飞。15度量方法主要从代码的结构相似性识别重复代码,能识别出
方法级的重复代码 Bak。:提出的参数化匹配方法能检测出方法级以下的重复代
码,但它的空间复杂度要求过高,限制其能解决问题的范围。为此,我们引入过
程蓝图改进该方法,降低程序的空间复杂度,并避免将源代码变换为后级树这一
复杂过程。
将两种方法有机地统一在同一语境下 避免在传统方法中须将它们分开处理
的过程,即对相同的代码既要构造抽象语法树又要构造后缀树的过程,这样能更
有效和更精确地检测出重复代码这种 “坏味道”,为重构的自动定位和软件的自
动重构提供一定的买现技术。
关健字:重复代码检测;程序重构 环路复杂性;过程蓝图
抽象实现结
构图
第 5页
万方数据
币复代码检测技术的研呢
AbstraCt
Softwarecontintlo1ls1ybcco111esmoreandmol℃dif几ct七ltto[1:、dc土名talldal飞忆{
malntai宜lwitl飞timeel之IPsing一Retllctoringisakeyteclll飞iquetoacq[lircsonwarc
qLlalit丫w}飞icllistorcstrtlcttlreandreorgal飞izesoftwarewithot1tchangingltscx1e且nal
observablebehavio1LrHowever,”Wl飞eredidRefactoringComeFroll飞,1501、ekey
isslletol℃允ctol刁ng.
DtlP}Ic之Lted以)dcislllcworst“badsllle])5’:Kolllogla]11〕islllclr]csi片之ltecll宝1!‘]llc。(、
detecti]飞gthedtlplicatedcode.Howevcl几lsel:la丈chcswillbcta]、。::Placo0]1:,ccot]1。土
01’twofeasollswllelltllistecl飞11iqtteist笼scdtodetectt!ledtlP!icaLedco(Ic『1飞}le生lrst15
tl飞attl、econlpl七xllyol、tllecontl勺lflowbetweenifstatelnentandIoopsst七ltelne]It
calll飞olbedistingtllsl飞cdbytl飞eMcC是丫bemetricswl飞ichisuscdbytl、cKontoglall;115
1刀ellics.Thesccondlstl飞以ltlleKolltogia]Inlslnetricsdoesn一tlllake!tldgenlclllo] tllc
tyl,esoftlleretLI盆11,01’tl飞elwocoml〕之lredlnetllods.11飞th]spapcr.Kontog‘赶1111、isnlctlic片
lsilnPI劝vedbyl]ltl一odtIcingtwoncwvarlablcssothattheaccL1l书cyoldctcctll飞gtllc
dul〕licatc〔lcodei5ralscdal1dthc1’alscn1atchcsarel℃dtlced.Andatecllniqtlebased一011
proccssbltlepli]ltisl〕InPosed,whichmeastlresthe、oftwarccycloniaticcolllplcx:ty.
‘1’1:istec}IniqLle、in飞Plifie、t]飞eProcessofthe]的eas、lriogandeasyloill,]。1omcl:t.ltis
Inore emcie”tt}la门tlletraditionall刀ethod
Kolltogiall]11o111以ricssoal℃1:fordt甲]Lc:、tcstlsll飞gthc}、110认‘}cdgc山:1之[\、oclo]1。、
havesimilarstrtlcturala11dful1ctio宜飞a!ProPcrtics,soitcanrccongl飞lzetllesllllllal-
ltlnctions.飞’11epalnlneterizedstringn飞atchingmcthodProPosedbyBakelcal飞d以cct
duPllcatedblocks.However、itsabilitytosolveProblell1 islimitedlbrt1飞espace
colllPlexlty.Inorder1oreducetl1esPacecomPlexityofthearitl1meticanc1avoid
transformingtllesourcecodetoP一suffixtree,themethodisimProvedb之tsed一on
ProcessblLlePljllt.
DLIPlicated c()de c之Lllbe detec之ed acctlr乏ltely by lllte昌lati二lg two di恢re丈It
tecllniqLlesol巡aliica]Iyillt]lesalneco趁飞text.Basedonpl℃cessblLlePri孟11、vecalla、,01仁1
transformingtlleso:、rcecodetonotonlyabstractsyntaxtreeb:ltalsoP一sL:ffixtreeso
tliatmore effectivetechl、oIogyisProvidedforthelocalizationofaL1tolnatic
refactoring‘
Keyword
Cyclomatic
Structure
: DoteC七1()丁1
Complexity,
(〕f duPlica七ed code, 尸rogram refactoring,
procedure 81ueprint,
Ab凡tract
Loglc
Dia只ram(AISD)
第 6页
万方数据
汕头人学计算机系倾 日J}究生论文
第一章 绪 论
,.1前言
八软件月发‘J维打’的t钊9!实践,}1,人们了钊应认识到代码容幼变坏,程厅的设
计会逐渐腐败变质 ‘卜!人们只为知期日的或在完个理解性体设计之前,就对代码
进行修改 那么程)〕‘会于陡’阵易失去原来的结陶 、,、维打’软件}日,维护人员1山常使
川的刀汉、足 若系统了汀刁题,川二么就尽决地找到它少}八接修改 若要增加 项新
,L)J能,就会从!」七未的系夕加{,找到 决相j山丫J代码,寸号贝出来,作此修改,!{卜材!贴
j些去 这行:}等针j友引{·t从1刘1今‘、尹}1解的艾杂代码千}}系统奋}1护越来越卜}难、费川越米
越昂贵(
}几述1汕」题 lrtl堵}J尤了丫人们,了1}又必于珍1111苹决它{f丁.1{1此‘J!发 J’软件 1、.构技术1,1勺
研究 小同的 仪对币构了}各自的定义,门卜亡们的淆、]贝都足价小改变软件系统的外
部{J一为灯,祝,卜,调恰妇结构以改沂绒设计从理解性_日的址]lil山山,!1理解卞}_和的
化llJ!.程补华力 M川·1171 1了。、训创一在比艺作11].I,介州了许多小同的,时匀了八卫、,然1山
“阳哪使{{{哪种吸构为法“始终足f几构技术1去确丫决的 卜要问题乙 他引川Kon:
浅ck的“州、}味j返’川来识别程序代码的哪 州‘分裔·要1州勺,他同日‘}认为在实践‘}‘
没有 女好的度叭方法胜过人的汗狱,{ll少走研究表明,州;分 “环味逆”{户.}以{.卜
化的,如币复代码协 通过刊 ’‘坏1床j亘”自动探测的实现,日)以为软件的自功1认
构技术们 卜咯‘妇均从础 本文捉出对 种检测,几复代码的度{1七方法进行改进,捉
商1七检测精确性及效率:在此华砒 }_,引入参数化爪复代码的十忿则方法,使爪复
代码的十洲则!_们:吏为了」效,为一币杆J的自动定位提供 定的实现技术
1.2研究动机
又、]这个课题的()})乙丁绝们 }一要}1{1 一个动机
址软们爪构技术址软件 }_程近 1一年米】}常活跃的 个研究领域。热练地一幸
握谊构技术,!以J一}分币要的意义,‘已足编程的华本准则,足侮个程)1‘员能够井
}1.应该依幸的 项J.(刁丈技术,足极限编程的J.匕刁讨l{jJ丈部分 然l{IJ,价}山).J缺.二对
,R构技术r仔]{1)1:‘,己,)亡工七J亡义寸爪构定位方法及1’}:廿J!氏构 }_IL的{}1‘,’艺
足希.遏通过犬」‘砚杆J定位技术的研究,使儿能川来分析,呀际的尹1,}:‘)人}1}{’少
现币构的自动化
气址对K(ot()gi湘1115提出的度诫方法121做进一步地改件,井把度{,卜技术和币
构技术史好的结合在 起。同}中比BLlk。:的L作队J}入,使爪复代码的检测}作
更为有效
,.3相关工作
木课题1二要来源JMartinFlowerlll、KontogiallnisK{21、。.Baker{,1、00,:ald
RobertsI41和文IJ建宾教授T,1的工作。
第 7页
万方数据
取复代码检侧技术的研究
1.3。1重构定位
MartinFowlerll]一直致力于重构过程的工作,使重构变得更为实用。“在哪
使用哪种重构方法”是重构技术需解决的主要问题之一, 他引用 “坏味道”来
识别程序代码的哪 一部分需要重构,但同时认为在实践中没有一套好的度量方法
胜过人的直觉。Franksimonl6]使用度量技术进行重构定位,使部分可以“坏味道’,
通过度量呈现出来,并开发出工具 VR入4L一World Browse。但该工其由于采用只
维空间来显示度量结果,速度不快,并容易使用户混淆结果。[7〕则对 Slmon 的
方法进行了改进,提高了定位速度。
1.3.2重复代码检测
重复代码是首当其冲的 “坏味道”。因为其危害极大,所以很早就引起人们
的注意。目前己有多种方法来检测软件中重复代码,如 Ducasse等提出的简单串
匹配方法19],其本质是基于文本的比较,优点是与语台无关,可移植性好,缺点
是算法复杂性高,随项目的大小变化呈指数增长;而 Baker给出的参数化后缀树
匹配方法[3l,可以解决因变量名不同而导致的问题,从而使自动化检测迈进了 -
大步,其缺点是程序的空间复杂度要求过高;Kontogiannis等提出的基于度量的
检测方法12),其优点是能较精确地探测出重复代码并减少如注释等非功能性因素
对检测结果的影响,缺点是语言相关度大,有时会产生错误匹配。
1.3.3 过程蓝图
KontogianniS提出的度量方法需要将源代码转换为语法树12],而Bake:给出的
方法则需要将源代码变换为后缀树阴,同时Robert:指出带有类型和引用信息的
抽象语法树是 种 能被用于重构程序的表示方法,它包含足够丰富的信息来实现
强大的重构,并且能被快速地创建In]。然而,这些变换过程都是非常烦琐费时、
计算费用高昂的 Roberts还指出表达式变换最自然的方式是使用树到树的变换
规则。刘建宾教授提出的过程蓝图阎是一种图形化程序过程规格说明方法,是对
过程源代码进行描述的模型,本质上是抽象语法树,具有丰富的语义,因而具有
对程序重构、重复代码检测的支持能力。
1.4本文工作
本文的主要土_作内容有以 卜几万面:
① Kontogiann is度量方法的改进:该度量技术是检测出重复代码方法,但
在某些情况下,它会产生错误匹配。为提高其检测精确性和减少匹配错误,我们
提出通过增加新的变量,对其进行改进。
② Kontogiann is度量方法过程的改进:使用此度量方法时,需要先将源代
码转换为抽象语法树,然后再提取相关的信息进行度量。然而,将源代码转换为
抽象语法树是一件复杂费时的工作。因此,我们提出使用过程蓝图来改进这 过
第 8贝
万方数据
汕头大学计算机系硕十研究生论文
程。并给出一种基于过程蓝图的程序环路复杂性度量实现方法,提高基于语法树
的重复代码检测过程的效率。
③ 基于过程蓝图的参数化匹配方法:Bake:提出的参数化匹配检测重复代
码的方法需要先为源代码构造后缀树,然后再使用串匹配算法来检测重复代码。
然而,构造后缀树是一个十分复杂烦琐的过程,并且其空间复杂度要求过高 因
此,我们提出使用过程蓝图来改进这一过程。
④ 设计一个重复代码检测工具,该工具能有效地探测出重复代码,支持重
构的自动定位。
我们国家对软件度量和重构的研究正处在起步阶段,本文着重在于汲取国外
已有的研究成果的基础上,作一些改进和应用上的验证工作以及实践分析。此外
由于时间有限,重复代码自动检测工具无法在短时间内完成。因此,我们大多数
数据均来自于手工计算,这样就无法对实际系统进行全面系统地分析。
本文立足于在研究生期间所作的项目和课题,以软件度量和重构为研究方
向,结合具体实例,展开课题研究。
,.5论文组织
本文的主要内容共分为7章。
第 章绪论介绍了课题的研究动机、研究内容、与课题相关的工作以及本文
的工作;
第二章阐述了产生重复代码的原因,并简单介绍了不同的检测重复代码方法
的原理:
第三章给出了基于语法树的Kontogi如 5度量检测方法的原理,并通过引入
两个新的度量变量对其进行改进;
第四章提出使用过程蓝图来改进基于语法树的重复代码检测过程。同时,在
过程蓝图的基础 匕 给出一个计算程序的环路复杂性度量值的新的算法,简化了
该度量过程;
第五章介绍了参数化匹配检测技术的理论,同时提出了基于抽象结构实现图
的参数化重复代码的检测算法;
第六章设计了重复代码自动检测工具,详细介绍了系统的各个功能模块;
第七章对全文进行总结,归纳本研究中的内容和成果,对研究中的问题给与
改进,并对以后的工作进行了展望。
第 9贞
万方数据
剩余57页未读,继续阅读
资源评论
- yang123hp2012-05-24大部分没看懂,,只是需要环路复杂性
- wb_rock2012-08-25虽然看不懂,当然这是个人问题,谢谢楼主分享的精神
yul2002
- 粉丝: 2
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功