没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记253(2010)191-204www.elsevier.com/locate/entcsJava方法的基本特征JeremySinger1GavinBrownMikelLuja'nAdamPocockParaskevasYiapanis英国曼彻斯特大学摘要基本的纳米模式是Java方法的简单、静态、二进制属性,例如ObjectCreator和Recursive。我们提出了一个临时目录的17个这样的纳米图案。我们报告的统计和信息理论的指标,以显示在一个大型语料库的开源Java项目的纳米模式发生的频率。 我们继续给出两个示例案例研究,展示了纳米图案的潜在应用。第一项研究涉及两个流行的Java基准测试套件的定量比较,就其相对的面向对象性和多样性而言。第二项研究涉及将机器学习技术应用于程序理解,使用方法纳米模式作为学习特征。在这两项研究中,纳米模式提供了Java方法的简明摘要,以实现高效和有效的分析。保留字:纳米模式,Java方法1介绍假设您看到图1中给出的Java源代码片段,向另一个软件开发人员简明地描述这种方法的任务。你将如何实现这一目标?在本文中,我们提倡使用纳米模式来验证Java方法。纳米模式是方法的属性,这些方法是:• 简单:它们可以通过Java开发人员的手动检查来检测,或者通过一个简单的自动分析工具• static:它们应该通过分析字节码来确定,而不需要任何程序执行上下文。• binary:对于给定的方法,每个属性要么为true,要么为false1电子邮件:jsinger@cs.man.ac.uk1571-0661 © 2010 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2010.08.042192J. Singer等人/Electronic Notes in Theoretical Computer Science 253(2010)191intfib(intx){}如果(x <=1)返回 1个;其他returnfib(x−1)+ f i b(x−2);例如,从我们当前的17个纳米模式中,图1中的fib方法只展示了两个纳米模式:即Recursive和LocalReader。请注意,某些模式没有显示也会传达信息:例如ObjectCreator和Looping。1.1模式在高层次上,设计模式[11]封装了开发人员的实践,无论是现有的约定还是管理层对更好实践的期望。这些设计模式是根据软件体系结构,使用技术散文或UML图来描述的。这种模式描述了用于结构化软件的可重用模板。由于它们的高级性质,它们不能直接执行或验证。近年来,低级模式的自动检测,特别是Java字节码的静态分析,引起了人们极大的兴趣。Gil和Maman [12]引入了微模式的概念来描述Java类。他们提出了纳米模式的公式化来描述Java类中的方法,但是他们 不要详细说明这个想法。Høst和Jumstvold [15]提供了一组简单的Java方法属性,我们称之为基本纳米模式。在本文中,我们扩展Høst和Restvold的属性集,给出一个更全面的目录的基本纳米模式。这些模式封装了Java语言特有的习惯用法,这些习惯用法是经验丰富的软件开发人员的通用语言。必须强调的是,这个目录仍然是临时的;我们预计随着时间的推移会增加新的纳米图案。这些低层次模式有许多潜在的应用。 下面的列表提到了一些应用程序,这些应用程序是最近研究调查。(i) 习惯用法目录,使新手开发人员获得阅读和编写代码的经验[15,16]。(ii) 从模式使用和交互中的异常中检测错误的工具[17,20]。(iii) 开发环境中的自动完成提示[20]。(iv) 代码的简洁描述[3]。(v) 在一个共同的框架中对编码风格和标准进行实证评估[12]。(vi) 将动态程序行为与模式联系起来,以指导实时操作,图1.一、Java源代码片段的特点是简洁J. Singer等人/Electronic Notes in Theoretical Computer Science 253(2010)191193最后的决定[18]1.2贡献本文的主要贡献是:(i) 基本纳米模式的分类目录,每个都有明确的定义,可以从字节码中简单地机械检测模式,第2节。(ii) 正式评估的纳米模式目录,使用信息理论(第3节)和数据挖掘(第4节)技术。(iii) 两个案例研究演示了如何使用纳米模式来比较不同的代码库(第5节)或通过Java方法的大规模统计分析来帮助程序理解(第6节)。2纳米图案目录纳米模式是Java方法表现出的简单属性。它们是可追踪的;也就是说, 它们应该是自动识别的 通过对Java字节码的简单静态分析Høst和Jumstvold [15]给出了Java方法的可追踪属性目录。他们认为,这些属性可以用作定义纳米图案的构建块。在本文中,我们将这些可追踪的属性称为基本纳米图案,其可以潜在地组合以制造复合纳米图案。我们补充了Høst和Höstvold的我们的基本纳米图案的完整集合在表中给出1.一、 原来的纸样是用普通字体写的,我们的新纸样是用黑体字写的。另一个新颖之处是,我们将这些模式分为四个直观类别。很容易看出,复合纳米图案是如何从基本纳米图案的逻辑组合中构造出来的。例如,PureMethod纳米模式可以指定为:<$FieldWriter<$ArrayWriter<$$>ObjectCreator<$$>ArrayCreator<$Leaf方法纯度的更复杂的定义将删除叶方法限制,并将其替换为递归约束,即所有方法调用也必须是纯方法。然而,这种定义需要整个程序分析,这被认为是不平凡的,因此不适合纳米模式。请注意,在本文的其余部分,我们只关注基本的纳米图案194J. Singer等人/Electronic Notes in Theoretical Computer Science 253(2010)191类别名称描述调用NoParamsNoReturnRecursiveSameName叶不接受参数,返回void递归地调用自己调用另一个同名的方法不会发出任何方法调用面向对象ObjectCreatorFieldReaderFieldWriter类型操作器创建新对象从对象读取(静态或实例)字段值将值写入对象的(静态或实例)字段使用类型转换或instanceof操作控制流直线循环计数器方法体中无分支方法体中的一个或多个控制流循环可能引发未处理的异常数据流LocalReaderLocalWriterArrayCreatorArrayReaderArrayWriter在堆栈帧上读取局部变量的值在堆栈帧上写入局部变量的值创建新数组从数组将值写入数组表1基本纳米图案目录。粗体名称是我们设计的原始图案,所有其他图案都来自Høst和Höstvold2.1检测工具我们已经开发了一个命令行工具来检测纳米模式的方法,Java字节码类文件,基于ASM字节码分析工具包[6]。我们的工具读入一个指定为命令行参数的类文件名,为类中的每个方法展示的纳米模式的位串。 这个检测工具是用Java编写的,只有600行源代码。我们的代码大量使用了ASM API中的数据结构和访问者代码。 该工具以两种不同的方式运行,以检测特定的纳米图案:(i) 一些模式是通过在方法字节码数组上进行简单迭代来找到的,搜索指示特定纳米模式的特定字节码指令。例如,newarray字节码表示ArrayCreator纳米模式。(ii) 其他模式通过方法签名上的简单正则表达式匹配来发现。例如,如果方法类型签名包含string(),则该方法显示NoParams纳米模式。我们设想,对于特定的纳米图案,如果对纳米图案的特征进行某种形式的规范,则应该可以自动生成基于ASM的检测代码。像JTL [8]这样的元语言可能在这里很有用。 我们在目前的研究中没有解决这个问题2.2统计我们分析了大量不同的Java程序语料库;表2给出了详细信息。这些都是常用的行业标准基准测试套件和开源Java应用程序,在以前基于研究的Java源代码案例研究中使用过。J. Singer等人/Electronic Notes in Theoretical Computer Science 253(2010)191195程序版本描述灰烬套房第一次公开发布Java编译器测试程序DaCapo2006-10-MR2面向对象基准测试套件JBoss3.2.2应用服务器jEdit4.3Java文本编辑器应用程序JHotDraw709Java图形应用程序Jikes RVM2.9.1Java虚拟机,包括类路径库约登初始版本指针密集型基准测试套件JUnit4.4测试工具SPECjbb2005Java业务基准SPECJVM1998简单Java客户端基准测试套件表2用于纳米模式覆盖研究的Java基准测试纳米图案覆盖率LocalReader89.4直线63.6FieldReader51.4虚空50.6NoParams39.2SameName32.4LocalWriter31.1ObjectCreator26.5FieldWriter26.5叶20.3类型操作器15.2例外13.6循环11.3ArrayReader6.7ArrayCreator5.4ArrayWriter5.3递归0.7整体100.0表3Java程序语料库上每个纳米模式的覆盖率得分在这个语料库中,总共有43,880个类和306,531个方法。 我们在所有这些类上运行我们的纳米模式检测工具。表3总结了结果。它给出了展示每种纳米图案的方法的比例。 总覆盖率表示显示任何纳米图案的所有分析方法的百分比。由于这个分数是100%,所有分析的方法都显示出至少一个来自我们目录的纳米图案。 每种方法的纳米图案平均数是4.9。3信息论表征信息论熵度量与随机变量相关的不确定性。在本节中,我们将纳米模式检测器工具视为一个黑盒,它提供表示纳米模式位串的值。对于不同的潜在位串中的每一个,存在基于其频率的相关联的概率,196J. Singer等人/Electronic Notes in Theoretical Computer Science 253(2010)191∈Σ||||→发生。(We在我们的306,531种方法的语料库中通过频率估计概率。 给定所有可能的位串B的集合,我们表示特定位串b B的出现次数为pb。 我们计算熵H(在香农之后)为:H=−pblog2(pb)b∈B低熵值表示底层随机变量的不确定性较低,这意味着纳米模式非常可预测。这将降低它们的分类效用。另一方面,高熵值表示高不确定性。最大熵分数是log2B,其中B是潜在位串的数量。由于在我们的目录中有17种不同的纳米图案,因此最大熵分数将为17。这意味着所有的纳米图案都是独立的,并且有50%的机会被一种方法展示出来事实上,从我们测量的306,531个方法中,位串的熵是八点四十七分该值相对较高,这意味着方法的纳米模式不容易预测。模式之间有一些相互依赖的关系,但这些关系通常都是重要的。(The下一节将详细描述跨模式关系。4数据挖掘特征4.1背景数据挖掘是存在许多技术来对大型数据集执行数据挖掘。 最流行的技术之一是联想从数据集中的项目集进行规则挖掘,由[1]介绍。 关联规则 通过频繁模式挖掘得到。关联规则采用逻辑蕴涵的形式。它们的主要用途是用于市场购物篮分析,其中供应商搜索经常一起购买的物品[5]。我们感兴趣的是经常一起展示的纳米模式集,通过Java方法。这样的关联规则具有形式A B,这意味着如果方法m表现出纳米模式A,那么这意味着m也表现出B。与每一条规则一起,还有两个相关的利益衡量标准:支持和信心。支持度是同时显示A和B的方法相对于所分析的方法总数的比例。 信心是方法的比例 同时表现出A和B的方法相对于表现出A. 仅当规则满足用户确定的最小阈值时,才保留该规则 支持和信任[2]。4.2纳米图案分析我们对我们拥有纳米模式数据的306,531种方法的完整集合进行关联规则挖掘。规则挖掘算法产生数百个的规则。但是,我们立即丢弃所有涉及LocalReadernano的规则,J. Singer等人/Electronic Notes in Theoretical Computer Science 253(2010)191197{模式;因为它是如此普遍的模式,任何涉及它的规则都没有真正的意义。许多规则在最初的修剪之后仍然存在。其中一些是显而易见的,例如:ArrayCreator意味着ArrayWriter具有高置信度。在本节的剩余部分中,我们将报告由于常见的Java编程习惯而出现的三个有趣的规则。 这些规则中的每一条都超过了我们支持和信任的阈值。我们使用提升和χ2度量进行进一步的统计分析,以确定每个规则中相关的纳米模式之间是否存在统计上显著的相关性。在每种情况下,我们发现纳米图案都是显著正相关的。(一)循环→类型操纵器这条规则是由于java.util.Iterator对象在while在Java Collections框架中的数据结构上循环。下面的代码清单给出了一个概要示例。而(一)hasNext()元件 e = (要素)return();//我想...}在旧版本的Java中,所有对象都被强制为Object超类型,它们被存储在库容器数据结构中。 即使在Java 5源代码中添加了泛型,类型转换仍然存在于Java字节码中,用于从容器数据结构中检索对象。 因此,这条规则是Java源代码到字节码的转换。(二)ArrayReader→循环这条规则是由迭代整个数组的习惯用法引起的,元素下面的代码清单给出了一个概要示例。为(int)return 0;我是。长度;i ++)//. . .return a [ i ];//. . .}(三)字段写入器-StraightLine→ NoReturn这条规则是由于面向对象的setter访问器方法的流行。这样的方法只接受一个参数,将这个值写入当前对象的字段并返回void。下面的代码清单给出了一个概要示例。 人们希望在任何面向对象语言中看到这种规则用于编写良好的程序。公共虚空setXYZ(Fooxyz)这个xz = xz;return;}{{198J. Singer等人/Electronic Notes in Theoretical Computer Science 253(2010)1914.3应用这类关联规则有许多潜在的应用。 我们在下面概述了三个方面。(i) 从低级纳米图案检测高级设计图案。一般来说,设计模式的发现被认为是困难的[14,9]。我们在上面已经表明,一些低级特征的组合是高级模式的潜在指标。Gueheneuc等人[13]进一步探索了这个概念,尽管可能有更多限制性的静态代码特性。(ii) 一本每个发现的约定都需要手动注释,以提供某种程度的优点。特别是,可能会发现流行的反模式(iii) 识别潜在的bug。 给定一个庞大而多样的代码库,我们 可以提取一组高置信度的关联规则。 如果这些规则不是 保存在新代码中,在线交互检查器可以通知开发人员违反规则的情况[20]。5案例研究A:SPECjvm98与DaCapo在本节中,我们将使用纳米模式来对比两个Java客户端基准测试套件。在一般情况下,这是困难的,以量化两套程序之间的差异:然而,我们证明,纳米模式提供了一个很好的基础差异。SPECjvm98基准测试套件最初旨在评估商业Java虚拟机(JVM)实现的性能。 然而,由于它的体积小和相对年龄,它现在只被用作学术研究的目标,如点到分析[21]。 SPECjvm98的潜在替代品是由一个学术研究小组编制的DaCapo基准套件。Da- Capo的介绍性论文[4]提出了一个广泛的实证研究,以突出这两个基准套件之间的差异。 提交人声称,优于SPECjvm98有两个主要原因:(i) DaCapo程序比SPECjvm98更面向对象。(ii) DaCapo程序的行为比SPECjvm98更多样化使用我们的纳米模式目录,我们应该能够提供新的定量评估这些标准的两个基准套件。5.1面向对象DaCapo论文[4]认为DaCapo套件比SPECjvm98“更面向对象”。支持这一主张的静态分析研究采用了Chidamber和Kemerer度量[7]。我们可以通过考虑处理对象的四种纳米模式来评估每个基准测试套件J. Singer等人/Electronic Notes in Theoretical Computer Science 253(2010)191199基准#方法% OC% FRFW %TM %%覆盖率SPECjvm98201压缩44136552086小行星202673335023875205光线跟踪173165840286209分贝343879503294小行星21356012961261077222 mpegaudio280176038279227地铁177155739285228插孔3022336491066geomean249215738581DaCapoANTLR17884162391381膨胀27183366332285图表41823359261282eclipse53852758291679FOP5180244632776HSQLDB27672158221272Jython65492555191975光指数963285633979光泽的12522758321081PMD49232045261366Xalan55122054281075geomean31802756281277表4面向对象的纳米模式覆盖每个基准导 向 回 想 一 下 表 1 , 它 们 是 ObjectCreator 、 FieldReader 、 Field-Writer 和TypeManipulator. (In本研究将这些纳米图形分别命名为OC、FR、FW和TM。表4列出了该分析的结果对于每个基准测试套件,我们分别考虑每个Java应用程序。对于每个应用程序,我们对在基准测试类中定义的所有方法执行静态分析,这些方法在使用默认工作负载执行基准测试期间由JVM加载。从这一分析,我们报告的比例,表现出每个OO纳米模式的方法。我们还报告了整体OO覆盖率,这给出了表现出至少一个OO纳米模式的方法的比例。从这些结果中,还不能立即清楚地看出DaCapo是否比SPECjvm98更面向对象。相对而言,它们对于OO纳米图案具有相似的总体覆盖分数。但是请注意,DaCapo绝对比SPECjvm98大得多。原始DaCapo论文中给出的OO指标也是绝对的。DaCapo中创建对象的方法比例更高,并且它也有更多的类型操作方法。这些都是对象定向的明确指示另一方面,两个套件的目标场读取量相似。有趣的是,SPECjvm98似乎执行了更多的对象字段写入。我们研究了静态和实例字段访问之间的差异,因为FR和FW根据定义涵盖了静态和实例访问。我们在两个套件中再次发现了类似的统计数据:大约20%的读取是静态字段,不到10%的写入是静态字段。200J. Singer等人/Electronic Notes in Theoretical Computer Science 253(2010)191这项研究的一个潜在的局限性是,纳米模式目录目前没有捕捉到所有面向对象的行为。例如,我们没有通过虚方法调用进行方法重写的任何措施。此外,我们不区分通过this指针和其他指针访问对象字段。 也许 更丰富的纳米图案集将提供更清晰的图像。5.2多样性纳米模式可以用来表示方法之间的相似性,我们断言,类似的方法应该表现出类似的纳米模式。DaCapo论文[4]批评SPECjvm98基准过于相似。 作者拿了一套每个基准测试的架构指标,并执行四个维度的主成分分析。他们表明,DaCapo程序分布在这个4-d空间,而SPECjvm 98程序集中在一起。同样,我们可以使用纳米图案来证实这项早期研究的结果。我们考虑表1中的目录中的所有纳米图案。同样,我们考虑在执行期间加载的基准类的所有方法。为了证明一个套件中的不同基准是不同的,我们对每个基准进行两次测量。(i) 唯一纳米模式位串的数量:给定一个基准测试的一组纳米模式位串,这些位串中的哪一个没有出现在套件中的任何其他基准测试中?这表示一个基准特有的行为。我们可以计算这种独特的位串的数量,作为一个套件内基准多样性(ii) 信息论熵:给定每个基准的一组纳米模式位串,我们可以计算该组的信息论熵。 高熵值指示更大的不确定性,即位串更不可预测。同样,这可以表明套件中的基准测试的多样性表5报告了基准多样性分析的结果。从每个基准套件的几何平均分数清楚地看出,DaCapo基准具有每个基准的更多唯一纳米模式位串,并且纳米模式位串的熵对于DaCapo更高。该分析证实了原始DaCapo论文[4]中的主张,即DaCapo套件比SPECjvm98更加多样化。5.3警告基于纳米模式的分析是完全静态的。 为了在基准套件之间进行真正的比较(特别是在多样性方面), 在静态和动态行为。DaCapo的研究完全集中在动态行为上,而我们在这里只关注静态行为。然而,我们在套房内多样性方面得出了相同的结论另一方面,我们断言执行静态比较仍然有用J. Singer等人/Electronic Notes in Theoretical Computer Science 253(2010)191201基准#方法#唯一NP集熵SPECjvm98201压缩4464.69小行星202673526.09205光线跟踪17304.55209分贝3484.79小行星21356016288.13222 mpegaudio280326.48227地铁17704.58228插孔302244.92geomean248.6313.655.41DaCapoANTLR1788287.22膨胀2718497.02图表4182987.17eclipse5385958.35FOP5180327.01HSQLDB27671448.29Jython65491367.13光指数963107.62光泽的1252137.65PMD4923447.57Xalan55121108.08geomean3179.8550.147.54表5基于独特纳米模式集和纳米模式熵的基准多样性度量基准测试套件中的隔离。通常这些特定的Java基准测试用于比较静态分析技术(与运行时JVM基准测试相反),在这种情况下,静态面向对象和多样性成为主要关注点。因此,这种基于纳米模式的经验比较风格确实很有价值。6案例研究B:基于纳米模式的方法聚类聚类是一种无监督学习。 它用于将数据点分组为基于相似性度量(通常是距离度量)的可变数量的聚类。 这使得能够将数据快速表征为更高级别的分组。在这个特定的背景下,我们的目标是集群相似的方法,使程序的理解,其中方法的相似性是基于纳米模式位串。主要有两个障碍:(i) 我们所有的纳米模式特征都是二进制值,这对于通常在实值连续数据上操作的聚类算法来说(ii) 我们的纳米图案特征空间有17个维度。这使得它难以可视化任何集群。为了解决这些问题,我们使用主成分分析(PCA)把我们的数据投射到连续的二维空间PCA将数据转换到不同的空间。它在最大变化的轴之外创建新的特征,202J. Singer等人/Electronic Notes in Theoretical Computer Science 253(2010)191图二、用于语料库中方法的二维投影纳米模式数据(注意香肠形簇)原始数据集。这意味着最大的主成分包含有关数据的最多信息。图2显示了该投影数据的可视化。前两个主成分形成了这个图的轴,因为它们说明了 数据中的大部分变化该图显示了许多不同的聚类,表明在原始数据集中有几组类似的方法。 对该数据的进一步聚类将为将表观聚类与原始数据集中纳米图案的组合的存在相我们顺便注意到,以前的工作使用集群来分析Java方法[19]。然而,我们的静态方法功能集似乎比早期的工作更丰富。这种分析的应用领域主要是程序理解。7结论在本文中,我们已经证明了基本的纳米模式可以提供Java方法的简洁特征。我们已经展示了纳米模式的能力,为大型Java应用程序的定量分析提供了一个框架,并支持基于学习的技术,如数据挖掘和集群。我们未来的工作包括扩展纳米图案的临时目录。我们希望通过支持方法重载、覆盖和super()调用来改进它的面向对象特性。我们还希望丰富我们的超小型模式,以区分直接抛出异常、捕获异常和传播未捕获异常的方法。附加高级方法J. Singer等人/Electronic Notes in Theoretical Computer Science 253(2010)191203特性包括线程活动和使用标准Java API(如集合框架)。最后,我们希望采用国家的最先进的聚类算法组相关的方法在一起,并分析这些结果。最终,我们的目标是在监督学习环境中使用基本的纳米模式引用[1] 阿 格 拉 瓦 尔 河 T. Imielinski 和 A. Swami , Mining association rules between sets of items in largedatabases , in : Proceedings of the International Conference on Management of Data , 1993 ,pp.207-216[2] 阿格拉瓦尔河和R. Srikant,关联规则挖掘的快速算法,第20届超大型数据库国际会议,1994年,pp.487-499.[3] 巴伊拉查里亚山T. Ngo,E. Linstead,Y. Dou,P. Rigor,P. Baldi和C. Lopes,Sourcer:一个支持基于结构的搜索的开源代码搜索引擎,在:第21届ACM SIGPLAN面向对象编程,系统,语言和应用研讨会的,2006年,pp。681- 682.[4] Blackburn , S. M. 例 如 , The DaCapo benchmarks : Java benchmarking development andanalysis , in : Proceedings of the 21st Annual ACM SIGPLAN Conference on Object-OrientedProgramming,Systems,Languages,and Applications,2006,pp. 169比190。[5] Brin,S.,R. Motwani,J.Ullman和S.Tsur,市场篮子数据的动态项集计数和隐含规则,在:1997年ACMSIGMOD国际数据管理会议论文集,1997年,pp.255-264。[6] Bruneton,E.,R. Lenglet和T. Coupaye,ASM:一个实现可适应系统的代码操作工具,在:可适应和可扩展组件系统,2002年。[7] Chidamber,S.和C. Kemerer,A Metrics Suite for Object Oriented Design,IEEE Transactions onSoftware Engineering20(1994),pp.476-493.[8] 科恩,T.,J. Y.吉尔和我。Maman,Jtl:Java工具语言,收录于:第21届ACM SIGPLAN面向对象编程、系统、语言和应用年会,2006年,pp. 89比108[9] Dong , J. 和 Y. Zhao , Experiments on Design Pattern Discovery , in : Proceedings of the ThirdInternational Workshop on Predictor Models in Software Engineering,2007,p.12个。[10] 弗劳利,W.,G. Piatetsky-Shapiro和C. Matheus,Knowledge Discovery in Databases:AnOverview,AI Magazine(1992),pp. 213-228[11] 伽马,E.,R.赫尔姆河约翰逊和J. M. Vlissides,[12] Gil,Y.和I.Maman,Java代码中的微模式,2005年,第20届ACM SIGPLAN面向对象编程、系统、语言和应用年会论文集。97比116[13] Gueheneuc, Y., H. Sahraoui 和 F. Zaidi , Fingerprinting design patterns , in : Proceedings of the11th Working Conference on Reverse Engineering,pp. 172-181。[14] Heuzeroth,D.,T. Holl,G. Hogstr om和W. 刘伟,可持续设计模式检测,第十一届IEEE国际程序理解研讨会论文集,2003年,第103 - 104页。94比103[15] Høst,E. W.和B. M. 程序员词典,第一卷:动词,在:第七届IEEE源代码分析和操纵国际工作会议论文集,2007年193-202.[16] Høst,E. W.和B. M. Jumstvold,Java程序员322-341[17] Kim,S.,K. Pan和E. Whitehead Jr,Micro pattern evolution,in:Proceedings of the InternationalWorkshop on Mining Software Repositories,2006,pp.40比46[18] Marion,S.,R. Jones和C. Ryder,Decrypting the Java gene pool:Predicting objects67-78.[19] Rousidis , D. 和 C. Tjortjis , Clustering data retrieved from Java source code to support softwaremaintenance : A case study , in : 9th European Conference on Software Maintenance andReengineering,2005,pp. 276-279.204J. Singer等人/Electronic Notes in Theoretical Computer Science 253(2010)191[20] Singer,J.和C. Kirkham,Exploiting the correspondence between micro patterns and class names,in:Proceedings of the Eighth IEEE International Working Conference on Source Code Analysis andManipulation,2008,pp. 67比76[21] Sridharan , M.和 R.B od'ık, Refennement-bas edccontext-sensitivepoints-toanalysisforJava , in :Proceedings of the 2006 ACM SIGPLAN Conference on Programming Language Design andImplementation,2006,pp. 387-400
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功