使用Visio 2000逆向工程将代码转换为UML图表

From: http://www.sudu.cn/info/html/website/20080508/307109.html

摘要:Microsoft Visio 2000 Professional Edition 和 Enterprise Edition 包含通过逆向工程将 Microsoft Visual C++、Microsoft Visual Basic 和 Microsoft Visual J++ 代码转换为统一建模语言 (UML) 类图表模型的技术。本文将讨论从每种语言实施逆向工程的步骤。

  目录

  简介

  概述

  步骤 1:自定义开发环境

  步骤 2:打开代码项目以实施逆向工程

  步骤 3:选择“逆向工程”(Reverse Engineer) 按钮

  步骤 4:在 Visio UML 模型图表解决方案中创建您的 UML 图表

  简介

  Microsoft Visio 2000 Enterprise Edition 和 Professional Edition 都包含通过逆向工程将代码转换为 UML 静态结构图表的解决方案。该解决方案支持三种语言:Microsoft Visual C++ 6.0、Microsoft Visual Basic 6.0 和 Microsoft Visual J++ 6.0。Visio UML 模型图表解决方案所采用的 UML 标准为 1.2 版。

  每种语言使用的逆向工程技术各不相同。对于 J++ 和 Visual Basic,该解决方案使用开发环境的对象模型来收集静态结构信息。对于 C++,该解决方案将浏览信息文件 (.BSC) 用作结构信息的来源。虽然 Visual Basic 和 J++ 逆向工程都使用开发环境的对象模型,但 J++ 对象模型提供了更完整的信息,因此可得到更完整的逆向工程 UML 模型。C++ 中的浏览信息文件包含最少的信息;因此,它所生成的 UML 模型不如 J++ 和 Visual Basic 逆向工程得到的 UML 模型那么完整。

  本文将介绍通过逆向工程转换到 Visio UML 模型图表解决方案所需的步骤。

  注意:Visio UML 模型图表解决方案只支持 Microsoft Visual C++ 6.0、Microsoft Visual J++ 6.0 和 Microsoft Visual Basic 6.0 的逆向工程。要使用 Visio UML 外接程序,必须安装 Service Pack 3.0 for Microsoft? Visual Studio?。

  概述

  要通过逆向工程将您的代码转换到 Visio UML 模型图表解决方案,应执行以下主要步骤:

  自定义 Visual Studio 开发环境

  在 Visual Studio 中打开项目以实施逆向工程

  从“Visio UML 外接程序”(Visio UML Add-In) 工具栏中选择“逆向工程”(Reverse Engineer) 按钮

  在 Visio UML 模型图表解决方案中创建 UML 类图表

  本文的其余部分提供了每个步骤的详细指导,并包括特定于编程语言的信息。例如,在自定义开发环境部分,Visual C++、Visual Basic 和 Visual J++ 都有其相应的章节。

  步骤 1:自定义开发环境

  为了实施逆向工程,第一步应通过添加“Visio UML 外接程序”(Visio UML Add-In) 工具栏来自定义开发环境。以下指导显示了如何将该工具栏添加到 Visual C++、Visual Basic 和 Visual J++ 的不同环境中。

  自定义 Microsoft Visual C++ 6.0

  在 Visual C++ 中,选择 Tools 菜单上的 Customize。

  

  在 Customize 对话框中,选择 Add-ins and Macro Files 选项卡。

  在 Add-ins and Macro Files 列表中,选择外接程序和宏文件列表中的 Visio UML Add-in。确保旁边的复选框被选中,然后单击 Close。

  

  出现浮动的 Visio UML Add-in 工具栏,其中包含五个按钮。

  

  提示:如果希望该工具栏在每次打开 Microsoft Visual Studio 时都可用,可通过拖动将该工具栏靠接到工具栏区。

  自定义 Microsoft Visual Basic 6.0

  在 Visual Basic 中,从“外接程序”菜单中选择“外接程序管理器”。

  

  在“外接程序管理器”对话框中,选择“可用的外接程序”列表中的“Visio UML Add-in”。对于“加载行为”,选择“加载/卸载”和“在启动中加载”,然后单击“确定”。

  

  出现带有四个按钮的“Visio UML 外接程序”工具栏。

  

  提示:Visio UML 外接程序在创建工具栏时,还会向“工具”菜单中添加命令。您可以通过从“Visio UML 解决方案”中选择“工具”来找到这些命令。

  自定义 Microsoft Visual J++ 6.0

  在 Visual J++ 中,选择 Tools 菜单上的 Add-In Manager。

  

  在 Add-In Manager 对话框中,选择 Available Add-Ins 列表中的 Visio UML Solution。对于 Load Behavior,选中 Loaded/Unloaded 和 Load On Startup,然后单击 OK。

  

  出现带有四个按钮的 Visio UML Add-in 工具栏。

  

  提示:Visio UML Add-in 在创建工具栏时,还会向 Tools 菜单中添加命令。您可以通过从 Tools 菜单选择 Visio UML Solution 来找到这些命令。

  步骤 2:打开代码项目以实施逆向工程

  逆向工程过程从所有这三种语言的开发环境中开始。当通过添加“Visio UML 外接程序”(Visio UML Add-in) 自定义环境后,下一步是打开要实施逆向工程的项目。

  Visual C++ 6.0 的附加步骤

  对于 Visual C++,在开始逆向工程之前,还必须执行几个附加步骤。第一步是生成项目的浏览信息文件 (.BSC)。以下提供了生成浏览文件的指导。第二步是确定逆向工程中要包含的代码库。设置这些选项的指导将在浏览文件指导之后提供。最后,应在实施逆向工程之前构建项目。

  生成 Visual C++ 6.0 的浏览信息文件

  在 Visual C++ 中,选择 Project 菜单上的 Settings。

  

  在 Project Settings 对话框中选择所需构建配置的类型,单击 C/C++ 选项卡,然后选中 Generate browse info。

  

  单击 Browse Info 选项卡,指定浏览信息文件的名称和位置,选中 Build browse info file,然后单击 OK。

  

  选择 Visual C++ 6.0 逆向工程所包含的库

  单击 UML Add-in 工具栏上的 Visio UML Options 按钮,设置 Visual C++ 逆向工程所包含的库。

  

  此时显示 Visio UML Options 屏幕。如果希望在逆向工程中包含 MFC Classes、ATL Classes 或 Standard Include Files 的信息,只需选中所需选项旁边的复选框,然后单击 OK。

  

  步骤 3:从“Visio UML 外接程序”(Visio UML Add-In) 工具栏选择“逆向工程”(Reverse Engineer) 按钮

  

  逆向工程的下一步是从“UML 外接程序”(Visio UML Add-In) 工具栏选择“逆向工程”(Reverse Engineer) 按钮。

  对于 Visual Basic 和 Visual J++,此操作将在 Visio 2000 中打开 UML 模型图表解决方案,其中会显示通过逆向工程转换为模型的信息。此时 UML 模型图表解决方案打开,并在“UML 导航器”中显示一个空白的静态结构图表和一个树视图,其中包含从项目中收集的模型信息。

  对于 Visual C++,在 Visio 2000 打开并显示通过逆向工程转换到 UML 模型图表解决方案的项目信息之前,可能会显示另外两个屏幕。如果 Visual C++ 工作区中存在多个项目,可在 Select Project 对话框中选择要实施逆向工程的项目,然后单击 OK。

  如果项目层次结构中显示了多个浏览文件,可在“选择浏览文件”(Select Browse File) 对话框中选择一个浏览文件,然后单击“确定”(OK)。

  步骤 4:在 Visio UML 模型图表解决方案中创建您的 UML 图表

  现在,Visio 2000 应该显示您的项目信息。要创建 UML 类图表,请将模型元素从“UML 导航器”(UML Navigator) 拖放到“静态结构”(Static Structure) 图表上。类关系(泛化、实现、绑定)将会自动显示。利用 Visio UML 模型图表解决方案,您可以生成其他 UML 工件,以指定、构造软件项目并使软件项目形象化和文档化。

  


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/404737.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

