资源描述:
《基于源代码分析的逆向建模》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、·52·计算机应用研究2006年*基于源代码分析的逆向建模彭四伟,朱群雄(北京化工大学信息科学与技术学院,北京100029)摘要:逆向建模通过对源代码进行分析,提取出代码中的对象信息、结构信息、流程信息等,生成对象间的关系描述、结构描述、系统流程描述等设计模型描述。逆向建模过程中对源代码的分析处理与编译过程的前端处理相似,只是处理的复杂程度与产生的目标结果不同,因此可以采用编译技术对源代码进行处理。通过逆向建模可以弥补软件设计中缺少或缺失的模型设计文档,帮助代码阅读者更好地理解程序,帮助软件的测试和优化。介绍了对C/C++源代码进行逆向建模的实现。关键
2、词:源代码分析;软件建模;逆向建模中图法分类号:TP311文献标识码:A文章编号:1001-3695(2006)07-0052-03InverseModelingBasedonSourceCodeAnalysisPENGSi-wei,ZHUQun-xiong(CollegeofInformationScience&Technology,BeijingUniversityofChemicalTechnology,Beijing100029,China)Abstract:Inversemodelingtosourcecodesistheprocessofg
3、eneratingthesoftware’smodeldescriptionaccordingtothesoft-ware’ssourcecodes.Withtheanalysistothesourcecodes,inversemodelingprocesswillcollectobjects’informationandstructures’informationandsystemprocess’informationfromthesourcecodes,generatethemodeldescriptionsoftheprogramsuchasre
4、lationshipsbetweentheseobjects,structuredescriptions,andsystemprocessdescriptions.Analysingthesourcecodeintheinversemodelingprocessissimilartothecompilingprocess,butdifferentinthecomplexdegreeandthetargetresultsgenerated,sothecompilingtechnologycouldbeuseddirectlyintheinversemod
5、elingprocess.Inversemodelingcouldmakeupthedesigndocumentswhichismissinginthedesignprocess,couldhelpthereadertounderstandthecodesbetter,andcouldhelptoimplementthesoftware’stestingandoptimization.ThispaperintroducesanimplementationofinversemodelingbasedontheC/C++sourcecodes.Keywor
6、ds:SourceCodeAnalysis;SoftwareModeling;InverseModeling在许多开发工具中已经加入了逆向建模的工具,但所提供1引言的功能还比较有限,能够生成的模型文档也比较简陋。例如在Microsoft的VisualStudio开发工具中,可以通过逆向工程功能(1)逆向建模生成Visio格式的类模型文档,但文档中只包括了分别对各个应用建模方法对软件的设计需求、总体构架、内部结构等类的描述信息,没有更多关于类体系结构、对象体系结构等的进行描述已经成为软件设计过程中一种行之有效、并被广泛运[1~4]描述。如何通过逆向建模生
7、成更为详细、更深层次的模型文用的设计技术。软件的逆向建模过程与软件设计过程中档,还有待进一步的讨论和研究。的建模过程相反,是对已经存在的软件源代码进行分析,逆向(2)逆向建模的应用生成软件模型描述的过程。通过对源代码的自动分析和逆向建模可以获得代码中的人们习惯于把源代码视为软件设计中最主要的成果,但随各种信息,如源文件、模块、对象、变量的定义、各对象间的引用着软件工程理论的发展,人们逐渐意识到软件的设计模型描述关系、类的定义、类系的组织结构、系统的工作流程、模块的控能够比源代码更准确、更深刻和更清晰地反映软件的设计思想[5]制流程等。通过对分析得到的各
8、类信息进行组织和描述,可以和设计框架。然而,软件设计模型的描述文档并非总能与生成不同层次、不同