首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到20条相似文献,搜索用时 93 毫秒
1.
金芝  刘芳  李戈 《软件学报》2019,30(1):110-126
程序理解是软件工程中的关键活动,在软件开发、维护、重用等任务中发挥着重要的作用.程序理解自软件工程出现以来,就一直是该领域的研究热点.随着软件应用的日益复杂和不断普及,程序理解研究的需求发生了新的变化,程序的自理解或自认知逐渐成为新的关注点,有必要对程序理解进行重新审视.从工程、学习和认知以及方法和技术这3个角度定位程序理解任务;随后,通过文献分析展示其研究布局,进而分别从认知过程、理解技术以及软件工程任务中的应用这3个方面,综合论述程序理解研究的发展脉络和研究进展.  相似文献   

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

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

4.
了解程序代码所描述的算法,能帮助程序员理解程序从而开展各项软件工程任务。由于人工理解程序算法要求程序员具备丰富的专业知识并且十分耗时耗力,程序算法识别任务以实现程序算法理解的自动化为主要研究目标,与人工理解相比更为高效、准确。系统整理了程序算法识别领域的相关工作。首先,梳理程序算法识别等相关概念,简介基于知识表示与基于信息检索的方法;其次,将基于代码表征的方法划分为基于序列、基于树和基于图等方法展开详细阐述,并对三类方法作出小结与对比;最后,介绍程序算法识别任务的相关应用领域,分析该任务中尚存的问题并对未来的发展作出展望。  相似文献   

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

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

7.
随着我国经济和社会的发展,我国核电产业已进入繁荣发展时期,但现有核电软件已不能满足我国现阶段核电发展需求。为了对我国现有核电软件进行升级改造,在原有核电软件基础之上进行软件重用或再工程成为一个迫切的需求,这就会涉及到核电程序理解的问题。由于核电领域的专业性和复杂性,在核电软件分析的实践基础上,通过引入一般性程序理解采用的技术、模型,引出了核电软件理解需要的技术、模型、步骤。以Copernic程序为例,重点介绍了核电软件理解的过程以及物理模型的建立过程,总结出了一套对核电软件程序理解切实可行的方案,这对我国核电的发展具有十分现实的意义。  相似文献   

8.
青鸟C++程序理解工具   总被引:8,自引:0,他引:8  
周欣  孙家  杨芙清 《计算机工程》2000,26(11):80-81
程序理解是软件开发过程中一项重要活动,为了保证该活动的准确性和高效性,有理解工具的半自动支持是关键的。青鸟C++程序理解工具(JBPCT-C++)支持用户的多样需求,辅助多种理解策略,为用户理解程序提供了很大帮助。该文概要介绍了青鸟C++程序理解工具(JBPCT-C++)的设计目标和原则、体系结构以及基本功能。  相似文献   

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

10.
易长安 《福建电脑》2009,25(8):175-175,147
通常情况下,人们把程序调试理解成识别并纠正程序中的错误代码的过程。调试是一项非常困难的工作,因为错误代码只能通过它们所导致的错误来间接地找到。本文所要介绍的Delta Debugging是一种有效地对程序错误进行定位的方法。给定一个正确的程序和相关的错误的程序,它能够通过程序的执行状态来找到引起程序出错的变量及变量的值。  相似文献   

11.
The present paper discusses a method of program construction based on the specification of the data types. The input and output data types and the mapping between them are specified at a high level of abstraction and this non-procedural specification is used to develop a program schema. The data type and mapping specifications are modified to include a concrete representation of the data and these are used to expand the program schema into a program. A graphical representation for data and program specifications is also introduced and it is shown how this can simplify the techniques and be very useful in program construction. The method is illustrated by developing two programs—the line justifier program described by Gries and the bubblesort.  相似文献   

