首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到16条相似文献,搜索用时 46 毫秒
1.
代码坏味(code smells)是低质量的急需重构的代码片段.代码坏味是软件工程领域的一个研究热点,并且相关研究方向众多、时间跨度大、研究成果丰富.为梳理相关研究思路和研究成果、分析研究热点并预判未来研究方向,对1990年至2020年6月间发表的代码坏味相关的339篇论文进行了系统地分析和归类,对代码坏味的发展趋势进行了分析与统计,量化揭示了相关研究的主流与热点.揭示了学术界关注的关键代码坏味,并研究了工业界与学术界的关注点的差异及其影响.  相似文献   

2.
软件良好的设计质量能使维护和重用变得更加容易和方便,而如果代码中存在各种各样的坏味,那么必将导致软件整体设计质量降低。首先对坏味的定义、描述和分类进行分析,之后列举现有的坏味检测以及重构研究,对其进行分析和比较。现状分析之后指出了现存的不足之处,为新的研究指明了方向。  相似文献   

3.
章晓芳  朱灿 《软件学报》2019,30(5):1422-1437
代码坏味是指程序设计中存在的不良设计模式或设计缺陷.坏味的存在,被认为会阻碍软件的演化与维护.近年来,研究人员致力于探究坏味产生的影响以及坏味与软件演化之间的关系.已有研究表明,代码坏味会随着软件的演化而不断发生变化.通常,软件的演化将涉及源文件的增加、修改与删除这3类具体操作,了解代码坏味与软件演化中源文件操作的关系,将有助于开发者更好地计划软件开发过程和重构软件代码.因此,针对13种常见的坏味,在8个Java项目共计104个版本中进行了系统的实证研究.研究发现,随着软件版本的演化,含代码坏味的文件在整个项目中的占比在不同的项目中呈现出不同的特征.另外,包含代码坏味的文件更倾向于被修改,而坏味本身与文件的添加或者删除并没有太大的关联.更进一步地,在探究的所有坏味中,有几种特定的坏味对文件的修改产生了显著的影响,且这些坏味文件间存在着明显的重叠.这些发现有助于开发人员更好地了解代码坏味,以便于更好地对软件进行维护.  相似文献   

4.
5.
重构是当下软件工程领域研究的一个重要研究课题,在软件开发和软件维护的过程中,程序员逐渐认识到其重要性。本文先从重构的定义,重构的意义和重构的时机等几个方面系统地介代码件重构的相关内容,然后列举了重构所要解决的几种常见的代码坏味。最后后结合一个具体实例展示了重复代码这一常见坏味产生的原因以及重构过程。  相似文献   

6.
程序中某些代码坏味会导致整个程序无法顺利运行,此时,需要清除引起程序错误的代码坏味,以保证程序的正常运行.为此提出了一种基于数据并行传输程序的代码异味检测算法.在并行数据传输程序的信道上建立两组独立的数据序列,通过抑制载波幅度调制将它们调制成一对正交载波,由每个子信道中发送的单个脉冲响应决定信道失真情况;利用贝叶斯网络...  相似文献   

7.
苏珊  张杨  张冬雯 《计算机应用》2022,42(6):1702-1707
基于启发式和机器学习的代码坏味检测方法已被证明具有一定的局限性,且现有的检测方法大多集中在较为常见的代码坏味上。针对这些问题,提出了一种深度学习方法来检测过紧的耦合、分散的耦合和散弹式修改这三种与耦合度相关检测较为少见的代码坏味。首先,提取三种代码坏味需要的度量并对得到的数据进行处理;之后,构建卷积神经网络(CNN)与注意力(Attention)机制相结合的深度学习模型,引入的注意力机制可以对输入的度量特征进行权重的分配。从21个开源项目中提取数据集,在10个开源项目中对检测方法进行了验证,并与CNN模型进行对比。实验结果表明:过紧的耦合和分散的耦合在所提模型中取得了更好的结果,相应代码坏味的查准率分别达到了93.61%和99.76%;而散弹式修改在CNN模型中有更好的结果,相应代码坏味查准率达到了98.59%。  相似文献   

