期刊文献+
共找到82篇文章
< 1 2 5 >
每页显示 20 50 100
逆向工程发展现状研究 被引量:17
1
作者 周立萍 陈平 《计算机工程与设计》 CSCD 2004年第10期1658-1660,1666,共4页
随着软件产业的发展,越来越多的遗产系统需要维护和改善,逆向工程已经成为遗产系统维护与演化的关键技术之一。介绍了逆向工程的定义,综述了逆向工程的研究进展。通过对现有工具的分析探讨了逆向工程研究中的不足之处,给出了未来的发展... 随着软件产业的发展,越来越多的遗产系统需要维护和改善,逆向工程已经成为遗产系统维护与演化的关键技术之一。介绍了逆向工程的定义,综述了逆向工程的研究进展。通过对现有工具的分析探讨了逆向工程研究中的不足之处,给出了未来的发展趋势。 展开更多
关键词 逆向工程 遗产系统 维护 工具 关键技术 演化 软件产业 发展现状 发展趋势 未来
下载PDF
基于深度学习的程序理解研究进展 被引量:19
2
作者 刘芳 李戈 +1 位作者 胡星 金芝 《计算机研究与发展》 EI CSCD 北大核心 2019年第8期1605-1620,共16页
程序理解通过对程序进行分析、抽象、推理从而获取程序中相关信息,在软件开发、维护、迁移等过程中起重要作用,因而得到学术界和工业界的广泛关注.传统程序理解很大程度上依赖开发人员的经验,但随着软件规模及其复杂度不断增大,完全依... 程序理解通过对程序进行分析、抽象、推理从而获取程序中相关信息,在软件开发、维护、迁移等过程中起重要作用,因而得到学术界和工业界的广泛关注.传统程序理解很大程度上依赖开发人员的经验,但随着软件规模及其复杂度不断增大,完全依赖开发人员的先验知识提取程序特征既耗时耗力,又很难充分挖掘出程序中隐含特征.深度学习是一种数据驱动的端到端的方法,它根据已有数据构建深度神经网络对数据中隐含的特征进行挖掘,已经在众多领域中获得成功应用.将深度学习技术运用于程序理解中,根据具体任务以及大量数据自动地学习程序数据中蕴含的特征,可以充分地挖掘出程序中隐含的知识,提高程序理解的效率.对基于深度学习的程序理解研究工作进行综述,首先对程序所包含的性质进行分析,然后介绍主流的程序理解模型,包括基于序列、结构以及执行过程的程序理解模型.随后展示基于深度学习的程序理解在程序分析中的应用,主要针对代码补全、代码注释生成、代码检索等任务.最后,分析并总结程序理解研究所面临的挑战. 展开更多
关键词 程序理解 程序分析 软件工程 深度学习 数据挖掘
下载PDF
程序理解:现状与未来 被引量:14
3
作者 金芝 刘芳 李戈 《软件学报》 EI CSCD 北大核心 2019年第1期110-126,共17页
程序理解是软件工程中的关键活动,在软件开发、维护、重用等任务中发挥着重要的作用.程序理解自软件工程出现以来,就一直是该领域的研究热点.随着软件应用的日益复杂和不断普及,程序理解研究的需求发生了新的变化,程序的自理解或自认知... 程序理解是软件工程中的关键活动,在软件开发、维护、重用等任务中发挥着重要的作用.程序理解自软件工程出现以来,就一直是该领域的研究热点.随着软件应用的日益复杂和不断普及,程序理解研究的需求发生了新的变化,程序的自理解或自认知逐渐成为新的关注点,有必要对程序理解进行重新审视.从工程、学习和认知以及方法和技术这3个角度定位程序理解任务;随后,通过文献分析展示其研究布局,进而分别从认知过程、理解技术以及软件工程任务中的应用这3个方面,综合论述程序理解研究的发展脉络和研究进展. 展开更多
关键词 软件工程 程序理解 软件理解 程序静态分析 程序动态分析
下载PDF
逆向工程分析技术研究 被引量:5
4
作者 周立萍 孙青岩 陈平 《微机发展》 2004年第4期4-7,共4页
近年来,许多组织面临着遗产系统的理解和演化问题,理解和演化遗产系统的问题在软件研究领域越来越重要。逆向工程通过提供一个对目标系统的设计和总体结构的较好的理解来辅助遗产系统的演化,是解决遗产系统问题的关键技术。文中介绍了... 近年来,许多组织面临着遗产系统的理解和演化问题,理解和演化遗产系统的问题在软件研究领域越来越重要。逆向工程通过提供一个对目标系统的设计和总体结构的较好的理解来辅助遗产系统的演化,是解决遗产系统问题的关键技术。文中介绍了逆向工程的定义,综述了逆向工程分析技术的研究进展,探讨了分析技术研究存在的不足之处,给出了未来的发展趋势。 展开更多
关键词 软件工程 逆向工程 软件系统 软件开发 程序代码
下载PDF
一种基于模糊形式概念分析的程序聚类方法 被引量:13
5
作者 许佳卿 彭鑫 赵文耘 《计算机研究与发展》 EI CSCD 北大核心 2009年第9期1556-1566,共11页
程序聚类通过将与同一个需求或设计元素相关的代码单元聚集在一起来辅助程序理解及系统结构分析.其中,形式概念分析(FCA)是一类被广泛采用的程序聚类技术.然而现有基于FCA的程序聚类方法都是基于二值属性构建的,无法处理模糊信息.提出... 程序聚类通过将与同一个需求或设计元素相关的代码单元聚集在一起来辅助程序理解及系统结构分析.其中,形式概念分析(FCA)是一类被广泛采用的程序聚类技术.然而现有基于FCA的程序聚类方法都是基于二值属性构建的,无法处理模糊信息.提出将模糊概念分析用于基于文本分析的程序聚类,提出了一种支持模糊信息的程序聚类方法.该方法包括模糊属性的采集过程以及相应的模糊概念格的构造算法.在此基础上,开发了一个半自动化的程序分析工具,并将其应用到一个商业软件分析中.初步的实验结果表明该方法能够有效地支持基于模糊特征的程序聚类,对于提高遗留系统的维护效率有明显的帮助. 展开更多
关键词 形式概念分析 模糊形式概念分析 模糊属性 程序聚类 程序理解
下载PDF
代码注释自动生成方法综述 被引量:12
6
作者 陈翔 杨光 +2 位作者 崔展齐 孟国柱 王赞 《软件学报》 EI CSCD 北大核心 2021年第7期2118-2141,共24页
在软件的开发和维护过程中,与代码对应的注释经常存在缺失、不足或者与代码实际内容不匹配等问题,但手工编写代码注释对开发人员来说费时费力,且注释质量难以保证,因此亟需研究人员提出有效的代码注释自动生成方法.代码注释自动生成问... 在软件的开发和维护过程中,与代码对应的注释经常存在缺失、不足或者与代码实际内容不匹配等问题,但手工编写代码注释对开发人员来说费时费力,且注释质量难以保证,因此亟需研究人员提出有效的代码注释自动生成方法.代码注释自动生成问题是当前程序理解研究领域的一个研究热点,对该问题进行了系统综述.主要将已有的自动生成方法细分为3类:基于模板的方法、基于信息检索的方法和基于深度学习的方法.依次对每一类方法的已有研究成果进行了系统的梳理、总结和点评.随后分析了已有的实证研究中经常使用的语料库和主要的注释质量评估方法,以利于针对该问题的后续研究可以进行合理的实验设计.最后进行总结,并对未来值得关注的研究方向进行了展望. 展开更多
关键词 程序理解 代码注释自动生成 模板 信息检索 深度学习 机器翻译
下载PDF
基于函数调用路径的软件实现与设计一致性验证 被引量:11
7
作者 牟永敏 杨志嘉 《中国科学:信息科学》 CSCD 2014年第10期1290-1304,共15页
软件系统开发完成后,验证其是否完成了软件设计说明书的所有功能并且与设计算法一致,是软件测试的一项重要工作.通过人工遍历分析源代码来完成实现与设计的一致性验证是复杂费力的,并且需要测试人员具备丰富的编程经验和较强的算法分析... 软件系统开发完成后,验证其是否完成了软件设计说明书的所有功能并且与设计算法一致,是软件测试的一项重要工作.通过人工遍历分析源代码来完成实现与设计的一致性验证是复杂费力的,并且需要测试人员具备丰富的编程经验和较强的算法分析能力.论文提出了一种基于函数调用路径的软件实现自动验证方法.从设计文档和源代码两个方面出发,分别分析其函数调用关系,提取函数调用路径,生成功能簇模型.其中文档方面通过人工理解设计文档,确定函数调用关系,然后自动生成标准功能簇模型;源代码方面通过静态分析,自动获取函数调用关系,提取功能点特征,利用这些特征提取功能点的具体实现算法,自动生成软件的实际功能簇模型.对比两个功能簇模型,验证软件实现与设计的一致性.实验结果表明:算法能够准确获得软件系统的功能结构及实现算法特征,对软件实现与设计的一致性做出有效判定,为软件实现与设计的一致性自动化测试提出一种新的思路. 展开更多
关键词 软件设计 软件实现 一致性 验证 函数调用路径 功能提取 程序理解
原文传递
一种基于模糊概念格和代码分析的软件演化分析方法 被引量:9
8
作者 许佳卿 彭鑫 赵文耘 《计算机学报》 EI CSCD 北大核心 2009年第9期1832-1844,共13页
软件系统的演化分析是程序分析和程序理解的一个重要方面.通过演化分析可以了解系统需求和设计的演化趋势,从而更好地理解系统的需求和设计决策.文中在前期工作所提出的基于模糊概念格的程序分析方法基础上,进一步将其用于系统演化分析... 软件系统的演化分析是程序分析和程序理解的一个重要方面.通过演化分析可以了解系统需求和设计的演化趋势,从而更好地理解系统的需求和设计决策.文中在前期工作所提出的基于模糊概念格的程序分析方法基础上,进一步将其用于系统演化分析,提出了一种基于模糊概念格的软件演化分析方法.该方法利用基于概念相似度度量的松弛树匹配的方法建立不同版本概念格中概念和概念子格之间的映射关系,在此基础上通过结构差异分析来发现各种演化类型.实验表明,该方法能够有效地发现不同版本之间的高层演化信息,有助于开发人员理解系统的演化历史以及相关的设计决策. 展开更多
关键词 程序理解 软件演化 演化分析 代码分析 概念格 树匹配 版本差异比较
下载PDF
一种基于反射和开放编译的C++植入机制 被引量:8
9
作者 李青山 陈平 王伟 《系统工程与电子技术》 EI CSCD 北大核心 2003年第7期851-855,共5页
动态分析是理解面向对象软件系统的主要手段 ,通过植入 ,才能准确提取系统运行时的信息。常见植入方法中 ,植入代码和目标代码处于同一计算层次 ,植入过程会影响目标代码运行的准确性和效率。基于反射原理 ,采用开放编译技术 ,通过将植... 动态分析是理解面向对象软件系统的主要手段 ,通过植入 ,才能准确提取系统运行时的信息。常见植入方法中 ,植入代码和目标代码处于同一计算层次 ,植入过程会影响目标代码运行的准确性和效率。基于反射原理 ,采用开放编译技术 ,通过将植入的软件触发器和被植入的目标系统作为两个计算层次来干预编译过程 ,从而达到软件植入的目的。引入了对象触发器 ,利用对象生命周期控制机制获取有用的动态信息 ,并详细描述了植入核心算法 ,利用OpenC ++实现了该植入机制。 展开更多
关键词 程序理解 动态分析 软件植入 反射 开放编译 C++
下载PDF
软件防反汇编技术研究 被引量:7
10
作者 尚涛 谷大武 《计算机应用研究》 CSCD 北大核心 2009年第12期4553-4557,共5页
为了保护软件所有权,根据一般的反汇编算法的特征,提出代码重叠、跳转地址重定向和控制流混淆等几种代码混淆技术。这些技术能使反汇编结果出现混淆,误导攻击者对程序理解,从而提高软件防反汇编的能力,有效地阻止对软件的逆向分析,保护... 为了保护软件所有权,根据一般的反汇编算法的特征,提出代码重叠、跳转地址重定向和控制流混淆等几种代码混淆技术。这些技术能使反汇编结果出现混淆,误导攻击者对程序理解,从而提高软件防反汇编的能力,有效地阻止对软件的逆向分析,保护了软件的知识产权。 展开更多
关键词 软件保护 逆向分析 代码混淆 程序理解 反汇编
下载PDF
设计模式变体的描述与验证 被引量:8
11
作者 肖卓宇 何锫 陈俊旭 《计算机应用研究》 CSCD 北大核心 2017年第6期1762-1765,1785,共5页
为解决标准设计模式演化后难以检测的问题,引入设计模式变体思想,以Bridge模式为例,给出了八种常用的变体实现,并以人工形式挖掘了四种开源系统中Bridge模式变体的基准数,接着在Apache Ant 1.6.2与JHotDraw 5.1开源系统中通过六种主流... 为解决标准设计模式演化后难以检测的问题,引入设计模式变体思想,以Bridge模式为例,给出了八种常用的变体实现,并以人工形式挖掘了四种开源系统中Bridge模式变体的基准数,接着在Apache Ant 1.6.2与JHotDraw 5.1开源系统中通过六种主流设计模式检测工具进行了变体检测实验。实验结果表明,FCA-CBR方法简单有效,对两种开源系统中Bridge模式变体检测的精确率达到60%与48.1%,与先前方法相比有了较大的提高。 展开更多
关键词 程序理解 设计模式识别 变体 基准
下载PDF
基于加权PageRank算法的关键包识别方法 被引量:8
12
作者 潘伟丰 李兵 +1 位作者 马于涛 姜波 《电子学报》 EI CAS CSCD 北大核心 2014年第11期2174-2183,共10页
识别软件中的关键实体对于人们理解软件,控制和降低维护费用具有重要意义.然而现有的工作基本都是针对关键类识别的,针对关键包、方法/属性等的研究甚少;同时现有的工作也未能揭示关键类与软件外部质量属性间的关系.为丰富现有的工作,... 识别软件中的关键实体对于人们理解软件,控制和降低维护费用具有重要意义.然而现有的工作基本都是针对关键类识别的,针对关键包、方法/属性等的研究甚少;同时现有的工作也未能揭示关键类与软件外部质量属性间的关系.为丰富现有的工作,本文提出了一种基于加权PageRank算法的关键包识别方法.该方法用加权有向软件网络模型抽象包粒度软件系统,提出新度量PR(PackageRank)从结构角度量度节点重要性,并引入加权的PageRank算法计算该度量值.数据实验部分以六个开源Java软件为例,分析了包的PR值与常用复杂网络中心性指标(介数中心性、接近中心性、度数中心性等)间的相关性;使用加权的SIR(Susceptible-Infectious-Recovered)模型分析了PR所识别关键包的传播影响,并与其它相关方法进行比较,验证了本文方法的有效性;最后,以其中两个软件为例,分析了包的PR值与包可理解性间的关系,进一步验证了本文方法的有效性. 展开更多
关键词 关键包 PAGERANK算法 软件网络 程序理解
下载PDF
基于神经网络的自动源代码摘要技术综述 被引量:7
13
作者 宋晓涛 孙海龙 《软件学报》 EI CSCD 北大核心 2022年第1期55-77,共23页
源代码的摘要可以帮助软件开发人员快速地理解代码,帮助维护人员更快地完成维护任务.但是,手工编写摘要代价高、效率低,因此人们试图利用计算机自动地为源代码生成摘要.近年来,基于神经网络的代码摘要技术成为自动源代码摘要研究的主流... 源代码的摘要可以帮助软件开发人员快速地理解代码,帮助维护人员更快地完成维护任务.但是,手工编写摘要代价高、效率低,因此人们试图利用计算机自动地为源代码生成摘要.近年来,基于神经网络的代码摘要技术成为自动源代码摘要研究的主流技术和软件工程领域的研究热点.首先阐述了代码摘要的概念和自动代码摘要的定义,回顾了自动代码摘要技术的发展历程,并介绍了生成式摘要的质量评估方法和评估指标;然后分析了神经代码摘要算法的通用结构、工作流程和面临的主要挑战;给出了代表性算法的分类,并对每类算法的设计原理、特点和限制条件进行了分析.最后,讨论并展望了未来神经代码摘要技术的发展趋势和研究方向. 展开更多
关键词 智能软件工程 代码摘要 程序理解 神经网络 深度学习
下载PDF
代码特征自动提取方法 被引量:7
14
作者 史志成 周宇 《计算机科学与探索》 CSCD 北大核心 2021年第3期456-467,共12页
神经网络在软件工程中的应用极大程度上缓解了传统的人工提取代码特征的压力。已有的研究往往将代码简化为自然语言或者依赖专家的领域知识来提取代码特征,简化为自然语言的处理方法过于简单,容易造成信息丢失,而引入专家制定启发式规... 神经网络在软件工程中的应用极大程度上缓解了传统的人工提取代码特征的压力。已有的研究往往将代码简化为自然语言或者依赖专家的领域知识来提取代码特征,简化为自然语言的处理方法过于简单,容易造成信息丢失,而引入专家制定启发式规则的模型往往过于复杂,可拓展性以及普适性不强。鉴于以上问题,提出了一种基于卷积和循环神经网络的自动代码特征提取模型,该模型借助代码的抽象语法树(AST)来提取代码特征。为了缓解因AST过于庞大而带来的梯度消失问题,对AST进行切割,转换成一个AST序列再作为模型的输入。该模型利用卷积网络提取代码中的结构信息,利用双向循环神经网络提取代码中的序列信息。整个流程不需要专家的领域知识来指导模型的训练,只需要将标注类别的代码作为模型的输入就可以让模型自动地学习如何提取代码特征。应用训练好的分类编码器,在相似代码搜索任务上进行测试,Top1、NDCG、MRR的值分别能达到0.560、0.679和0.638,对比当下前沿的用于代码特征提取的深度学习模型以及业界常用的代码相似检测工具有显著的优势。 展开更多
关键词 代码特征提取 代码分类 程序理解 相似代码搜索
下载PDF
面向程序理解的系统依赖图构建算法 被引量:6
15
作者 王克朝 王甜甜 +2 位作者 苏小红 马培军 童志祥 《哈尔滨工业大学学报》 EI CAS CSCD 北大核心 2013年第1期78-84,共7页
为降低程序理解中的程序标准化和程序匹配等复杂度,提出了面向程序理解的系统依赖图构建算法,将其划分为3个阶段:程序信息的提取、控制依赖子图的构建和数据依赖子图的构建.采取控制依赖和数据依赖分别求解,直接基于控制依赖子图分析数... 为降低程序理解中的程序标准化和程序匹配等复杂度,提出了面向程序理解的系统依赖图构建算法,将其划分为3个阶段:程序信息的提取、控制依赖子图的构建和数据依赖子图的构建.采取控制依赖和数据依赖分别求解,直接基于控制依赖子图分析数据流,无需额外的控制流图表示,并且可按需计算数据流,降低了算法复杂度;将选择语句和循环语句统一表示,并将表达式表示为抽象语法树,使之便于程序转换和分析.在编程题自动评分系统和程序识别中的应用中结果表明构建的系统依赖图为程序理解和分析提供了方便,降低了复杂度. 展开更多
关键词 程序理解 系统依赖图 程序信息提取 控制依赖 数据依赖
下载PDF
在程序理解中使用切片技术 被引量:3
16
作者 纳荣 《计算机工程与设计》 CSCD 2003年第1期30-32,49,共4页
对于遗产软件的理解和维护在软件研究领域中已经变得越来越重要。综述了程序理解的策略及工具,引入了程序切片的思想,并在此基础上对传统的切片方法进行改进以更好地完成程序理解的任务。
关键词 程序理解 切片技术 软件维护 软件系统
下载PDF
异构平台消息通信机制移植技术的研究 被引量:4
17
作者 徐军 戴浩 +2 位作者 谢永强 肖孟 刘宝生 《系统工程理论与实践》 EI CSCD 北大核心 2006年第10期80-87,共8页
将Windows平台上的应用系统资源移植到Linux平台,是扩大Linux应用范围的重要途径之一.由于Windows和Linux在消息通信机制上的较大差异,以及目前移植方法处理能力的不足,造成移植工作复杂而艰巨.本文在分析比较两种操作系统消息通信机制... 将Windows平台上的应用系统资源移植到Linux平台,是扩大Linux应用范围的重要途径之一.由于Windows和Linux在消息通信机制上的较大差异,以及目前移植方法处理能力的不足,造成移植工作复杂而艰巨.本文在分析比较两种操作系统消息通信机制的基础上,设计了两种通信机制间的映射与转换方法,该方法没有采取常用的直接转换方式,而是通过基于源代码的模型恢复与异构平台模型间的映射来实现间接转换,可适用于处理消息通信机制等程序框架的准确转换.该方法被应用到军事综合信息网中证书和注册授权等多个重要服务器应用程序的移植项目,实验结果表明方法可行,并能够显著加快移植周期、降低移植成本. 展开更多
关键词 软件移植 消息通信机制 程序理解 模型映射
原文传递
一种基于UML序列图的状态图合成方法 被引量:5
18
作者 褚华 李青山 +1 位作者 陈平 郭俊丽 《系统工程与电子技术》 EI CSCD 北大核心 2005年第3期524-528,共5页
逆向工程作为辅助程序理解的重要手段,逐渐成为软件工程领域的研究热点。基于面向对象软件的动态本质,研究动态模型的抽象和转换方法对理解该类软件特征具有重要意义。在分析UML序列图和状态图模型的基础上,借鉴BK算法核心思想,给出了... 逆向工程作为辅助程序理解的重要手段,逐渐成为软件工程领域的研究热点。基于面向对象软件的动态本质,研究动态模型的抽象和转换方法对理解该类软件特征具有重要意义。在分析UML序列图和状态图模型的基础上,借鉴BK算法核心思想,给出了一种从UML序列图合成状态图的方法。最后,通过系统的实验研究,验证了该方法的有效性。 展开更多
关键词 逆向工程 程序理解 模型转换 面向对象 UNL状态图
下载PDF
利用h指数及其衍生度量识别关键类 被引量:6
19
作者 王木生 卢红敏 +1 位作者 周毓明 徐宝文 《计算机科学与探索》 CSCD 2011年第10期891-903,共13页
在维护不熟悉的软件系统时,需要花费大量的时间去理解系统的架构和功能。为帮助人们进行程序理解,在指数度量的基础上开发了一种轻量级的、自动化的关键类识别方法。软件维护人员可以从该方法识别出来的关键类入手,熟悉系统的架构和功... 在维护不熟悉的软件系统时,需要花费大量的时间去理解系统的架构和功能。为帮助人们进行程序理解,在指数度量的基础上开发了一种轻量级的、自动化的关键类识别方法。软件维护人员可以从该方法识别出来的关键类入手,熟悉系统的架构和功能。首先根据类间的依赖关系构建类之间的依赖图,然后在依赖图的基础上计算h指数及其衍生指数度量值评价类的重要性。在两个开源软件系统上的实验结果表明,与先前的工作相比,该方法能够在保证识别准确性的情况下快速识别出系统中的关键类。 展开更多
关键词 关键类 H指数 依赖图 面向对象 程序理解
下载PDF
基于相关主题模型的程序网络自动构建与分析 被引量:5
20
作者 孙小兵 刘湘月 +1 位作者 李斌 张伟佳 《电子学报》 EI CAS CSCD 北大核心 2017年第5期1052-1056,共5页
程序理解的目的在于获得足够的软件系统信息,以适用于人理解的形式展现出来,辅助开发人员对软件的理解.本文通过使用相关主题模型,为软件系统类层次的代码文件建立程序网络,并可视化展示整个软件系统的相关结构和功能,辅助开发者理解整... 程序理解的目的在于获得足够的软件系统信息,以适用于人理解的形式展现出来,辅助开发人员对软件的理解.本文通过使用相关主题模型,为软件系统类层次的代码文件建立程序网络,并可视化展示整个软件系统的相关结构和功能,辅助开发者理解整个程序代码.该技术综合考虑了软件代码中的结构性信息和内容性信息,所建立的程序网络可帮助开发者更好的理解程序的语法依赖关系和语义功能相关关系.实验验证了建立的程序网络具有较好的准确性以及可以为指定的类推荐相关类. 展开更多
关键词 程序理解 相关主题模型 程序网络
下载PDF
上一页 1 2 5 下一页 到第
使用帮助 返回顶部