12.
Good programmers break their projects into a number of pieces, each to be processed or compiled by a different chain of programs. After a set of changes is made, the series of actions that must be taken can be quite complex, and costly errors are frequently made. This paper describes a program that can keep track of the relationships between parts of a program, and issue the commands needed to make the parts consistent after changes are made. Make has been in use on UNIX
  • 1 UNIX is a trademark of Bell Laboratories.
  • systems since 1975. The underlying idea is quite simple and can be adapted to many other environments.  相似文献   

    13.
    程序分片在程序设计、并行、诊断与测试等方面均有广泛的应用,介绍了一种用遗传算法计算最小动态分片的算法。将整个程序看成是一个染色体,而每条语句看成为基因,通过现有遗传算法的操作:选择、变异、交叉等,就可以计算出动态分片,并给出了一个诊断汇编语言的实例。  相似文献   

    14.
    程序缺陷分析与安全保护技术研究   总被引:2,自引:0,他引:2  
    程序安全是信息安全研究的一个重要方向,主要研究程序缺陷分析和安全保护技术等.介绍程序缺陷分析研究及其分类方法,然后将程序安全保护研究分为三类主要途径进行重点阐述和分析,最后讨论程序安全研究的发展趋势.  相似文献   

    15.
    以问题结构为基础的递归程序设计   总被引:7,自引:0,他引:7  
    对递归程序的结构进行了较为深入的研究,提出了递归程序的更一般结构,根据此结构,给出了复杂的递归疸的程序设计方法,根据此方法,可方便地写出较为复杂的递归问题的递归程序,从而提高设计递归程序的效率。  相似文献   

    16.
    A program profiling system for the language Algol 68-R is described. The system provides deterministic information concerning the run-time behaviour of certain Algol language constructs. This is accomplished by preprocessing program texts prior to compilation using a syntax analyzer for Algol 68-R.  相似文献   

    17.
    The online course management system (OCMS) assists online instruction in various aspects, including testing, course discussion, assignment submission, and assignment grading. This paper proposes a plagiarism detection system whose design is integrated with an OCMS. Online assignment submission is prone to easy plagiarism, which can seriously influence the quality of learning. In the past, plagiarism was detected manually, making it very time-consuming. This research thus focuses on developing a system involving code standardization, textual analysis, structural analysis, and variable analysis for evaluating and comparing programming codes. An agent system serves as a daemon to analyze the program codes for OCMS. For textual analysis, the Fingerprinting Algorithm was used for text comparison. Structurally, a formal algebraic expression and a dynamic control structure tree (DCS Tree) were utilized to rebuild and evaluate the program structure. For variables, not only the relevant information for each variable was recorded, but also the programming structure was analyzed where the variables are positioned. By applying a similarity measuring method, a similarity value was produced for each program in the three aspects mentioned above. This research implements an Online Detection Plagiarism System (ODPS) providing a web-based user interface. This system can be applied independently for assignment analysis of Java programs. After three comparison experiments with other researches, the results demonstrated the ODPS has many advantages and good performance. Meanwhile, a combined approach is proven that it is better than a single approach for source codes of various styles.  相似文献   

    18.
    Difference-lists are terms that represent lists. The use of difference-lists can speed up most list-processing programs considerably. Prolog programmers routinely use “difference-list versions” of programs, but very little investigation has taken place into difference-list transformation. Thus, to most programmers it is either unknown that the use of difference-lists is far from safe in all contexts, or else this fact is known but attributed to Prolog’s infamous “occur check problem.” In this paper we study the transformation of list-processing programs into programs that use differencelists. In particular we are concerned with finding circumstances under which the transformation is safe. We show that dataflow analysis can be used to determine whether the transformation is applicable to a given program, thereby allowing for automatic transformation. We prove that our transformation preserves strong operational equivalence. This paper is a revised and extended version of a paper10) that was presented to theInternational Computer Science Conference 88 in Hong Kong December 1988.  相似文献   

    19.
    20.
    Population initialisation in genetic programming is both easy, because random combinations of syntax can be generated straightforwardly, and hard, because these random combinations of syntax do not always produce random and diverse program behaviours. In this paper we perform analyses of behavioural diversity, the size and shape of starting populations, the effects of purely semantic program initialisation and the importance of tree shape in the context of program initialisation. To achieve this, we create four different algorithms, in addition to using the traditional ramped half and half technique, applied to seven genetic programming problems. We present results to show that varying the choice and design of program initialisation can dramatically influence the performance of genetic programming. In particular, program behaviour and evolvable tree shape can have dramatic effects on the performance of genetic programming. The four algorithms we present have different rates of success on different problems.
    Colin G. JohnsonEmail:
      相似文献   

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

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