8.
张杨  东春浩  刘辉  葛楚妍 《软件学报》2022,33(5):1551-1568
目前已有的代码坏味检测方法仅依赖于代码结构信息和启发式规则, 对嵌入在不同层次代码中的语义信息关注不够, 而且现有的代码坏味检测方法准确率还有进一步提升的空间. 针对该问题, 提出一种基于预训练模型和多层次信息的代码坏味检测方法DeepSmell, 首先采用静态分析工具提取程序中的代码坏味实例和多层次代码度量信息, 并...  相似文献   

9.
卜依凡  刘辉  李光杰 《软件学报》2019,30(5):1359-1374
上帝类是指某个承担了本应由多个类分别承担的多个职责的类.上帝类违背了分而治之的基本思想以及单一职责的设计原则,严重影响软件的可维护性和可理解性.但上帝类又是一种比较常见的代码坏味.因此,针对上帝类的检测与重构一直是代码重构领域的研究热点之一.为此,提出了一种基于深度神经网络的上帝类检测方法.该方法不仅利用了常见的软件度量,而且充分利用了代码中的文本信息,意图通过挖掘文本语义揭示每个类所承担的主要角色.此外,为了解决有监督深度学习所需的海量标签数据,提出了一种基于开源代码构造标签数据的方法.最后,基于开源数据集对所提出的方法进行了实验验证.实验结果表明,这些方法优于现有的上帝类检测方法,尤其是在查全率上有大幅度的提升(提高了35.58%).  相似文献   

10.
刘弋  吴毅坚  彭鑫  闫亚东 《软件学报》2022,33(11):4046-4060
上帝类(God class)是指同时包含多种任务职责的类,其常见特征是包含大量的属性与方法,并且与系统中的其他类有多种依赖关系.上帝类是一种典型的代码坏味,对软件的开发维护产生负面影响.近年来,许多研究都致力于发现和重构上帝类,但是现有方法识别上帝类的能力不强,检测精确率不高.提出了一种基于图模型和孤立森林的上帝类检测方法,主要分为两个阶段:图结构信息分析阶段和类内度量评估阶段.在图结构信息分析阶段,建立类间的方法调用图和类内结构图,采用孤立森林算法缩小上帝类的检测范围;在类内度量评估阶段,考虑项目的规模和架构带来的影响,将项目中上帝类相关度量指标的平均值作为基准,设计实验确定比例因子,并以平均值和比例因子的乘积作为阈值,筛选得到上帝类的检测结果.在代码坏味标准数据集上的实验结果表明:与现有的上帝类检测方法相比,该方法在精确率和F1值上分别提升了25.82个百分点和33.39个百分点,同时保持了较高的召回率.  相似文献   

11.
冲突是研究模型重构中的一个重要问题,多数研究将该问题的重点放在冲突检测上,通过对已知冲突的分析,找出冲突消解的手工实现方式.为实现模型重构的自动过程而寻找自动消解冲突的方法是主要研究内容.根据冲突发生的条件将冲突分为3种类型:同一规则的并行使用产生的冲突、对称冲突、非对称冲突.该方法建立在手工分析这3类重构冲突消解的基础上,将重构规则预设为一个规则矩阵,对图转换系统中出现的重构规则进行扫描.扫描结果对照规则矩阵,判断冲突是同一规则还是不同规则的并行使用所产生;分别对这两种情况下的冲突所操作的对象进行分析,根据已有手工消解方法有针对性地进行消解操作.这一算法可以初步实现并行执行的3类冲突的自动消解.  相似文献   

