欢迎来到天天文库
浏览记录
ID:37710604
大小:19.17 KB
页数:4页
时间:2019-05-29
《java逆向工程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、几个开发工具的java逆向工程(javareverseengineering)功能比较最近正在接手Java维护项目iDrive,代码不多,大概在5~6K左右,但是里面的关系有点乱,于是想通过EA反向工程,从Java代码直接生成UML图,利于快速了解其代码结果。笔者在多年的软件开发过程中,阅读过不少成熟软件的源码,通过参考借鉴先进软件的设计理念,少走了很多弯路。多年的经验告诉我要想在软件架构设计上有快速进步,唯有站在巨人的肩膀上,逆向工程便是通向巨人肩膀的一条捷径。然而做过逆向工程的人都知道,要想对源码进行逆向工程,发掘设计者的设计理念和意图实
2、在是一件不容易的事情。但是,只要掌握了一定的方法和技巧,逆向工程也不是不可能的任务。本文重点针对java语言的逆向工程,并不完全适用于其他语言。逆向工程的基本方法和步骤:1.软件功能性试用。输入:用户手册(usermanual),功能列表(featurelist),软件的release版本。输出:用例(usecase)方法:软件试用。2.代码动态结构剖析,又叫功能流(flow)的剖析。目的:功能流的是软件的核心,它代表了软件实现该功能的方法,决定了软件的基本架构。输入:源代码,用例输出:活动图,顺序图。方法:可以用的手段有动态和静态两种。动态
3、手段包括设置断点(breakpoint),查看调用栈(callstack);静态手段包括通过集成开发环境(IDE)直接对函数调用进行跟踪,包括正向跟踪(直接查看被调函数)和反向跟踪(查找函数的调用者(reference)),或者使用UMLreverseengineering工具直接从代码逆向生成顺序图(sequencediagram)3.代码静态结构剖析,又叫模块结构剖析。目的:静态结构的主要作用是增强代码的复用性,可维护性和扩展性。通过分析代码的静态结构,我们可以得出代码的复用模式。输入:软件设计文档(designdocument),类似于
4、javadoc的代码结构文档,源代码。输出:模块结构图,类图。方法:通过UMLreverseengineering工具直接从代码生成类图(classdiagram)。通过观察代码的组织方式(目录结构)。1.eclipseeclipse是我最喜欢的java开发工具,优秀的人机交互界面给开发人员带来了不尽的便捷,丰富的插件让eclipse更易于扩展和定制。在源码逆向工程方面,它也提供了最简洁丰富的功能。针对源码的动态剖析,eclipse的JDT提供了函数直接跳转,调用树(callhierarchy),引用搜索(referencesearch),变
5、量的读操作搜索(readaccesssearch),变量的写操作搜索(writeaccesssearch),函数或变量的申明搜索(declarationsearch)。最重要的还有eclipse提供了功能强大的java集成调试环境。针对源码的静态剖析,JDT提供了,类型树(typehierarchy),接口实现搜索(implementorsearch).如果您想把这些信息用UML图表示出来,可以使用togethereclipse,它可以把源码和模型动态关联起来。并提供了丰富的UML逆向生成的功能。但是togethereclipse对PC配置要
6、求较高,在笔者的AMDsempron2200/512M/80G的配置下,勉强能够使用。如果要分析源码规模在百万行的项目,该软件对PC资源的消耗太大,个人并不推荐。eclipse已经提供了完整的逆向工程功能,虽然与UML的结合方面并不是很理想,但是笔者还是强烈推荐eclipse。原因很简单,将软件设计图形化的工作还是交给大脑直接做比较简单,我们最需要的功能是随时可以得到我们想要的源码信息。eclipse在这方面可以说已经是登峰造极。======================通过EA,从JAVA生成UML图主要的任务是把source包导入到EA
7、中,然后利用里面的反向工程自动生成UML图1首先先创建一个工程勾选出里面的class2然后在工程的任意一个文件夹上点击鼠标右键选中codeengineering然后选importsourcedirectory3然后就是进行一些必要的设置,比如选择语言uml都显示什么之类的我是按照package显示的4然后就可以开始了全部导入完成以后可以在projectbrowser里面找到这些UML图然后单击屏幕最下方的一个树形图一样的小图标,自动排布一下就可以了5package里面的类可以粘贴到任意的一个UML图中,如果和这个UML有联系,比如是这个pac
8、kage里面的类的一个子类的话,EA都会在粘帖完后自动的形成关系。================EA和eclipse连接方法本节向大家介绍一下Eclipse和UM
此文档下载收益归作者所有