首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到20条相似文献,搜索用时 156 毫秒
1.
程序理解是软件维护中的一项重要活动。从软件维护和认知学的角度分析了程序理解的任务,描述了几种主流的程序理解的模型。最后针对影响程序理解的因素提出了相应的对策,为提高维护效率提供帮助。  相似文献   

2.
一种可行的自动程序理解途径   总被引:1,自引:0,他引:1  
自动程序理解是软件工程和人工智能的非常活跃的研究领域,本文提出了一种独立于程序设计语言,具有明显结构性和流图结构的中间表示plan来表示程序代码,本文首次提出了应用图文法分析技术于自动程序理解的方法,并给出了基于人工智能技术来进行自动程序理解的模型。  相似文献   

3.
程序理解是软件维护中的一项重要活动。从软件维护和认知学的角度分析了程序理解的任务,描述了几种主流的程序理解的模型。最后针对影响程序理解的因素提出了相应的对策,为提高维护效率提供帮助。  相似文献   

4.
逆向工程技术研究   总被引:2,自引:0,他引:2  
遗留系统的现代化改造成为软件工程领域研究的重点。文章介绍了逆向工程的基本概念以及阐明程序理解是遗留系统演化的最有效的途径,同时引进了程序理解的马蹄铁模型。  相似文献   

5.
基于程序理解的编程题自动评分方法   总被引:3,自引:0,他引:3  
针对传统的编程题自动评分方法没有考虑学生程序是怎样实现编程任务的,以及不能从程序文本的语法结构和语义角度衡量学生程序与正确答案的接近程度等问题,提出一种基于程序理解的自动评分方法.以程序理解的一般过程及基本策略为依据,结合人工阅卷的思维过程,建立评分模型.评分过程可划分为3个阶段:首先将程序代码转换成系统依赖图中间表示形式;然后,对系统依赖图进行标准化转换,消除程序表达方式的多样性;最后,匹配标准化后的学生程序与模板程序系统依赖图并根据匹配结果给出评分.该方法被应用于"C语言编程题自动评分系统"中.实验结果表明:它可以根据学生程序的语法和语义衡量学生程序实现编程任务的正确程度,具有较高的准确性.  相似文献   

6.
计算机程序是由开发者使用编程语言编写、被计算机识别并执行的一系列指令.大型程序源代码通常逻辑复杂,句法抽象,造成较大的认知困难.计算机程序可视化以直观形象的方法呈现计算机程序的代码结构、执行过程和运行结果,增强用户理解和调试程序的能力.从程序执行流程出发,根据程序执行的前、中、后3个阶段分析其可视化目标,并介绍已有可视化方法.在程序执行前阶段,使用可视化对代码组织和潜在异常进行多层级、多维度的展示;在程序执行中阶段,利用可视化辅助算法理解、运行调试和状态监测;在程序执行后阶段,运用可视化进行性能评估优化和异常检测.介绍程序可视化在在线编程调试、算法可视化等多种应用场景下的实际应用案例.最后,总结程序可视化现阶段工作的分类以及存在的不足,并指出高泛化性的算法理解可视化和教育领域的运行调试可视化等是未来工作的研究方向.  相似文献   

7.
基于多agent的程序理解方法研究   总被引:1,自引:1,他引:1  
王少锋 《计算机科学》2002,29(5):131-133
一、引言软件逆向工程的研究是软件工程领域的一个重要而实用的研究内容。逆向工程是在给定源代码的情况下理解软件结构的一个途径,其目的是标识软件系统中的构造块,抽取结构依赖关系,为系统创造另一种更高抽象形式的表示。软件逆向工程是基于以下的假设:构造软件系统的过程是从问题域到实现域的映射过程,这种映射是在正向工程中完成的,而且也是一个可逆的过程,可以在不同的抽象级别上被重构。程序理解是软件逆向工程的一个重要组成部分,程序理解技术的研究具有广阔的应用前景:如1)对软件复用的支持,用于标识可复用的软构件;2)对软件测试的支持,有助于选择测试用例;3)用于设计验证和错误检测等;4)对软件维护的支  相似文献   

8.
胡星  李戈  刘芳  金芝 《软件学报》2019,30(5):1206-1223
自动化软件开发一直是软件工程领域的研究热点.目前,互联网技术促进了开源软件和开源社区的发展,这些大规模的代码和数据成为自动化软件开发的机遇.与此同时,深度学习也在软件工程领域开始得到应用.如何将深度学习技术用于大规模代码的学习,并实现机器自动编写程序,是人工智能与软件工程领域的共同期望.机器自动编写程序,辅助甚至在一定程度上代替程序员开发程序,极大地减轻了程序员的开发负担,提高了软件开发的效率和质量.目前,基于深度学习方法自动编写程序主要从两个方面实现:程序生成和代码补全.对这两个方面的应用以及主要涉及的深度学习模型进行了介绍.  相似文献   

9.
从语言理解的认知模型出发采研究它的因果律,这是近年来发展起来的一种新方法.介绍语言理解与融会贯通的研究进展,并对其他领域的渗透作用进行展望.该研究对提高图灵机模型的融会贯通能力具有重要作用,从而对知识学习、问题求解、语言翻译、软件工程乃至软件生产自动化具有深远的影响力.  相似文献   

10.
异常结构对Java程序分析的影响   总被引:3,自引:0,他引:3  
张聪品  丁辉 《计算机应用》2002,22(12):87-88,91
在软件工程任务中,通常使用控制流,数据流,控制依赖等程序分析技术和理解程序,并把得到的信息用于任务中,当前许多流行的程序设计语言提供了完善的异常处理机制,文中以Java语言为例,讨论了程序中的异常结构对上述分析技术的影响。  相似文献   

