首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到18条相似文献,搜索用时 265 毫秒
1.
软件的功能描述文档是开发人员了解软件的重要基础.现有软件项目并不都具备全面描述软件功能的文档,但软件项目开发和应用过程中的各种交流记录蕴含了讨论其功能的大量信息.为此,本文提出了一种基于StackOverflow问答数据的软件功能特征挖掘组织方法.该方法提出以动宾短语形式描述软件功能特征,挖掘并组织蕴含在StackOverflow数据中的软件功能特征,自动生成一种以层次化方式展示的软件项目功能特征文档.在针对真实项目的实验中,本文方法生成的软件功能文档可以覆盖官方文档中列举的97.6%的软件常用功能.同时,该方法可以扩展从不同形式的项目交流记录中生成全面描述软件功能特征的文档.  相似文献   

2.
近年来,随着代码复用技术不断成熟和Internet上开源项目不断丰富,软件开发人员的开发行为也逐渐发生了变化。如今,软件开发人员在编程过程中越来越多地依赖于开源软件项目提供的功能。然而,在软件复用活动中,由于开源项目文档的不全面以及代码结构的复杂性,软件开发人员往往只能片面地了解项目的某些功能点,使得复用效率不高。针对开源项目代码丰富而文档较少这一现状,提出了一种基于LDA(Latent Dirichlet Allocation)和静态分析的代码功能识别方法,对传统LDA方法进行了扩展,帮助软件开发人员更全面地了解项目的功能点,从而更好地支持代码复用活动。  相似文献   

3.
林泽琦  邹艳珍  赵俊峰  曹英魁  谢冰 《软件学报》2019,30(12):3714-3729
自然语言文本形式的文档是软件项目的重要组成部分.如何帮助开发者在大量文档中进行高效、准确的信息定位,是软件复用领域中的一个重要研究问题.提出了一种基于代码结构知识的软件文档语义搜索方法.该方法从软件项目的源代码中解析出代码结构图,并以此作为领域特定的知识来帮助机器理解自然语言文本的语义.这一语义信息与信息检索技术相结合,从而实现了对软件文档的语义检索.在StackOverflow问答文档数据集上的实验表明,与多种文本检索方法相比,该方法在平均准确率(mean average precision,简称MAP)上可以取得至少13.77%的提升.  相似文献   

4.
理解软件代码的功能是软件复用的一个重要环节。基于主题建模技术的代码理解方法能够挖掘软件代码中潜在的主题,这些主题在一定程度上代表了软件代码所实现的功能。但是使用主题建模技术所挖掘出的代码主题有着语义模糊、难以理解的弊端。潜在狄利克雷分配(Latent Dirichlet Allocation,LDA)技术是一种比较常用的主题建模技术, 其在软件代码主题挖掘领域已取得了较好的结果,但同样存在上述问题。为此,需要为主题生成解释性文本描述。基于LDA的软件代码主题摘要自动生成方法除了利用主题建模技术对源代码生成主题之外,还利用文档、问答信息等包含软件系统功能描述的各类软件资源挖掘出代码主题的描述文本并提取摘要,从而能够更好地帮助开发人员理解软件的功能。  相似文献   

5.
代码复用是重要的软件复用方式之一,复用者需要理解软件代码实现的功能方能有效实施软件复用。基于主题建模技术的程序理解方法逐渐受到研究人员的重视,它能够帮助软件开发者和使用者更好地理解软件的功能。目前,基于主题建模技术的程序理解方法一般欠缺对挖掘出的Topic的语义分析,为此提出的基于代码静态分析和LDA技术的代码功能挖掘(Code Function Mining,CFM)方法可作为对这类方法的补充。CFM是一套以代码为研究对象的挖掘、筛选、组织和描述主题(Topic)的方法,该方法能够生成带描述的功能型Topic的层次结构,以供使用者更清晰和方便地浏览、学习软件的功能。功能型Topic的描述能够帮助复用者理解代码功能,其层次结构能够让复用者从不同抽象层次理解代码功能。CFM方法包括4个部分:挖掘Topic、筛选Topic、组织Topic、描述Topic。以CFM方法为基础,设计并实现了一个CFM工具。CFM工具能够分析用户提交的代码,通过Web页面向用户展示带描述的功能型Topic的层次结构。最后,对CFM方法中的几个关键算法进行实验分析,验证了CFM方法的有效性。  相似文献   

6.
《计算机科学与探索》2017,(10):1591-1598
开发人员通常通过问答网站的搜索引擎进行相关软件问答文档的搜索。在检索结果中,包含优质代码片段(使用示例)的问答文档往往更受青睐,但如何度量这些文档中代码片段的质量仍是个巨大的挑战。针对这个问题,提出了一种基于代码模式的软件问答文档检索优化方法。该方法能够基于当前检索结果,抽取文档中的代码片段,分析代码片段中的公共代码模式,并基于代码模式度量文档中代码片段的质量,从原有检索结果中向用户推荐高质量的软件问答文档。以软件开发人员在实践过程中遇到的真实问题为基础进行了实验,对比Stack Overflow的搜索结果,所提方法在准确率指标NDCG@5上提升了40%。  相似文献   