12.
A design pattern is a general reusable solution to commonly recurring problems in software projects. Bad smells are symptoms existing in the source code that possibly indicate the presence of a structural problem that requires code refactoring. Although design pattern and bad smells be different concepts, literature has shown that they may be related and cooccur during the evolution of a software system. This paper presents an empirical study that investigates cooccurrences of design patterns and bad smells as well as identifies the main factors that contribute to the emergence of the relationship between them. We carried out a case study with five Java systems to: (1) investigate if the use of design pattern reduces bad smell occurrence, (2) identify cooccurrences of design patterns and bad smells, and (3) identify situations that contribute for the cooccurrence emergence. As the main result, we found that the application of design pattern not necessarily avoid bad smell occurrences. The results also show that some design patterns such as composite, factory method, and singleton, are intrinsically modular and might be useful in creating high-quality systems. However, other design patterns such as adapter-command, proxy, and state-strategy, have presented high cooccurrence frequency with bad smells; therefore, they require attention in their implementation. Finally, via manual inspection in the components with cooccurrence, we found that the identified cooccurrences appeared due to poor planning and inadequate application of design patterns.  相似文献   

13.
基于MAP框架的图像序列超分辨率和模板匹配   总被引:5,自引:0,他引:5  
王程  王润生 《计算机学报》2003,26(8):961-967
许多图像序列处理系统的最终目的是自动或半自动地提取图像序列中的信息.为了得到被拍摄物体更清晰的影像,需要利用超分辨率技术提高分辨率.为了分析图像中的信息,常常需要利用模板匹配.以往这两个问题是分开求解的.该文提出在统一的基于最大后验概率估计的算法框架下同时求解图像序列超分辨率和模板匹配问题.算法框架具有以下两个特点:首先,在超分辨率中引入了模板库中的先验知识,提高了超分辨率的恢复效果.其次,在模板匹配中更充分地利用了图像序列中的信息,提高了模板匹配的准确性.文章的最后给出了算法在车牌识别中的实验结果.  相似文献   

14.

Code smell detection is essential to improve software quality, enhancing software maintainability, and decrease the risk of faults and failures in the software system. In this paper, we proposed a code smell prediction approach based on machine learning techniques and software metrics. The local interpretable model-agnostic explanations (LIME) algorithm was further used to explain the machine learning model’s predictions and interpretability. The datasets obtained from Fontana et al. were reformed and used to build binary-label and multi-label datasets. The results of 10-fold cross-validation show that the performance of tree-based algorithms (mainly Random Forest) is higher compared with kernel-based and network-based algorithms. The genetic algorithm based feature selection methods enhance the accuracy of these machine learning algorithms by selecting the most relevant features in each dataset. Moreover, the parameter optimization techniques based on the grid search algorithm significantly enhance the accuracy of all these algorithms. Finally, machine learning techniques have high potential in predicting the code smells, which contribute to detect these smells and enhance the software’s quality.

  相似文献   

15.
Criteria for software quality measurement depend on the application area. In large software systems criteria like maintainability, comprehensibility and extensibility play an important role.My aim is to identify design flaws in software systems automatically and thus to avoid “bad” — incomprehensible, hardly expandable and changeable — program structures.Depending on the perception and experience of the searching engineer, design flaws are interpreted in a different way. I propose to combine known methods for finding design flaws on the basis of metrics with machine learning mechanisms, such that design flaw detection is adaptable to different views.This paper presents the underlying method, describes an analysis tool for Java programs and shows results of an initial case study.  相似文献   

16.
跨社交平台的用户身份解析是社交网络一个重要的研究方向,其可以有效集成不同平台的同一用户信息。现有的用户身份解析工作大多针对类型相似的社交平台,平台间的信息相对对称,通过用户在不同平台上的档案属性、空间位置、网络关系等信息的相似度来判别是否为同一用户。然而,在两个异构社交平台中用户信息是不对称的,难以直接获取到用于用户身份解析的相应属性信息。本文研究跨评论类与活动类平台间的用户身份解析方法。为了解决两类社交平台的用户信息属性不对称问题,把用户信息按档案属性、语义序列、特征词序列3类信息组织,从各自的社交平台中抽取相应的信息建立映射关系,提出了综合3类信息的集成匹配算法。考虑了用户活动的时间偏移现象,采用反向传播学习的方法获取时间偏移权重,提出了基于反向传播学习的语义序列与特征词序列相似性度量方法。同时,设计了总体相似度度用于用户身份解析。利用真实数据集进行了充分的实验,实验结果表明了所提出用户身份解析算法的有效性。  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号