POJ1177 Picture 线段树+离散化+扫描线

求最终的覆盖图形周长&#xff0c;写这种代码应该短而精确&#xff0c;差的比较远 /* Problem: 1177 User: 96655 Memory: 348K Time: 32MS Language: C Result: Accepted */ #include<iostream> #include<stdio.h> #include<stdlib.h>…

DA模拟量控制外接600V高压直流源-设计分析

一、STM32 12位AD DA线性度测试 配置STM32 DA为12bit输出&#xff0c;AD为12bit检测&#xff0c;测试AD和DA的线性度与误差。DAC从0到2.49V步进1mV。ErrorDAC 为标准值减去 ADC的测量值。 板子的Vref2.5V&#xff0c;ADC和DAC的极限为2.5V&#xff0c;测试时直接用杜邦线连接…

使用 rose 将 c++代码转换为 uml 类图

From: http://www.cppblog.com/prayer/archive/2009/12/24/103954.html 阅读本文章&#xff0c;你需要对 uml 有简单的了解&#xff0c;懂得以下术语&#xff1a; 类图( class diagram ) 即 c 中的 class 。 聚合( Aggregation ) 即我们c中的引用。表现为 class 头文件中的…

android中的AIDL进程间通信

关于IPC应该不用多介绍了&#xff0c;Android系统中的进程之间不能共享内存&#xff0c;那么如果两个不同的应用程序之间需要通讯怎么办呢&#xff1f;比如公司的一个项目要更新&#xff0c;产品的需求是依附于当前项目开发一个插件&#xff0c;但是呢这个插件功能以及界面比较…