7.
随着开源软件项目规模的增大,如何快速地学习、理解一个软件项目成为基于复用的软件开发活动中的一个重要环节。这些开源软件项目的源代码和文档集的数量都比较庞大,开发人员在学习过程中查找和阅读这些软件信息需要花费大量的时间和精力。为此,提出一种基于自然语言的软件信息检索方法,以帮助开发人员快速地检索并理解其需要的软件信息。基于该方法,设计并实现了NaLSiSe工具。NaLSiSe工具在中国计算机学会主办的第一届软件研究成果原型竞赛中荣获优秀奖。以Lucene为例,验证了该工具可以有效减少开发人员阅读源代码和文档的工作量,同时具备简洁的用户界面和友好的用户体验。  相似文献   

8.
目前的软件复用技术主要围绕软件代码的复用进行研究.而随着开源项目的增多,基于待开发项目的需求文档分析,实现项目级的复用就显得非常有价值.当开发人员获取项目的软件需求后,通常需要对其分析并构建解决方案,然后进行设计与实施.如果能根据项目的软件需求找到相似的历史项目进行复用,可以大大节省项目设计与实施时间.因此,在现有的项...  相似文献   

9.
针对性地研究了基于标准版软件系统进行定制开发的特点。根据开发过程中功能覆盖、数据对象差异、功能逻辑差异、修改规模以及修改分布等特点,并结合生物学点突变过程提出一种综合了模型视图和功能逻辑两种维度的复用方法。在数据模型变化处理中,基于突变点影响的链式传递规律,提出了一种管理范围更广的模型构件复用体系;在功能逻辑处理中,通过逻辑描述特征抽取、业务特征增强、特征语法树构建、复用模块裁剪等处理,构造了一种包含映射关系的可复用片段。在共研企业的运输管理系统开发的实验和开源系统的迭代实验中证明,该复用方法平均生成可用性分别为94.13%和78.62%,平均复用比例分别为70.43%和62.68%,且复用资产库的维护成本可控,可有效用于多批次小规模频繁改动的定制开发。  相似文献   

10.
软件复用是软件开发中避免重复劳动的解决方案。开源软件的源代码、邮件列表、缺陷报告和问答文档等软件资源中蕴含了规模庞大、结构复杂、语义关联丰富的软件知识。如何获取知识、组织知识,以及如何在软件复用过程中方便地检索软件知识是亟待解决的问题。为了解决这些问题,面向开源软件项目,构建了软件知识图谱,并提供了基于软件知识图谱的软件知识检索。主要工作包括:针对4种不同类型的软件资源,提出了软件知识实体的提取原则与方法;提出了软件知识实体之间关联关系构建的方法;实现了两种软件知识检索机制,并以文字列表和图形可视化相结合的方式展现检索结果;设计了软件知识图谱构建框架。基于上述工作,设计并实现了一个面向开源软件项目的软件知识图谱构建工具。实例证明,所构建的软件知识图谱可以更好地帮助软件开发人员进行软件知识的检索与应用。  相似文献   

11.
在软件仓库挖掘领域, 通常 将软件工程任务转换成数据挖掘问题进行解决。领域特征的使用严重影响了软件任务的解决效果。然而,如何根据特定任务从软件仓库数据中提取有价值的特征,在软件仓库挖掘领域尚缺乏系统的研究。数据驱动特征提取方法是一种新的特征提取方法。对于给定的软件工程任务,该方法从任务的数据集中选取部分数据(如源代码、缺陷报告等),招募若干志愿者人工完成该任务,并要求志愿者说明在人工完成特定软件工程任务时所考虑的因素。通过分析这些因素,可以提取所需的领域特征。以缺陷报告摘要任务为例进行实验,结果表明新方法能够发现高效的领域特征,并取得比现有方法更好的预测效果。  相似文献   

12.
Many software libraries, especially those commercial ones, provide API documentation in natural languages to describe correct API usages. However, developers may still write code that is inconsistent with API documentation, partially because many developers are reluctant to carefully read API documentation as shown by existing research. As these inconsistencies may indicate defects, researchers have proposed various detection approaches, and these approaches need many known specifications. As it is tedious to write specifications manually for all APIs, various approaches have been proposed to mine specifications automatically. In the literature, most existing mining approaches rely on analyzing client code, so these mining approaches would fail to mine specifications when client code is not sufficient. Instead of analyzing client code, we propose an approach, called Doc2Spec, that infers resource specifications from API documentation in natural languages. We evaluated our approach on the Javadocs of five libraries. The results show that our approach performs well on real scale libraries, and infers various specifications with relatively high precisions, recalls, and F-scores. We further used inferred specifications to detect defects in open source projects. The results show that specifications inferred by Doc2Spec are useful to detect real defects in existing projects.  相似文献   

