《基于pycparser的C源程序可视化系统设计和实现》由会员分享,可在线阅读,更多相关《基于pycparser的C源程序可视化系统设计和实现(29页珍藏版)》请在金锄头文库上搜索。
1、苏州大学本科生毕业设计(论文)目 录前 言1第一章 绪 论21.1 课题研究背景及意义21.2 课题主要内容21.3 本文的组织结构3第二章 程序可视化42.1 程序可视化概述42.2 程序可视化方法52.2.1 NS图52.2.2 分层布局图62.2.3 树布局图62.3 程序可视化系统92.3.1 Graphviz绘图工具92.3.2 Tree-Map系统102.4 本章总结10第三章 系统分析与设计123.1 系统需求123.2 系统的结构设计123.2.1 系统的架构设计123.2.2 系统的详细设计13第四章 系统的实现17第五章 总结与展望235.1 课题总结235.2 后续工作展
2、望23参考文献24致 谢25摘 要现如今,软件工程行业迅猛发展并时刻影响着人类的生活。在软件开发的过程中,软件的维护正起着越来越重要的作用。而随着软件规模的不断扩大,包含数百万行代码的软件越来越常见,这无疑对软件维护人员提出了新的挑战。对于开发人员而言,传统的通过阅读程序文本理解程序的方式将耗费大量的时间和精力,从而直接增加软件维护的成本。所以,寻求一种全新的程序理解方案成为了软件工程行业亟需解决的问题。在这种情况下,程序可视化理念的提出,为程序理解提供了新的思路。程序可视化技术寻求通过可视化技术以静态或动态的图像显示程序的代码逻辑或数据结构,从而帮助开发人员理解程序内容,进而帮助企业降低软件
3、维护成本。本文首先对程序可视化技术进行了简要的概述,接着分别介绍了经典的可视化方法,并对现有的可视化系统进行了分析。之后,阐述了本课题所制作的C源程序可视化系统的结构,并对系统主要功能的实现进行了阐述。最后总结了可视化技术发展的前景和系统开发过程中的不足。关键词:C源程序;Pycparser库;程序可视化AbstractNowadays, the software engineering industry has gained rapid development and kept affecting human life. Software maintenance has played a s
4、ignificant role in the process of software development. With the scale of software becoming larger and larger, its common to meet the software which contains millions of lines of code, and it undoubtedly poses new challenges for software engineer. For developers, the traditional way to understand th
5、e program is reading the code, which takes a lot of time and energy and makes the cost of software maintenance increases a lot. Therefore, seeking for a new program-understanding method has become a problem that has to be solved in the software engineering industry.In this case, the concept of progr
6、am visualization has provided new method for program understanding. The program visualization technology visualizes the code logic or data structure of the program with a static or dynamic image. This helps the developers understand the program content easily, and helps the company reduce the cost o
7、f software maintenance.Firstly, the article gives a brief overview of program visualization technology. Then it introduces the classic visualization technologies and analyzes the existing visualization systems. Afterwards, it describes the structure of the C source program visualization system and t
8、he realization of the main functions of the system. Finally, it images the prospects of the development of visualization technology and summaries the deficiencies in the development process.Keywords: C source program; Pycparser; Program visualizationi前 言程序可视化是当今软件工程产业研究的热门领域。程序可视化技术旨在利用创建图像、图表或动画等方式
9、将数据或文本转化为图形内容以传递信息,帮助人们加深对程序内容的理解。因为通过实例化的资料帮助人类理解抽象化的思想是十分简单有效的,所以,程序可视化的理念自1987年被提出后,便取得了较为广泛的关注和较快的发展。伴随着软件行业的发展,计算机程序可视化已逐步成为帮助开发和维护人员理解程序逻辑、帮助企业降低软件维护成本的主流辅助技术。与传统的通过程序语言解释程序内部逻辑的方法不同,程序可视化可以以更为直观生动的图像信息展现程序片段的内部逻辑。直到今天,程序可视化的公认定义仍然没有在该领域内达成共识。现有的每类程序可视化技术都可以对特定的程序信息进行可视化操作,但不同的程序可视化技术在其定义中强调的重
10、点又不尽相同。所以,各种形式的程序可视化技术相互依赖又各有特色。本课题主要以C源程序为可视化对象,通过分析较为成熟的程序可视化技术和研究现有的程序可视化系统,借助Python编程语言在数据分析方面的优势以及Pycparser库对C源程序的解析能力,初步实现针对C源程序的可视化效果。第一章 绪 论本章主要介绍了软件可视化的研究背景和意义,概述了本课题研究的主要内容,并在本章的最后对论文的组织结构进行了介绍。1.1 课题研究背景及意义在软件工程行业高速发展的当下,由于软件功能的增加、应用程序需求的演变等诸多因素,程序正变得越来越复杂。可想而知,通过源代码本身去理解程序是一项非常艰巨且耗时的任务,所
11、以复杂的软件通常很难被开发人员所理解,甚至很少被运营维护人员所理解,这也直接导致维护软件的成本越来越高。因此,从降低软件维护成本的角度出发,软件工程领域的学者已经开始寻求通过多种方案解决这个问题,这其中最关键的方案即为程序可视化技术。众所周知,和书面信息相比,视觉图像信息给予人脑的刺激则更为深刻。通过分析程序源代码的逻辑结构并利用图形的组合在图像上将其显示出来,可以帮助开发人员更加迅速准确地理解程序,进而降低软件维护的成本。1.2 课题主要内容本课题主要以C源程序为研究对象,分析程序可视化领域较为成熟的可视化方法,对比这些技术的优缺点,研究现有的可视化系统,并在利用Pycparser库实现对C
12、源程序的解析功能的基础上,完成C源程序的可视化系统。本课题所涉及的主要工作如下:(1)对程序可视化技术的分析。通过对NS图、树布局图、分层布局图和正交布局图的分析,找出程序可视化技术的特点以及每种技术的优缺点,从而寻求高效的可视化C源程序的方案。(2)对现有的程序可视化系统的研究。通过对Graphviz绘图工具和Tree-Map系统的研究,总结主流程序可视化系统的特点和所用技术,方便C源程序可视化系统的分析与设计。(3)研究Pycparser库以及AST抽象语法树与C源程序的关系。学习如何通过使用Pycparser库,获得与C源程序相对应的AST抽象语法树,以及分析在获得了AST抽象语法树之后
13、所要进行的工作。(4)研究能够实现绘制CFG控制流图的算法。CFG控制流图在表示不同的程序语句的执行时有着不同的规则。通过分析C源程序的执行逻辑,寻求制定相关算法以准确地控制CFG控制流图的输出。1.3 本文的组织结构本文共分为五章,各个章节内容安排如下:第一章:绪论。本章主要介绍了本课题的研究背景及意义、论述了程序可视化与软件业发展的关系和其重要性、阐述了本文的主要工作内容,最后介绍了本文的组织结构。 第二章:程序可视化。本章详细阐述了程序可视化的相关概述,介绍了较为经典的程序可视化技术,分析了它们的优缺点,以及研究了现有的较为成熟的可视化系统。第三章:系统的分析与实现。本章主要介绍了本课题
14、所制作的C源程序可视化系统架构以及详细设计的相关内容。第四章:系统的实现。本章介绍了本课题所制作的C源程序可视化系统内部的核心代码,通过例举相关例子,介绍了系统在处理不同逻辑的C源程序时所进行的处理。第五章:总结与展望。通过总结全文,提出对程序可视化领域发展前景的设想与展望。第二章 程序可视化本章对程序可视化进行了详细的概述,并分析了现有的可视化方法以及研究了现有的可视化系统。2.1 程序可视化概述程序可视化领域起步于计算机科学领域发展之后,它在20世纪80年代中期被提出,之后迅速发展并成为一个独立的研究领域1。早期的程序可视化主要针对算法逻辑实现可视化,之后,该领域的研究范围持续扩大,发展到
15、针对定量的程序信息进行研究。因为在软件工程产业,运用程序可视化技术可以帮助开发和维护人员高效地理解软件,同时降低软件后期运营维护成本,因此,自20世纪90年代中期以来,程序可视化逐步被认为是涉及商业利益的一门学科9。计算机程序通常以文本形式表示早期的计算机内部机器代码是完全由0和1的序列组成的2,之后,现代计算机系统沿用了这样的传统。因为这样的程序片段难以被人所理解,所以开发人员很快就想出了利用英文符号代替大量的0和1,也正是这些英文符号组成了“程序集”。之后,Basic、C、Java等语言发展壮大,它们利用了颜色、字体、间距和缩进,更好地帮助开发人员实现了所需的程序功能。在计算机程序编写的过
16、程中,理解程序逻辑比学习并运用程序语言实现目标功能通常扮演着更为重要的角色。尽管程序的表达经历了上述所有的改进,文本表达形式仍然是解释程序的非常有限的一类方式。试想,如果一个程序由上百万行代码组成,那么通过阅读代码理解这样一个程序所带来的工作量无疑是巨大的。因此,寻求更好的程序理解技术成为了从业者和研究人员的新的目标。除去通过阅读程序片段以理解程序逻辑的方法,图形则更可以用于生动地说明程序某些方面的执行逻辑这种利用图形解释程序片段的手段即“程序的可视化”。对于程序可视化,马德里理工大学计算机科学系副教授Gmez Henrquez提出了一个简单的定义12:“程序可视化是赋予程序除源代码形式之外的其他形