某测试仪控制系统的设计方案--ARM+FPGA+NIOS

一、系统要求 控制功能&#xff1a;600V直流电源模块控制63dB程控衰减器触摸屏高频毫伏表示波器USB存储FAR计数整形阈值调节。 功能要求&#xff1a; 检测高压电源的Vref控制高压电源的Vset控制光脉冲幅度控制阈值计数幅度存储测量数据触摸屏通信示波器通信高频毫伏表通信光…

QT实现图像处理-傅立叶变换、傅立叶反变换、平滑、锐化与模板匹配

From: http://www.cnblogs.com/qytan36/archive/2010/04/04/1704226.html 实验环境&#xff1a; 1&#xff0c;Linux操作系统 2&#xff0c;QT3编程开发环境 3&#xff0c;C编程语言 傅立叶变换和傅立叶反变换 1.1. 主要源代码 readImage() 从图像中读取数据 writeImage() 往图…

Java finally语句到底是在return之前还是之后执行?

网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行&#xff1f;很多人都说不是&#xff0c;当然他们的回答是正确的&#xff0c;经过我试验&#xff0c;至少有两种情况下finally语句是不会被执行的&#xff1a; &#xff08;1&…

TLV5618 双路12位DAC 模拟SPI驱动

一、TLV65618芯片 TLV5618A 带掉电功能 2.7V-5.5V&#xff0c;低功耗双路 12 位数模转换器 特点 ●双路 12 位电压输出 DAC ●可编程调节转换时间 - 快速模式 3μs - 低速模式 10μs ●兼容 TMS320 和 SPI 串行接口 16位串行接口包含4位控制和12位数据。 二、驱动代码 采用模…

python对json的相关操作

From: http://www.cnblogs.com/coser/archive/2011/12/14/2287739.html 什么是json&#xff1a; JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3r…

UIbutton