11.
Program comprehension research can be characterized by both the theories that provide rich explanations about how programmers understand software, as well as the tools that are used to assist in comprehension tasks. In this paper, I review some of the key cognitive theories of program comprehension that have emerged over the past thirty years. Using these theories as a canvas, I then explore how tools that are commonly used today have evolved to support program comprehension. Specifically, I discuss how the theories and tools are related and reflect on the research methods that were used to construct the theories and evaluate the tools. The reviewed theories and tools are distinguished according to human characteristics, program characteristics, and the context for the various comprehension tasks. Finally, I predict how these characteristics will change in the future and speculate on how a number of important research directions could lead to improvements in program comprehension tool development and research methods. Dr. Margaret-Anne Storey is an associate professor of computer science at the University of Victoria, a Visiting Scientist at the IBM Centre for Advanced Studies in Toronto and a Canada Research Chair in Human Computer Interaction for Software Engineering. Her research passion is to understand how technology can help people explore, understand and share complex information and knowledge. She applies and evaluates techniques from knowledge engineering and visual interface design to applications such as reverse engineering of legacy software, medical ontology development, digital image management and learning in web-based environments. She is also an educator and enjoys the challenges of teaching programming to novice programmers.  相似文献   

12.
Program comprehension is a key activity throughout software maintenance and reuse. The knowledge acquired through comprehending programs can guide engineers to perform various kinds of software maintenance and reuse tasks. The effective comprehension strategy and the associated efficient approach, as well as the sophisticated tool support, are the indispensable elements for an entire solution to program comprehension to reduce the high costs of this nontrivial activity. This paper presents an objective-oriented comprehension strategy, contrasting to the traditional comprehensive understanding strategy in the literature. It is a kind of on-demand understanding for specific tasks and more effective in practice. In addition, using multiple information sources to understand programs is proposed with the corresponding framework. From these two points of views, we propose a feature-oriented program comprehension approach using requirement documentation. This approach aims at a specific category of feature-related software maintenance and reuse tasks. Case studies are conducted to evaluate the proposed solution. Results from the studied cases show that the experimental prototype provides more explicit advices for software engineers when performing these tasks.  相似文献   

13.
14.
对于遗产软件的理解和维护在软件研究领域中已经变得越来越重要,综述了程序理解的策略及工具,引入了程序切片的思想,并在此基础上对传统的切片方法进行改进以更好地完成程序理解的任务。  相似文献   

15.
源代码的摘要可以帮助软件开发人员快速地理解代码,帮助维护人员更快地完成维护任务.但是,手工编写摘要代价高、效率低,因此人们试图利用计算机自动地为源代码生成摘要.近年来,基于神经网络的代码摘要技术成为自动源代码摘要研究的主流技术和软件工程领域的研究热点.首先阐述了代码摘要的概念和自动代码摘要的定义,回顾了自动代码摘要技术...  相似文献   

16.
An important part of many software maintenance tasks is to gain a sufficient level of understanding of the system at hand. The use of dynamic information to aid in this software understanding process is a common practice nowadays. A major issue in this context is scalability: due to the vast amounts of information, it is a very difficult task to successfully navigate through the dynamic data contained in execution traces without getting lost.In this paper, we propose the use of two novel trace visualization techniques based on the massive sequence and circular bundle view, which both reflect a strong emphasis on scalability. These techniques have been implemented in a tool called Extravis. By means of distinct usage scenarios that were conducted on three different software systems, we show how our approach is applicable in three typical program comprehension tasks: trace exploration, feature location, and top-down analysis with domain knowledge.  相似文献   

17.
用况图从用户的角度描述了系统需求,是表达系统功能的有效方式。如果能从系统源代码中直接抽象程序的用况图,对于程序理解工作将具有很大的帮助。基于此理念,提出了基于用况图的辅助用户程序理解方法。该方法通过静态分析把源代码抽象为树型图表达结构,通过度量计算树型图中各类结点值并生成带权的树型图,根据设定的阈值对该图进行剪裁来控制程序复杂度,通过对剪裁后的树型图进行遍历形成系统的执行路径集合,抽象为最终的候选用况。在图形化工具的辅助支持下从候选用况中抽象出系统的用况图,实验分析取得良好效果。  相似文献   

18.
程序理解是一种需要高度智力活动的过程,其效率取决于所理解的程序、理解人员的领域经验和所采用的辅助机制。为了保证该活动的准确性和高效性,理解工具的半自动化支持是关键的。着重探讨和研究基于文法高级概念化抽象的程序理解,从不同层次不同方面来得到源程序的设计意图,实现语言平台的无关性。  相似文献   

19.
在信息化时代,人们对软件的质量要求越来越高.程序分析是保障软件质量的重要手段之一,日益受到学术界和产业界的重视.介绍了若干基本程序分析技术(抽象解释、数据流分析、基于摘要的分析、符号执行、动态分析、基于机器学习的程序分析等),特别是最近10余年的研究进展.进而介绍了针对不同类型软件(移动应用、并发软件、分布式系统、二进制代码等)的分析方法.最后展望了程序分析未来的研究方向和所面临的挑战.  相似文献   

20.
精确的程序静态分析   总被引:12,自引:3,他引:9  
程序的静态分析是程序语言和编译领域的一个重要研究方向,已经被研究了很多年.近年来,它也引起形式方法和软件工程领域的重视,被用于程序测试和正确性验证.文中从程序的语法特征、所关心的数据类型和程序性质等方面比较了一些静态分析技术.着重描述基于路径的分析方法,特别是符号执行技术,讨论了程序路径可行性分析问题及其分类、复杂度.针对程序分析精度的一种量化指标,说明了其计算方法.  相似文献   

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

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