程序框图到代码的自动转换研究.docx
- 文档编号:2045240
- 上传时间:2022-10-26
- 格式:DOCX
- 页数:40
- 大小:268.99KB
程序框图到代码的自动转换研究.docx
《程序框图到代码的自动转换研究.docx》由会员分享,可在线阅读,更多相关《程序框图到代码的自动转换研究.docx(40页珍藏版)》请在冰豆网上搜索。
程序框图到代码的自动转换研究
摘要1
Abstract1
第1章引言2
第2章程序流程图自动转换为代码的基本思想4
2.1基本思想4
2.2实现自动转换的基本步骤4
第3章系统架构6
3.1硬件系统和开发平台6
3.2系统样式…………………………………………………………………………….…6
3.4 需求分析……………………………………………………………………………………….…..7
第4章系统实现8
4.1系统开发环境8
4.3.1识取预处理10
4.3.2图形的操作和存储10
4.4图形数据的解析与生成………………………………………………………………11
4.4.1数据与关系的定义11
4.4.2关系的解析15
4.4.3代码生成算法44
4.5.1代码的编绎48
4.5.2代码的运行48
5.1结果分析49
5.2程序的局限性51
第6章总结与启示52
致谢…………………………………………………………………………………………………………53
程序框图到代码的自动转换研究
摘要:
程序框图与源代码的自动转换是软件工程领域研究的一个重要课题,有诸多不同的技术和方法。
本文采用的方法是首先对程序框图之间的各种关系及其含义进行解析,将之分解为顺序执行关系、判断嵌套关系、循环嵌套关系和跳转嵌套关系,在此基础上生成一个自动转换系统。
该系统包括用户接口控制模块、图形符号解析模块、代码生成模块、编译执行模块等。
自动生成的仿C语言在本系统开发环境中能正确运行。
关键词:
程序框图;代码;自动转换
Theprocedureframediagramarrivesautomaticconversionresearchofthecode
Theautomaticconversionoftheprocedureframediagramandthesourcecodeisanimportanttopicofthesoftwareengineeringrealmresearch,alsohavingmanydifferenttechniquesandmethod.Themethodofthistextadoptioncarriesontheresolutiontovariousrelationanditsmeaningsbetweentheprocedureframediagramfirst,relatingtoitsdecompositionfortheinproperorderperformance,judgmentthesetrelation,circulationthesetrelationandjumptoturnarelation,bornonthisfoundationanimitatesthelanguagesystemofC.Thistextstillconstructedasimpleeditandtranslatethesystem,makeimitatebornlytherightmovementoftheClanguageability.
KeyWord:
ProcedureFrameDiagram;Code;AutomaticConversion;
第1章引言
软件自动化是提高软件质量与生产效率的根本途径。
而程序框图与源代码的自动转换则是软件开发过程中极富创造性的知识密集型活动,是软件自动化的难点和关键所在。
这里包括两个方面的问题:
一是程序框图转换为源代码的研究;另一个则是相反的方向,即源代码转换为程序框图的研究。
目前公开报道的文献基本上是针对源代码转换为程序框图的研究。
这是因为,在源代码级上分析程序是软件逆向工程的基本任务,其目的是从程序文本中了解程序的高层概念,它主要用于对软件维护的支持,软件可重用知识和部件的获取,以及探测已存在的软件产品等。
软件维护在软件生存周期中是最昂贵的阶段,习惯的软件维护活动占整个生存周期的50—90%。
软件是逻辑产品,维修人员理解软件,要占用47·60%的维护工作量。
没有自动支持,维护时间大部分被花在试图去理解被维护的对象上。
理解的工作极大地依赖于对程序源代码的理解,这不仅对文档很差的软件如此,对于文档较好的软件也是如此,这是因为正向工程产生的文档不足以支持软件的维护活动。
另一方面,软件重用受到越来越广泛的重视,甚至被看作软件工业发达程度的标志。
软件重用虽然在发达国家的很多公司中采用,但无论在理论上还是在技术上,都有许多难题需要研究解决,其中可重用知识相可重用部件的获取被认为是技术难点之一。
软件的最准确的文档就是源代码文本,它是提供可重用知识相部件的丰富资源。
对源程序的分析与理解能帮助人们从程序中获得一些可重用知识与部件。
因此,有的专家认为,下一代的软件工程环境应当是正反向都可用的。
本文研究的程序框图转换为源代码的课题即属于软件开发的正向工程。
它对于提高软件生产效率和软件开发过程的标准化、程序化有着十分重要的意义。
在软件详细设计中,人们常用的程序框图主要有程序流程图、盒图和问题分析图,而程序流程图是使用最为频繁的一种框图,其简便、直观的特点为人们所喜好,在软件设计中有着十分重要的作用。
本文具体讨论了程序流程图自动转换为一种仿C语言代码的处理方法及实现过程。
第2章程序流程图自动转换为代码的基本思想
2.1基本思想
实现程序流程图到源代码的自动转换,首先要解决的一个问题就是对程序流程图的理解,要理解它的逻辑结构,包括顺序、重复、分支及其控制结构。
其中程序控制结构又包括程序总体结构和程序的控制流程结构。
程序的总体结构描述了程序单位(过程、函数或子程序)之间的调用关系及联系信息,并以程序结构树的形式(即程序调用结构图或程序模块图)简明地刻划其慨貌,程序的控制流程结构描述的是程序单位中控制结构的传递和流向.而上述结构关系在流程图中基本上表现在框与框之间的连接。
系统对这些错综复杂的相互关系进行分类解析,从而把流程图蕴藏的程序结构和数据流向能以源代码的方式表现出来,就好像是一种类似编译器的“流程图编译器”。
通过隐藏中间过程,用户在本系统的作图环境中,画出流程图,就能通过“编译”命令来进行查错,如果无错后,能够通过“运行”命令执行,然后就能够生成源代码。
这就实现了本系统的研究目标。
2.2实现自动转换的基本步骤
1.对用户所画的程序流程图,进行存储。
用框结点链表将流程图中所有的框图存入,再用一个线链表将图中所有的线存入。
2.根据上述的框结点链表和线链表,初始化“嵌套表”,“同级表”和“关系再生表”(为实现自动转换而定义的三种数结构,定义情况参看第4章),用来存储解析过程中所进行操作的记录。
3.按“解析”算法,逐步修改“嵌套表”、“同级表”和“关系再生表”。
4.建立“代码生成”算法,把“嵌套表”和“同级表”中的结果,生成仿C语言代码。
5.创建与系统配套的编译模块,对仿C语言代码进行编译,确保代码的正确运行。
第3章系统的总体结构
3.1系统结构
自动转换系统由这样几个功能模块组成:
用户接口控制模块;图形符号解析模块;代码生成模块;编译执行模块。
其结构如图3-1所示。
3.2模块功能简析
1.用户接口控制模块
主要功能:
提供操作界面;提供画程序流程图的环境。
2.图形符号解析模块
主要功能:
根据前一个模块提供的图形对框图数据进行关系解析,生成关系数据。
3.代码生成模块
主要功能:
根据图形符号解析模块提供的关系数据,生成源代码。
4.编译执行模块
主要功能:
对代码生成模块产生的源代码进行编译,执行代码程序,生成并显示结果数据。
3.3系统的数据流图分析
按照软件工程学的思想,可以在任何抽象层次上使用数据流图表示系统或软件。
事实上,可以分层次分模块画出本系统的数据流图,由于受篇幅限制,本文仅简要地画出系统的0层数据流图,如图3-2所示。
通过该图,读者并不难理解系统内部的数据流动状况。
第4章自动转换系统的实现
4.1系统开发和运行环境
系统在运行的过程当中,主要进行的是图像处理,同时也要进行大量的数据处理,所以系统对处理器的要求比较的高。
要求CPU的主频大于400Hz,内存大于等于128MB。
系统的开发环境为WindowsXP+VC6.0。
4.2系统样式
本系统采用VC6.0开发,采用单文档三视图结构,具体为:
用CmyDoument做为文档专门用于数据的管理,分别用CmyView做为流程图画图视图,专门用于,流程图的做图,修改,和保存的功能显示于用户面前,用CcodeView做为代码视图,专门用于,流程图生成的代码的生成,编辑,保存的功能的显示,用CrunView做为代码的运行视图,专门用于,代码运行后的结果显示于用户。
4.3程序流程图的识取
4.3.1识取预处理
(1)流程图的图元的的定义
首先为本系统定义了一个Graphics(图像)类,它是本系统给于用户所画流程图的最基本图像定义,它包含以下属性:
属性类型作用
Ltx…………….int(整型)…………….本图元最左上点的x坐标值。
Lty……………int(整型)…………….本图元最左上点的y坐标值。
Rbx…………..int(整型)……………..本图元最右下点的x坐标值。
Rby…………..int(整型)……………..本图元最右下点的y坐标值。
Text………….char*(字符串型)……..本图元所要显示的类容。
State…………int(整型)……………..本图元当前状态。
State为0时,表示此图元处于’一般’情况下;
State为1时,表示此图元处于’用户选择’情况下;
State为2时,表示此图元处于’用户剪切’情况下.
State为3时,表示此图元处于’用户复制’情况下.
State为4时,表示此图元处于’用户粘贴’情况下
Id..int(整型)…本图元唯一标志号。
用于区别其它图元。
另外还定义了一些专门为这些属性服务的get和set方法,因此,Graphics的C++的定义如参看源程序中的Graphics.h文件。
然后,本系统为用户提供的框图定义了Frame(框)类如下,它是继承于上面的Graphics类的,它具有以下的新增属性:
属性类型作用
Depth…int(整型)……图元的深度值。
就是离开始框的最近距离值。
Type…int(整型)……框图的类型。
当Type为1时,表示此框为begin(开始)框。
当Type为2时,表示此框为end(结束)框。
当Type为3时,表示此框为一般框。
当Type为4时,表示此框为子函数框。
当Type为5时,表示此框为判断框。
SubText…char*(字符串型)……当Type为4时的子函数类容。
Next……Frame*(框型指针)….下个框对象的地址,由此构成框链表。
再加上一些对上述属性的get和set方法,Frame类的C++定义参看源程序中的Frame.h文件。
最后,本系统为用户提供的线图定义了Line(线)类如下,它是继承于上面的Graphics类的,它具有以下的新增属性:
属性类型作用
pTo………..int(整型)……………..此线指向某框的ID号。
p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 框图 代码 自动 转换 研究