(计算机应用技术专业论文)基于面向对象程序切片技术的耦合和内聚度量.pdf_第1页
(计算机应用技术专业论文)基于面向对象程序切片技术的耦合和内聚度量.pdf_第2页
(计算机应用技术专业论文)基于面向对象程序切片技术的耦合和内聚度量.pdf_第3页
(计算机应用技术专业论文)基于面向对象程序切片技术的耦合和内聚度量.pdf_第4页
(计算机应用技术专业论文)基于面向对象程序切片技术的耦合和内聚度量.pdf_第5页
已阅读5页,还剩52页未读 继续免费阅读

(计算机应用技术专业论文)基于面向对象程序切片技术的耦合和内聚度量.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于面向对象程序切片技术的耦合和内聚度量 摘要 软什度量是保证软件质最的重要方法,一个好的度量方法会给软 件工业生产带来巨人便利,同时带米不叮估量的经济效益。 程序切片技术是。一种重要的程序分析技术,通过确定切片准则, 可以计算出对此特定准则产生影响的程序代码。通过切片技术,可以 很容易地定位人们所关心的代码部分,然后集中精力和经济进行深入 研究。程序切片技术的应用领域很广,软件度量便足其中一个重要方 面。 本文首先对程序切片技术和软什度量技术及其在软件工程各个 领域的广泛应用进行深入分析,立足于这两种技术的基本原理、方法, 为后续研究奠定理论基础,同时指这两种技术的未来发展和继续研 究的方向。 其次重点探讨而向对象程序切片技术。采用f i 前最主流的实现面 向对象程序切片的技术:基于面向对象的系统依赖图,在其基础上利 用图的可达性算法获得切片结果;然后引入数据切片概念,打破传统 语句级另i j 的程序切片,得到体现程j - - 事本质的基本粒度变量和方法 的集合。 再次,将这种面向对象程序数据级别的切片应用到软件度量方 而,设计一种度量内聚度和耦合度的方法。 最后通过理论说明和实验验证两个角度,证明这种度量办法是一 种较为优良的度量方法,是可行的。 f 关键词:p t ! 序切片,软件度量,内聚,耦合 a b s t r a c l c o u p l i n ga n dc o i i e s i o nm e t r i c s r e s e a r c hb a s e do no b j e c t o r i e n t e d p r o g r a ms l l c i n g a b s t r a c t s o f t w a r e q u a l i t y i sav e r y i m p o r t a n t i n d i c a t o ri ns o f t w a r e d e v e l o p m e n tp r o c e s s ,a n ds o f t w a r em e t r i c si sa ni m p o r t a n ta p p r o a c ht o e n s u r et h es o f t w a r eq u a l i t y ag o o ds o f t w a r em e t r i c sw i l lb r i n gg r e a t c o n v e n i e n c et oi n d u s t r i a l p r o d u c t i o n o fs o f t w a r e ,a n dw i l l b r i n g i m m e a s u r a b l ee c o n o m i cb e n e f i t sa tt h es a m et i m e p r o g r a ms l i c i n gt e c h n i q u e i sa n i m p o r t a n tp r o g r a ma n a l y s i s t e c h n o l o g y t h r o u g hs l i c i n gc r i t e r i a ,w ec a nc o n c e n t r a t eo nt h a tn e e d e d p a r to ft h ec o d e ,t h e nb e g i nt h en e x ts t u d yi n d e p t h ,b u tn e g l e c tt h ed e t a i l s o fh a r a s s m e n t p r o g r a m s l i c i n gt e c h n o l o g y h a saw i d e r a n g e o f a p p l i c a t i o n s ,a n ds o f t w a r em e t r i c si sa ni m p o r t a n to n eo f t h e m f i r s t l y ,t h i sp a p e ra n a l y s e st h ep r o g r a ms l i c i n ga n ds o f t w a r em e t r i c s t e c h n o l o g yp r o f o u n d l y ,i n c l u d i n gt h e i rb a s i ck n o w l e d g e ,p r i n c i p l e s ,t h e b r o a da r e ao fa p p l i c a t i o n si nv a r i o u sf i e l d so fs o f t w a r ee n g i n e e r i n ga n d t h ed e v e l o p m e n td i r e c t i o ni nt h ef u t u r e t h i si san e c e s s a r yp r e c o n d i t i o n f o rt h ef o l l o w i n gs t u d y 北鼻( 化一1 :人! 帧l j 学f ? ,沦义 s e c o n d l y ,i tf o c u s e so no b j e c t o r i e n t e dp r o g r a ms l i c i n gt e c h n i q u e s u s i n gt h em o s tm a i n s t r e a mp r o g r a ms l i c i n gt e c h n i q u e sa n dr e l y i n go n o b j e c t o r i e n t e ds y s t e m sd e p e n d e n c eg r a p h ,w ec a no b t a i nt h es l i c i n g r e s u l t sb a s e do nt h er e a c h a b i l i t yg r a p hs l i c i n ga l g o r i t h m d u et ot a k i n g a d v a n t a g eo fd a t as l i c ec o n c e p t ,w ec a no b t a i nt h ed a t as l i c i n gr e s u l t s w h i c hi sac o l l e c t i o no fv a r i a b l e sa n dm e t h o d s t h ed a t as l i c i n gb r e a k s t h et r a d i t i o n a ls t a t e m e n tl e v e lo fp r o g r a ms l i c i n g ,a n di ti sad e e p e r r e f l e c t i o no ft h ep r o g r a m t h e nw et a k et h i st e c h n o l o g yi n t os o f t w a r em e t r i c st of o r man e w m e t h o d ,w h i c hc a nm e a s u r et h ec o u p l i n ga n dc o h e s i o nd e g r e eo fa p r o g r a m f i n a l l y ,t h r o u g ht h e o r e t i c a l a n de x p e r i m e n t a l p o i n to fv i e w ,t h e a r t i c l ep r o v e st h a t t h i ss o f t w a r em e t r i c sm e t h o di sa r e l a t i v e l yg o o d m e t r i c s ,a n di ti sf e a s i b l ei nm a n ya p p l i c a t i o n s k e y w o r d s :p r o g r a ms l i c i n g ,s o f t w a r em e t r i c s ,c o h e s i o n ,c o u p l i n g l v 北京化工大学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独 立进行研究工作所取得的成果。除文中已经注明引用的内容外,木沦 文不含任何其他个人或集体已经发表或撰写过的作品成果。对本文的 研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人 完全意识到本声明的法律结果由本人承担。 作者签名:垒壹 日期:作者签名: 盐丑 日期: 关于论文使用授权的说明 学位论文作者完全了解北京化工大学有关保留和使用学位论 文的规定,即:研究生在校攻读学位期间论文工作的知识产权单 位属北京化工大学。学校有权保留并向国家有关部门或机构送交 论文的复印件和磁盘,允许学位论文被查阅和借阅;学校可以公 布学位论文的全部或部分内容,可以允许采用影印、缩印或其他 复制手段保存、汇编学位论文。 保密论文注释:本学位论文属于保密范俐,在上年解密后适用 本授权书。非保密论文注释:本学位论文不属于保密范蚓,适用本授 权书。 作者签名:一生主 一 口期:塑z :皇:三j作者签名:土立 一 口期:竺2 :茎:圭f 导师签名: 第。章绪论 1 1 研究目的和意义 第一章绪论 在当今这个高速发展的信息时代,人们越来越重视软件质量。冈为软件不仅是装 备和工具,更是服务和产品,其质量得到顾客较高的满意度是其丌拓并且f 吁领i t 场, 继而取得事业蓬勃发展的关键凶素。闩益激烈的市场竞争要求软件产业以最短的产品 开发周期( t i m e ) 、最优的产品质量( q u a l i t y ) 、最低廉的制造成本( c o s t ) 干l l 最好的技术支 持与售后服务( s e r v i c e ) ,即“t q c s p ”来赢得市场与用户。全球化的变革,给软件行 业带来严峻挑战。 软件管理工程讵是管理和调试“t q c s p ”各个组成部分的管理技术。由此可见, 软件管理工程的意义至关重要。软件管理工程引起广泛注意起源于2 0 世纪7 0 年代 中期,之后人们开始软件管理的研究。到2 0 世纪9 0 年代中期,软件工程管理不善的 问题仍然存在。在关系软件项目成功与否的众多因素中,软件度鼍、工作量估计、项 日规划、进展控制和风险管理等都是与工程管理直接相关的凶素。软件管理工程和其 他工程管理相比有其特殊性。首先,软件是知识产品,其进度和质量牵涉很多因素, 而且是较为新兴的产业,度量技术很不成熟,造成度量凼难,生产效率也难以保证。 其次,软件系统复杂柙度也是超乎想象的。因为软件的复杂性使得其难以度量,所以 软件管理工程的发展还很不成熟。 软件度量是软件管理- 十i l l 的一个重要方面,在软件管理工程中有着广阔的发展前 景,一个好的度量方法会给软件工业生产带来巨大便利,同时带水不呵估量的经济效 益。软件开发i f 在经受一场危机,费用超支,特别是在维护阶段的花费太人、生产率 低下以及质量不高等问题i f 严重困扰着它。简言之,软件丌发经常处于失控状态。其 失挖原因是因为缺少有效的度量。 软什度罩是一个很广的概念,有很多小同的定义。软件度副i 】t - 要包括复杂性度 量、模块性度鼍、测试充分性度最、易移植性度量、可扩充性度量、可靠性度景、易 维护性度量、易修改陀度量等。有些可以用数值表示,称为“定量度景”;不能用单 一数值农达出:米的称为“定性度量”。 自从m w e i s e r 于1 9 7 9 年提出程序切片1 2 l ( p r o g r a ms l i c i n g ,p s ) 的原耻和方法后, 程序切片作为门新兴学科正在蓬勃发展。作为一种重要的程序分析技术,程序切片 技术近年来初:4 粥! 序凋试、软件测试、度量、维护、程序理解以及逆向工程等方面有 许多应j 玎。通过切片,人们- 叮以把集q j 精力研究所关心的部分代码。 大方向术看,程序分为面向过秸埽l 面向对象两种,竹i 对应的切j j 技术也分为面向 过程科序切片和嘶向对象程序切片。对于过程型程序,过程和过程调用构成程序主体, 所以对过程内和过不罕1 1 l j 切片进行重点分析,这方面技术h 附比较成熟。 北丘i 化i 人。# 坝l j 学位论文 对于面向对象符! 序切片,现在普遍采用的方法是改进已有的用于计算过程型程序 的图形表示方法,扩充其功能使其具仃表示【f i i 向对象程序的能力,构造能够描述而向 对象程序的系统依赖图p j 。目前的程序切片大都以系统依赖图为基础,在其基础上利 用图的可达性算法获得。 本文利用面向对象程序切片技术进行软件度量方面的研究,主要集中在内聚度量 和耦合度量之上,尤其是内聚度量。 1 2 研究内容 本文的主要工作是将面向对象的程序切片技术灵活应用于软件度量领域,设计一 种新的度量软件内聚度和福合度的方法,然后从理论和实验两个方面说明这种方法的 可行性。 主要研究内容如下: ( 1 ) 研究软件度量和程序切片的技术发展,并对其改进和发展前景做出判断; ( 2 ) 将面向对象程序切片技术和软件度量技术融合,设计一个适用于面向对象程序 的度量方法,度量程序的内聚度和耦合度; ( 3 ) 通过构造面向对象系统依赖图,利用| 墨| 可达性算法,得到面向对缘程序切片; ( 4 ) 引入数据切片概念,进一步对所得面向对象程序切片进行处理,得到不同于传 统语句级别的变量级别的数据切j 1 ;根据所得数据切片进行程序内聚和耦合度量。 ( 5 ) 验证采用该方法进行的内聚度量符合b r i a n d 提出的4 个性质,是。种较为优 良的内聚度量方法;进行大最实验,验证该方法的可行性。 1 3 论文的篇章结构 文章的篇章结构设胃如下: 第一章:绪论,主要介绍本论文研究的背景,研究的目的和意义,主要的,l :作内 容和范围等; 第二章:相关技术综述,在阅读大量文献的基础上,对软件度量以及群# 切i i 技 术的发展、应用和未来研究方向等情况进 j 二综述; 第三章:重点研究面向对象的程序切片技术,包括i f l f 向埘象系统依赖劁的构造和 基于面向对象系统依赖图的程序切片算法; 第坦l j 章:利川血i 向对象的程序切片技术进行软件度量,包括内聚皮鞋雨i 耦合度量 两个方面; 第五章:证明荩于面向对象程序切片的软件度量方法符合b r i a n d 的4 个性质, 2 第辛绪论 是一个优良的内聚度度量方法,是可行的; 第六章:实验设计,包括横向实验和纵向对比两方l 面,分另l j 从实验数黾和同其他 方法的对比进行有针对性实验研究; 笫七章:总结与展望,对全文进行总结,包括已经取得的成果和钉待进一步改进 的地方。 第二昂棚灭技术 第二章相关技术 本章主要论述了软件度量技术和程序切片技术的发展、构成和分类,同时 对这弼项技术的i 订景,秆 互融合做了展望,重点介绍了程序切片技术的一个术米 发展方向无定型程序切片。这螳技术理论知识埘后面方法的构建,性质的证 明和实验设讣有着直接目重要的作用。 2 1 软件度量技术综述 软件度量( s o f t w a r em e t r i c s ) 是对软件开发项目、过程及其产品进行数扔;定 义、收集以及分析的持续性定量化过程,目的在于对此加以理解、预测、评估、 控制和改善。没有软件度量,就不能从软件开发的瓶领巾跳出来。 通过软件度量可以改进软件开发过程,促进项f 1 成功,开发高质帚的软件 产品。度量取向是软件开发诸多事项的横断面,包括顾客满意度度量、质量度量、 项目度量、以及品牌资产度量、知识产权价值度量等。 度量取向要依靠事实、数据、原理、法则;其方法是测试、审核、调奄; 其工具是统计、图表、数字、模型;其标准是量化的指标。 2 1 1 发展背景 当代社会中,计算机在人们f = f 常牛活的每个领域几乎都扮演了非常蕈要的 角色,计算机运行不可或缺的软件也越来越重要。因此,可预测、可重复、准确 地控制软件开发过程和软件产品非常重要。软件度量就是衡量软件品质的一种重 要并且有效的于段。 软件度量或者况软什工样度帚领域是一个在过去3 0 多年研究:1 f 常活跃的软 件工程领域。i e e e 对“软件度量”的定义是:软件度量是一个函数,其输入是 软件,输i “足单。的数值,能j j 以解释软件所具仃的一个给定属性对软件质量的 影唰3 1 。 软件度量研究t 要分为两个方向:一部分认为软件i 一丁以度最,一部分认为 软件无法通过度鲢进行分析。关心软件的晶质和认为软件需要定量化度量却总是 研究主流h 的,引导着度量技术的发展。 在软件丌发中,软件度量的根本u 的是为了管理的需要,利用度韪来改进 软件过程。在软件于i :发的历史中,2 0 世纪6 0 年代木期的大型软件所面临的软件 危机反映了软件开发巾管理的重要性,向人们恰恰没有苇视这一层面。埘于管理 人员来说,没有对软件过程的可见度就尤法管理;而没有对见至0 的辔物有适当的 度罱或适当的准则去评估、判断和决策,就无法进行优秀的管理。 尽管软件度餐的研究成果还不成熟,处于初级阶段,需要大量工作彳i 叮能 真讵地做到实用化,但它的实刚化结果将对软件的高质量和高速发展有着不可f 【i i 量的影响,进而优化软件工程的整个流程。 随着软件度量的重要性彳i 断增加,市场上出现了许多度量工具。然而,度 量工具目前还是很混乱。因为没有统一的度鼍标准规范,每种工具发明商家都足 按照f 也 l l j 自己的软件度量规范自由丌发。迫切需要一种规范的协议来解决这种局 面,同时也节约了社会资源,提高了效率。 软件度量的目标可大致概括为两类:其一,依靠度量来进行评估和计算, 这使得可以同步地跟踪一个特定的软f - b s i 目;其二,依靠度量来预测项f l 的一砦 重要的特性,便于管理。 但是,必须要指出的是不能过分夸大这些预测,因为事实上这种期望是不 现实的,它们并不是完全正确的。软件度量得到的结果也仪仪是预测而已。有些 人甚至认为只要使用合适的模型和工具,所获得的预测可以精确到只需使用极少 的其他度量,甚至根本就不用使用度量。这些属于盲目夸大度量作用的行为,并 不可取,是要孥决摒弃的。 2 1 2 基本理论 软件质量直接影响软件的使用和维护,软件丌发人员、维护人员、管理人 员和用户都十分重视软件的质量。提高软件产品质量已成为软件工程一项首要任 务。软件可靠性是影响软件质量的重要凶素,提高软件可靠性是软件工程的了目 标之一。 为了保证软件的可靠性和质量,一般采取软f - b i j 1 0 试和软件度量两种方法。软 件测试是在软件投入运行之前,对软件需求分析、没计规格说明和编码的最终复 审,以发现软件巾的错误。 度最是在现实世界中,刚数值或符 赋予客体或事件的某一属性,软件度量 可以帮助管理人员控制、安排软什开发过稃并利用反馈信息对软件进行改藩,从 刚足高软件质黾。 由- 丁而向对象软件,i :发方法在软件生存周期、系统结构、蓖f j 和项目管州等 方而与传统软件了l :发方法有显著区别,【灭| 此传统的度量方法已不阿遁j l - j 于面向对 琢的某蝗概念。面向对象程序设计发展的日益壮大促使新的、适川于度鼍向对 象程序的方法的发展。本义即足对这个需求强烈的方向进行的研究。 6 第二搴棚父技术 软件属性分为内部属性和外部属性。内部属性通常描述软件结构的复杂性, 如软件大小、控制流、耦合度和内聚度等。外部属性涉及人和环境的外部凶素, 如复杂性、可理解性、可维护性等。 度量足将数值或符号赋予客体或时问,而所赋予的数值或符n 必须能够反 映事物被度量的属性。冈此,任何一个软件度量均需要具备如卜4 个要素: ( 1 ) 确定要度量的软件属性; ( 2 ) 建立软件属性的经验系统; ( 3 ) 通过度量准则将经验系统映射到形式系统; ( 4 ) 评估度量准则。 本文的度罱方法i j 样包含上述4 个要素:首先确定要度餐的软件属性为耦合 度和内聚度;然后利用程序切片技术建立度量公了;最后从理论说明和实验验证 两个角度,证明这种度量方法的可行性。 2 1 3 度量模型 软件产品的度量主要针对作为软件开发成果的软件产品的质量而言,独立于 其过程。软件的质量由一系列质量要素组成,每一个质号要素又由一些衡量标准 组成,每个衡量标准又由一些量度标准加以定量描述。质量度量贯穿】- 软件: i 翌 的全过程以及软件产品交付之后。软件交付之前的度晕一卜要包括稃序复杂性、模 块的有效性和程序总体规模;软件交付之后的度量主要包括残存的缺降j 数和系统 的可维护性方面。一般情况下,可以将软件质量特件定义成分层模型。 b a r r yw b o e h m 在( ( s o f t w a r er i s km a n a g e m e n t ( 软件风险管理) 中第一次 提出软件质量度量的层次模型【4 1 。而m c c a l l 等人则将软件质黾分解全能够度量 的层次,提出f c m 4 13 层模型:质最要素( f a c t o r ) 、衡哩i - - j 标准( c r i t e r i a ) 和量度标准 ( m e t r i c s ) 。 ( 1 ) 第一层 质最要素:描述和评价软什质鞋的一组槭陛,包括功能性、可铭性、易用 性、效率性、可维护性、可移械一t t - 等质毓特性以及将质量特l l - :f l f l 化,虹7 。- r i f l 。r - i l lj i - t - 性。 ( 2 ) 第二层 衡量标准:衡量标准的组合反映某一软什质量要素,包括精确p f 、稳健性、 安伞性、通信有效性、处理有效r # 、设备午j | 效性、可操作性、l i , :f j i l 阡、完备随、 一致性、可追踪性、可见性、硬件系统无关性、软什系统尢火陀、可扩充性、公 用性、模块性、清晰性、自捕述,p t 、简币性、结构性、文中i :完备性等。 ( 3 ) 第三层 j e i 化1 人:j f 一吼i 。 p 论文 量度标准:可由各使刚单化f 1 定义,根壬i i j 软件的需求分析、概要设计、详 细设计、编码、测试、确认、维护0 使j | 】等阶段,针对每一个阶段制定问卷农, 以此实现软件丌发过程的质镀度瞳。 2 2 程序切片技术综述 顾名思义,程序切片就是指将一个程序中用户所感兴趣的代码都抽取出来 组成一个新的程序,这个新的程序就是原程序的切片。根据切片规则的不同,生 成的切片结果也各不相同。 程序切片足一利t 重要的程序分析列! 解方法,用于从原程序中抽取对程序中 特定点上的特定变量有影响的语句和控制条件,然后通过分析切片来分析原程序 的 ,为1 5 j 。 切片准则【6 】( s l i c i n gc r i t e r i o n ) 是进行切片的依据,是一个由语句位置和感 兴趣变量组成的二元组。程序切片足根击j i i :切片准则对原程序进行删减操作得到语 义上等价的语句集合。程序切j ;可以用一个四兀组来表示( s ,m ,er ) ,s 表示原 程序;c 为切片准则即是一个- - :元组( p ,v ) ,其中p 表示语句位置;v 表示感兴趣 的变量;f 为切片方法;r 为切片后结果语句集合。 切片技术足软件工程领域中一种年轻的理论,起源于m w e i s e r 十1 9 7 9 年 的博士论文,近3 0 年来,人们对它进行了j “泛而深入的研究,取得了许多研究 成果。稃j 。切片在软件工程的各个领域发挥了重要的作用,并日成为软件:i :程学 科的一个重要的研究分支。程序切片技术在软件理解、测试和维护中具有非常“ 阔的空i 、i l j 。 2 2 1 发展背景 程序切片的原瑚和方法是由m w e i s e r 十1 9 7 9 年在他的博士论文中首先建 立的,后来分别于l9 81 年和19 8 4 年存他n 勺两篇论文r f l 义得到了进步的完善和 推j 一。m w e i s e r 博十不仪建立了程序切”的概念,而n 提m 了基于控制流图的 汁算程序切片的力法,以及恭于程序切片的软什度量堆小框架等,为后来人们扩 展杞! 序切片及其应川奠定了i 簪实的莽础。 此后,以:m w e i s e r 博i _ f j 研究的毖砒i - - 义订y f :多人提j 了不同的程序切片的 定义和用于切片的镥法。其l i 包括h o r w i t z 提出的程序切片算法,他将程序依赖 图( p r o g r a md e p e n d e n c eg r a p h ,p d g ) o 。展为系统依赖图( s y s t e md e p e n d e n c e g r a p h ,s d g l ,解决了w e i s e r 提出的算法。| i 无法解决过榭调j 十j 的问题;以及由 8 笫昂丰i l 父技术 k o r e l 和l a s k i 提出的动念切片的概念和c a n f o r a 提出的条件切片技术等l 引。1 9 9 7 年,m a r kh a r m a n 和s e b a s t i a nd a n l c i c 提出了无定型切片1 7 1 的概念,打破了传统 程序切片语句保持的壁垒,为切片技术进一步发展打开道路。 程序切片被作为程序在人脑中的一种智力抽象,是对原程序语句的过滤或 者剪裁。通过计算,人们得到其中只与兴趣点相关的部分,而不去管其余的部分。 这样就得到了一个比原程序要小的语句集合,便于测试或维护,大大减少了丌发 人员的工作负担,从而提高j 1 :作效率并避免出错哺】。 程序切片技术是一种重要的程序分析理解方法,可以帮助开发人员和维护 人员理解程序的结构和作用。随着编秤语言逐渐趋于人性化、多功能化和复杂化, 为了适应编程语言的这种进步,程序切片技术也在不断演化发展。 程序切片技术的发展经历了从静态到动态,从前向到后向,从单一过程到 多个过程,从面向过柙的程序到面向对象的程序,从非分佰,到分布式的程序的 发展过程。随着软件开发技术的不断进步,程序切片技术也会随之发展。 纵观全局,程序切片经历了以下几个发腱阶段p j : ( 1 ) 基于数据流方面的程序切片阶段 这一阶段只要指m w e i s e r 博士建立的程序切片的基本概念以及基于c f g 数 据流方程计算程序七u 片的算法。 ( 2 ) 基于依赖图的程序切片阶段 这一阶段程序切片技术在m w e i s e r 博士建立的基础上有了很大发展,引入 了基于程序依赖图的图的可达性算法,在今天仍然是计算程序切片的主流算法。 另外这一阶段程序切j 的定义不断变化发展,出现了前向切片、后向切片、动态 切片等新概念。 ( 3 ) 面向对象程序切片阶段 随着面向对象程序语言的流行,面向射象程序切片的研究开始得到人们的 重视。学者利用类依赖图来扩充传统的系统依赖图,使其能够表示面向对象的程 序,再利用改进的图可达性算法计算而阳对象程序切片。 ( 4 ) 程序切片发展“西花齐放”阶段 这一阶段挂序切片技术发展的一卜要表现就足出现了程序切片的各式各样变 体,如削片、砍片、数据切片、兀定型切片等。川时 d r - 切片技术的应用也取得 了长足的进步和发展,在软件j i :程的各个领域都有很大应用,成为一种热i 、j 的新 型技术。 以k ) l 个发展阶段构成了程序切片技术的发展过程,f h 它们并不能严格分 离,而足交勇:进行、十 j 互促进的发展。 9 北j j ! 化1 1 人f 一! ;! i “f t 沦义 2 2 2 分类 程序切片是根据控制流和数据流分析而引进的一种程序分析技术,主 要包括以下几种: ( 1 ) 语句切片【9 】:这种传统的程序切片技术是一种条件切片,它足根据 程序的顺序、循环和选择结构进行程序切片的。大多数程序员都试着用构 成语句的程序切片来识别程序的错误,也用来理解程序的行为。该类程序 切片包括静态切片和动态切片两种。 ( 2 ) 过程问和过程内切片i i o j :根据过程i 、日j 或过程内分析、数据流分析、 需求分析来切片程序,这类切片方法可计算其他方法不能识别的过程问或 过程内的控制相关,并且可蕈用程序切片的信息,更好地改进程序的效率。 ( 3 ) 无定型程序切片i l l j :无定型程序切片是由m a r kh a r m a n 和s e b a s t i a n d a n i c i c 于1 9 9 7 年提出的一种程序切片方法。与传统程序切片相比,无定犁 切片彳i 仅在保存一个程序语义投影的同时简化了程序,还可以使用任何简 化的转换,而这些转换保留了这个语义映射。因此,在传统切片方法的基 础上增强了简化能力并可用来帮助软件理解,是未来切片技术发展的主流。 ( 4 ) 而向对象切片【眩】:近来程序切片技术已被应用到面向对象领域, 19 9 6 年l o r e nl a r s e n 和m a r r yj e a nh a r r o l d 首次把切片技术应用与面向对象 的系统相天图和过程相天图中,使得对面向对象程序( 特别是c + + 程序) 的凋 试,代码理解,程序测试,逆向j 【程和度量分析变得相对容易得多。同年, f r a n kt i p 等人首次提出切片c + + 类层次的算法,使得对c + + 中复杂的多继 承和虚继承机制的理解变得简单。 这罩只是对程序切片技术进行简单举例说明。在实际应用中,程序切 片的划分标准是不尽相同的,随之带来程序切片的分类也不相同。根圳划 分标准的不同,某些分类会广:生重叠状态,例如无定型切片中包括无定型 静态切片和无定型条件切片,f h 是这两种切片又分别属于静态切”和条件 切”的范畴。 2 2 3 未来发展方向 程序切片及其应用研究已有近3 0 年的历史,尤论其理论还足j 啦刖部墩得很 多成果,逐渐趋于成熟。其原理和方法在软件工程的各个领域发挥:艰要作用,而 且出现了许多新型切片变体,展示出程序切片技术强大的j i 命力和广i i - e , - j 的应川范 闱。这些新型切片变体包括兀定型切片、削片、砍片等。 第一二学舸i 灭技术 随着计算机技术的不断发展更新,切片技术必然会达到一个更高的水平。 其末来发展方向是: ( 1 ) 无定型切片技术:在无定型切片中,舍弃了语句方而致性的要求,而 保留了语义一致的要求,采用一切i i j 能的于段减小程序的人小,得到的足高度抽 象精简的程序,大大提高了传统切片的简化能力,使得程序理解变得更为轻松。 ( 2 ) 程序切片的各种形式的应用:包括在程序调试、测试、理解、w e b 诊断、 软件安全、故障诊断、错误定位等各方面的应用。 ( 3 ) 软件体系结构切片:用于支持软件体系结构的理解、测试、维护和重用, 不同于传统的基于源代码的程序切j - i j ,体系结构切片操作在体系结构规约上,提 供系统更高层次上的信息。 2 3 无定型程序切片 无定型切片( a m o r p h o u ss l i c i n g ) 技术是m a r kh a r m a n 昶ls e b a s t i a nd a n l c i c 等人 在对传统切片进行改造的基础上建立起米的。笔者对无定型切片技术进行了比较 深入的研究,所以这里做一下着重介绍。 2 3 1 基本概念 传统的切片都是语句保持( s y n t a x p r e s e r v i n g ) 的,即通过从原程序中移除与 兴趣点计算不相关的程序组成( 如语句或者谓词等) 得到的l i 引。切片是原程序 语句集合的予集,也可能是其本身。这样对于必趣点来说,是与原程序扫:语义上 等价的,并且比原程序尺寸小。计算切片中对原程序的唯一操作是删除,所得结 果与原程序语句上是严格保持一致的。 m a r kh a r m a n 和s e b a s t i a nd a n l c i c 发现在程j 删解领域,这螳约束可以被 适当放宽,他们于1 9 9 7 年提出了无定型切片的概念1 5 j 。在尤定璎切片中,舍弁 了语句方而一敛性的要求,而保戤了语义致的要求。考虑依据i 萏句s 处的变 量x 为准则切片,无定魁。切片保l ! j f 了原 厶| l 仃re l 弘巾s 语句r f ix 的值,而j 不管切片 中的语句如何。这种切片技术继承了传统切片技术伍简化原样膨的过稚i - f l 保科原 ; i i2 j 一- 语义的功能。唯一的不同之处在_ j 一,它充分利用r 任何能够保留语义映射的 简化程序,尽可能简化程序。但是这样得来的程序切片舀:i 醍多时候尺寸仍旧比较 大,甚至极端条件下就足原程序本身,而在程序列! 解和逆ni i - 卜i 等一监领域,并 4 i 要求满足语句保持,此种情况卜那些为i 等f i j 保持m 麟e 费的代价并尤意义。 例如表2 1 所示: 北京化l :人f i ! ;! i 7 :f _ 论文 表2 - 1 语句保持的程序l 刀片和尤定删切片对比 t a b l e2 - 1c o n t r a s to fs y n t a x p r e s e r v i n gp r o g r a ms l i c i n ga n da m o r p h o u ss l i c i n g 原科! 序传统基丁语句保持的科序切片无定j 弘切片 d := 2 事r :d := 2 事r : s l i c e := 2 宰p i 幸r 毒r + h 幸 c i r c l e a r e a := p i 幸r 幸r :c i r c l e a r e a := p i 木r 木r :p i 誊2 幸r + p i 幸2 宰r : c := p i 木d ;c := p i 术d : t e m p a r e a 2 p i 幸c i r c l e a r e a ; s a r e a a := 2 丰c i r c l e a r e a + h c : s a r e a a := 2 毒c i r c l e a r e a + h c : s l i c e := s a r e a a ; s l i c e := s a r e a a ; i 叫传统切片类似,无定型切片在简化原程序的同时,还保持了与原程序语 义的一致性。但与传统切片来比,无定型切片有两个不同之处:首先,传统的切 片只利用了删除原程序中无关语句的筛化方式进行语义投影,而无定型切片则是 利用了所有呵以利刚的简化方式对原程序进行的语义投影;其次,传统切片是在 语法条件之下采用对原程序进行语句删除的方式,通过保持切片与原程序状态轨 迹的一致性来进行语义投影,而无定型切片则耳义消了这一限制,它并不局限于只 对原程序进行语句删除,而是只要求无定型切片与原程序的语义保持一致即可, 从而提高了传统切片的简化能力,使程序理解变得更为轻松【7 j 。 2 3 2 主要原理 无定型切片的理论基础足程序投影。一个程序投影的构造需要考虑两个冈 素:简币。件度量( am e a s u r eo fs i m p l i c i t y ) 和关于程序的等价关系( e q u i v a l e n c e r e l a t i o n ) “【14 1 。 ( 1 ) 简单性 程序的简单性与程序的简化有关。简化过程要求能够自动化或半自动化地 进行,冈此,要求筋,- 。肚皮量应该是火于原程j f 的一个可计算的( 偏) 序。对于 投影的不同应川,应j 】f i m 的筋堆性,j 之刈j 澎。l - k 盘l i ,隐含在化统程序切片中的 “语法子集”简单性度毓就适合于凋试应有,i f i j 条件宽松的简单性度昂则会更有 利一= 二程! 序p 里解t 15 1 。 ( 2 ) 等价 由j :投影过程保留了程序讲义的投影,所以选j t l “榨序投影”一例。凶此, 某个程序和它的投影足通过程序l :的等价关系“”年h 瓦火联的。 ( 3 ) 投影 第啦州天技术 给定一个简单性度黾s 和一个等价父系“”9 程序p 关于( ,s ) 的投 影是任何满足下而两个条件的程序: 关于s ,它和p 一样简单: 关于,它等价于程序p 。 2 3 3 未来发展 与传统程序切片保持语句的一致f = 0 1 w h i l e ( n o ) p r o d u c t 宰_ x ; n - - ; 北京化i j 人:f 嗍i j 学 t 沦文 ) e l s e w h i l e ( n o ) p r o d u c t 忙x ; n + + : ) r e t u r np r o d u c t ; ) 程序中关于x 的数糖:切1 结果:关二1 二的d a t a s l i c e ( x ) = p r o d u c t ,n ,0 ) 。 使用数据标记作为切片的基础i 叮以确保任何有影响的变化都至少会在方法 的一个切片巾引起改变。一个自影响的变化是能够埘方法的内聚产生影响的任何 变化。这里,有影响的变化包括加入代码、删除代码或改变在给定上下文中的变 量。这些变化中的任何一种都会导致数据切片的改变。 非形式地说,认为数据标记的,。个数据切片是所仃数据标址的序列,这些数 据标记在的前向和后向切片韵语句中。可以为方法的每个输出计算一个数据切 片。一个输出是指任f 町清晰地输出到。个文件的单个值( 或用户输出) 、一个输出 参数或对一个全局变量赋值等。 不同的切片准则将得到f 同的切片结果,在程序切片基本理沦中存在公理: 不同的仟何一个程序垒少存在一个切片,即程序本身。如果对于切片准o ! l j , l 语句中不包含变量v ,则切片结粜是所有和v 相关的语句集合。 本文所采用的关于计算数据切片的算法和传统方法有昕区别。 传统的计算数据切j l 的算法需要构造抽象数据依赖幽数据,然后通过图的 可达性算法得到数据切片。 抽象数据依赖图( a b s t r a c td a t ad e p e n d e n c eg r a p h ,a d d g ) 足一个二:元组 ( a d ,e ) ,其中。i i 。i - ,j - a d 是所有抽象数抓的集合,e 表示节,_ 之问的流依赖和i 控制 依赖关系【3 1 。 抽缘数扔:切”算法: 输入:单个力法 输m :抽缘数拱c 切j j 步骤: ( 1 ) 确定切片变量以及变量之i h j 的流依赖和数捌依赖关系,得到数据依赖 图: ( 2 ) 从切片变量出发,沿着流依赖和数掂依赖边形向遍历,标记所自到达的 节点: 2 4 第章一种新j 型耦合年| l 内聚嫂! j ( 3 ) 由所自可达节点构成的集合就是该方法关于某个切片变:建的数据切片。 而本文采用的计算数据切片的算法是在构造面向对象系统依赖图的基础 上,其次通过图的可达性算法得到面向对象的稃序切j i ,然后通过语法分析二i 二具 打破切片的语句,去除关键字和数据,剩下变量,方法,得到抽象数据切片。为 了方便介绍,在1 引起混淆的原则下,仍然称这种变蹙级别的切片为数据切片。 其算法如卜: 输入:原程序 输出:抽象数据切片 步骤: ( 1 ) 确定原程序变量以及变量之问的流依赖和数据依赖关系,得到数据依赖 图; ( 2 ) 沿着流依赖和数据依赖边j f 向遍历,标记所有到达的节点,得到切片; f 3 ) f l 破切片的语句,去除关键字和数据,剩下变量、方法,得剑抽象数据 切片。 程序切片的概念是在依赖图的基础上构造的,考虑的是各个方法、变量之间 的依赖关系,。和基于依赖性分析相似。 4 2 耦合度量 软件丌发的目标是丌发出高内聚和低祸合的系统1 2 。- i j 见内聚度量和耦合 度量是评估一个软件质量的非常重要的指标。本文的研究就是利用切片技术度量 面向对缘程序的内聚度和耦合度,尤其是内聚度量。 耦合( c o u p l i n gd e g r e e ) 用米测量由两个或多个模块连接而引起的联结力。 强耦合使系统更力l l 复杂,因为模块之间具有高度的相瓦作用灭系,这使得理解、 改写模块变得付i i - t ;刀r ! 一j 园难。使用模块间的最弱可能耦合末设计系统则可以减少系统 的复杂性,在软件设计中应该追求尽可能松散的耦合关系,在这样的系统中町以 研究、测试或维护任何一个模块,刁i 需要对系统的其他模块有很多了解。模块间 的简币耳芙系使得发:l 一处错误传播剑整个系统的可能性就小。冈此,模块f h j 的祸 合祝度愠烈影响系统的易- j 二删角牮性、可测试性、可靠性和易维护性。 测量软件,_ 兀1 - r l t 和软件,l :发过程意在提高软件的生产:率和质量:软件度量是 对软件,_ 。 和过年罕定量的测量。研究结果表明,设计良好的面向刈。象系统,其而 向对琢设计度鞋的值也较为合理,反之亦然。冈此叫以将而向刈象设计度量作为 面向对象系统质链的指示器。 对软件系统耦合度量研究表明,软件系统中存在过多的耦合会使系统变得 北京化r 人z 顺i j ! 学化论文 复杂,错洪率增加,从而使系统难于更改和维护f 2 8 】,因此低耦合足软件丌发永 恒的目标之一。 4 2 1 属性之间的耦合度 设类c 共有n 个属性,m 个方法,其中0 兰m ,n 。vu n i o n 表示所有成员变 量。mu n i o n 表示所有成员方法。本文使用数据标记而非语句作为基本单元来 修j 下切片这个概念。数据切片包含和切片变鼍存在依赖关系的数据集合,简化写 做d a t a s l i c e ( l ,v ) ,其中v 表示在l 定义或使用的变量的集合,l 表示程序中的 某个点,通

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论