第一、UIButton的定义 UIButton *button[[UIButton buttonWithType:(UIButtonType); 能够定义的button类型有以下6种&#xff0c; typedef enum { UIButtonTypeCustom 0, 自定义风格 UIButtonTypeRoundedRect, 圆角矩形 UIButtonTypeDetailDisclosure, 蓝色小箭头按钮&#xf…

MAX535 单路13位DAC 模拟SPI驱动

一、MAX535 max535是低功耗、13位、电压输出DAC&#xff0c;采用串行接口和MAX封装。MAX535通过单个5V/3.3V电源工作&#xff0c;仅需要280A电流工作。 MAX535/MAX5351适用于广泛的应用&#xff0c;包括工业过程控制。其他功能包括软件关机和开机复位。 DAC寄存器可以独立更…

云服务器开启TCP Server 客户端无法连接的解决方法

一、问题描述 华为云服务器运行TCPServer后&#xff0c;等待客户端连接&#xff0c;客户端一直无法连接到服务器。经过测试&#xff0c;客户端可以ping通服务器的地址。 客户端网络防火墙已经完全放开。 二、解决办法 1、查看云服务器端的安全组&#xff0c;是否放开该端口。…

STM32CubeMx HAL库使用硬件IIC读写AT24C02

介绍使用硬件IIC接口读写AT24C02&#xff0c;STM32自带硬件IIC&#xff0c;比较好用&#xff0c;没必要千篇一律的使用模拟IIC。作为一个IIC的使用例子&#xff0c;可以适当修改用于其他IIC接口设备通信控制。 一、测试环境 STM32F407CubeMx&#xff08;6.1.1&#xff09;MDK…

第十篇 PO核心功能及流程详解

详见链接&#xff1a;http://bbs.erp100.com/thread-272866-1-1.html1. P2P lifecycleP2P是procure to pay的缩写&#xff0c;p2p循环值得就是采购到付款的周而复始&#xff0c;循环往复的过程。主要包含六个大的环节&#xff0c;需求&#xff08;demand&#xff09;&#xff0…

STM32F407 CubeMx使用定时器测量信号频率 分辨率0.001Hz

一、需求 使用STM32F407 测量外部输入方波信号的周期&#xff0c;信号变化范围&#xff1a;45HZ~55HZ&#xff0c;测量分辨率0.001HZ。 二、配置 stm32Cubemx&#xff1a;version 6.1.1HAL库&#xff1a;1.25.2MDK&#xff1a;5.34C Compiler&#xff1a;ARMCC 6.16 三、分…

中移M5310A NBIoT模组通信测试命令

总结一下中移M5310A NBIoT模组的常用测试命令&#xff0c;这个命令是个脚本&#xff0c;可以编辑&#xff0c;在自己开发的串口软件上可用&#xff0c;有需要的请留言。 脚本是.ini格式的文件&#xff0c;可以直接编辑文件然后加载到脚本区。字段用\t分割。 [General] msg0don…

11月中30个精心设计的网站案例精选

如果你开始设计一个网站&#xff0c;首先你需要在你的头脑构思的是如何使网站有丰富的视觉感应和排版。现在每天的网络竞争太激烈&#xff0c;如果你的网站设计的一般般&#xff0c;恐怕很难把访问者的目光定睛在你的网站上。因此网站有美丽和创意设计的不仅能吸引游客&#xf…

Qt定时器的精度问题

一、场景 一个网络音频采集场景如下&#xff1a; 数据发送端&#xff1a;嵌入式设备按照16kHz 16Bit连续不断采集音频数据&#xff0c;通过Socket进行发送 数据接受端&#xff1a;QT上位机开一个tcpserver&#xff0c;数据readReady后由QByteArray进行追加&#xff0c;音频波…

iperf 测试局域网速度

介绍 iperf使用cs架构&#xff0c;启用一台设备作为server&#xff0c;另一台设备作为client&#xff0c;测试server和lclient的网络速度。 linux 安装 sudo apt install iperf 使用方法 &#xff08;1&#xff09;服务器端 iperf -s 启用tcp连接&#xff0c;默认监控端口…

NHibernate初学者指南(6):映射模型到数据库之方式二

使用Fluent NHibernate自动映射 使用Fluent NHibernate自动映射&#xff0c;首先要将映射的实体放到一个命名空间中&#xff0c;这使得通知AutoMapper哪些实体和值对象包含在映射中更容易。建议在你的项目中创建一个Domain文件夹&#xff0c;将需要映射的实体和值对象放到这个文…