网上的关于从C++代码到UML类图生成过程的东西很多,找了个能用的,如今转下,以备不时之需。数据结构
转来稍微调整了下内容,只关心使用。工具
原出处http://siulyn.blog.163.com/blog/static/6245583620087252539344开发工具
Rational Rose 2003 逆向工程生成UML模型图spa
这一节主要介绍用户如何使用Rose的逆向工程生成UML模型,并用来进行C++代码的结构分析。设计
Rational Rose能够支持标准C++和Visual C++的模型到代码的转换以及逆向工程。下面将详细地说明这两种C++ project的逆向工程的步骤和具体操做。component
使用标准C++逆向工程,须要在组件图(component view)中建立一个组件(component),设置好须要进行转换的组件的信息,也就是该组件的语言、所包含的文件、文件所在的路径、文件后缀等等信息,而后Reverse Engineer就能够根据给定的信息将代码转换成类图了。orm
(一) 右键点击组件视图(Component View),选择New->Component,建立一个新的组件对象
(二) 将component的language属性设定为ANSI C++blog
a) 选中建立的component,点击右键,选中Open Specificationci
b) 在这个对话框中将该component的language设定为ANSI C++
(三) 配置该ANSI C++ component,设置好该component中包含的C++代码文件,并进行C++语言的详细设置
a) 选中该component,点击右键,选择ANSI C++->Open ANSI C++ Specification
b) 把Source file root directory设定为你的C++源码文件所在的路径,Reverse engineering root package 中输入转换后的工程的名称,默认为C++ Reverse Engineered,Reverse engineer directories as packages 选项将以文件夹的形式在Rose 的Logical View中生成与源文件相同的文档结构。点击Add Files将须要转换的文件添加到Project Files中,视你的须要来作其它的设定,好比:头文件扩展名等等。
(四) 将设置好的component转换成模型图
a) 选中设置好的component,点击右键,选中ANSI C++->Reverse Engineer
b) 选中须要转换的class,点击ok,一个component的逆向转换就完成了。
c) 逆向转换完成后,将在Rose主界面的Logical View下显示逆向转化后的代码。
(五) 获得逆向工程的模型图
a) 新建一个Class Diagram,并命名。
b) 双击此Diagram打开,选择Query->Add Classes。
c) 在Package下拉列表选择包含类的文件夹,点击OK。选择All >> 添加。
d) 重复一样的操做直到全部需转换成UML模型的类都已经添加完毕。最后在Class Diagram视图中显示全部生成的UML模型图及其它们之间的联系。
(六) 排列视图
通常来讲,一个系统中所涉及的数据元素很是多,致使视图很拥挤,排版也很是困难。Rational Rose提供的自动排版功能能够很方便地帮助用户解决这个问题。
选择Format->Layout Diagram,系统会将图中的全部元素用最优方式从新排列,给用户一个清晰的视图。
2 Visual C++逆向工程(Reverse Engineer)
Visual C++ 在使用这个功能的时候,要求用户的机器上同时安装Visual Studio。Visual C++的逆向工程也须要首先建立一个component,并将该component的language属性设置为VC++。Rational Rose对VC++模型的转换是经过读取VC++ Project File的信息来实现的,用户只须要将对应的project file信息指定给component就能够了。其他操做与“ANSI C++(标准C++)逆向工程”基本雷同。
(一) 将VC++ Project的信息赋给刚刚建立好的component。
a) 选择该component,点击右键,选择Assign To Project
b) 在对话框中找到刚刚建立的component,右键点击并选择Properties。
c) 在下面对话框中选中须要进行转换的Project,点击ok,该component就与须要转换的project关联上了。
(二) 将设置好的component转换成模型图
选中设置好的component,点击右键,Update Model…,将会弹出确认对话框,选中须要转换的class,点击finish就能够了。
注释
①IBM Rational Software Architect是一个集成式设计和开发工具,使用户能够用UML模型驱动的开发方式开发出结构清晰的应用程序和服务。
②IBM Rational Software Modeler是基于UML2.0的可定制的可视化建模和设计工具,遵循它所提供的工做流程,可使得系统设计师,系统分析师,设计人员等写出更为清晰的文档,更为有效地进行沟通和设计工做。
③UML提供的各类类型的模型描述图
用例图(Use Case Diagram):描述系统提供的一个功能单元,主要目的是帮助开发团队以一种可视化的方式理解系统的功能需求,包括基于基本流程的"角色"(actors,也就是与系统交互的其余实体)关系,以及系统内用例之间的关系。
序列图(Sequence Diagram):显示具体用例(或者是用例的一部分)的详细流程。
状态图(Statechart Diagram):表示某个类所处的不一样状态和该类的状态转换信息。
活动图(Activity Diagram):表示在处理某个活动时,两个或者更多类对象之间的过程控制流。
类图(Class Diagram):表示不一样的实体(人、事物和数据)如何彼此相关;换句话说,它显示了系统的静态结构。
组件图(Component Diagram):提供系统的物理视图。组件(Component)表示模型代码库、执行库和其它组件的信息。组件是代码的实际模块,组件图主要用户是负责控制代码和编译部署应用程序的人。有些组件是代码库,有些组件是运行组件,如执行文件或动态连接库(DLL)文件。)
部署图(Deployment View):表示该软件系统如何部署到硬件环境中。
数据模型图(Data Model Diagram):描述关系数据结构。