13.
应用程序编程接口(Application Programming Interface,API)在软件开发以及代码复用中有着重要作用。然而,API代码和文档存在的不一致情况会误导API的使用者并降低软件开发效率及其稳定性等。针对Java API异常代码及其文档描述不一致的情况,提出了一种基于静态分析代码语法树及方法之间的调用关系的自动检测方法,为验证方法的有效性,利用JDK中的API源代码包及其相应文档作为测试对象根据实验结果。本方法的检测结果能达到71.5%的准确率以及85.9%的召回率,能够较为准确地识别API文档对程序异常描述不一致问题,对API文档的编写和维护具有指导性意义。  相似文献   

14.
开源代码托管平台为软件开发行业带来了活力和机遇,但存在诸多安全隐患.开源代码的不规范性、项目依赖库的复杂性、漏洞披露平台收集漏洞的被动性等问题都影响着开源项目及引入开源组件的闭源项目的 安全,大部分漏洞修复行为无法及时被察觉和识别,进而将各类项目的 安全风险直接暴露给攻击者.为了全面且及时地发现开源项目中的漏洞修复行为...  相似文献   

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

16.
段旭  吴敬征  罗天悦  杨牧天  武延军 《软件学报》2020,31(11):3404-3420
随着信息安全愈发严峻的趋势,软件漏洞已成为计算机安全的主要威胁之一.如何准确地挖掘程序中存在的漏洞,是信息安全领域的关键问题.然而,现有的静态漏洞挖掘方法在挖掘漏洞特征不明显的漏洞时准确率明显下降.一方面,基于规则的方法通过在目标源程序中匹配专家预先定义的漏洞模式挖掘漏洞,其预定义的漏洞模式较为刻板单一,无法覆盖到细节特征,导致其存在准确率低、误报率高等问题;另一方面,基于学习的方法无法充分地对程序源代码的特征信息进行建模,并且无法有效地捕捉关键特征信息,导致其在面对漏洞特征不明显的漏洞时,无法准确地进行挖掘.针对上述问题,提出了一种基于代码属性图及注意力双向LSTM的源码级漏洞挖掘方法.该方法首先将程序源代码转换为包含语义特征信息的代码属性图,并对其进行切片以剔除与敏感操作无关的冗余信息;其次,使用编码算法将代码属性图编码为特征张量;然后,利用大规模特征数据集训练基于双向LSTM和注意力机制的神经网络;最后,使用训练完毕的神经网络实现对目标程序中的漏洞进行挖掘.实验结果显示,在SARD缓冲区错误数据集、SARD资源管理错误数据集及它们两个C语言程序构成的子集上,该方法的F1分数分别达到了82.8%,77.4%,82.5%和78.0%,与基于规则的静态挖掘工具Flawfinder和RATS以及基于学习的程序分析模型TBCNN相比,有显著的提高.  相似文献   

17.
针对开源软件代码质量参差不齐和存在安全隐患的问题,提出一种基于混合深度学习模型(DCnnGRU)的开源软件漏洞检测方法。以漏洞库中的关键点为切入点构建控制流图,从静态代码中提取出与关键点存在调用和传递关系的代码片段,将代码片段数字化为固定长度的特征向量,并作为DCnnGRU模型的输入。该模型用卷积神经网络(Convolutional Neural Network,CNN)作为与特征向量交互的接口,门控循环单元(Gated Recurrent Unit,GRU)嵌入到CNN中间,作为捕获代码调用关系的门控机制。首先进行卷积和池化处理,卷积核和池化窗口对特征向量进行降维。其次,GRU作为中间层嵌入到池化层和全连接层之间,能够保留代码数据之间的调用和传递关系。最后利用全连接层来完成归一化处理,将处理后的特征向量送入softmax分类器进行漏洞检测。实验结果验证了DCnnGRU模型比单独的CNN和RNN模型有更高的漏洞检测能力,准确率比RNN高出7%,比CNN高出3%。  相似文献   

18.
正确建立软件文档与代码间的可追踪关系对程序理解、软件维护等非常重要。近年来,软件文档与代码间的可追踪性研究大多基于文本词汇相似度,没有充分利用软件文档和代码所蕴含的结构信息,针对这一问题提出了将软件结构信息与信息检索模型相结合进行文档与代码间可追踪性分析的方法。通过对文档和代码结构信息的分析,改善预处理效果,优化相似度计算过程,进而提高整体方法的有效性。实验结果表明,该方法比单纯基于信息检索的方法在查全率和查准率上都有所提高,而且能提取到更多的可追踪性链。  相似文献   

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

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