简介:这份资源是一份面向软件开发者、系统分析师与项目经理的 Rational Rose 安装指导文档,聚焦 IBM Rational Rose 这款支持 UML 的建模工具在 Windows 环境下的部署与首次配置,适合刚接触 UML 建模、需要在课程设计或项目实践中搭建建模环境的学习者参考。资源包内共 1 个 docx 文档,体积约 16KB,篇幅精简,便于快速通读与随查随用。内容围绕获取安装文件、运行安装向导、接受许可协议、选择安装类型、设置安装路径、完成安装与许可证密钥配置、启动后的工作空间与项目模板设置等环节展开,并补充了许可证异常、软件兼容性、功能操作不熟悉等常见问题的排查方向与官方文档、社区论坛、教程视频等求助渠道。目前已有 1260 人学习,适合作为建模工具入门阶段的环境搭建速查材料。
1. 装一个建模工具,为什么有人能卡三天
上周有人问我,Rational Rose 安装到底难在哪——一个点完“下一步”就结束的向导,为什么会卡住三天。真正的答案都在装完之后:默认路径装进 Program Files,在 Win11 上双击图标转两圈就消失;许可变量没配,启动直接弹框退出;好不容易进了主界面,打开课程资源里那批 .mdl 又提示版本不兼容。这些都不是向导会告诉你的。这篇把 Rational Rose 安装拆成三段:装之前确认什么,向导里哪三个界面不能一直点“下一步”,装完用什么最小模型验证它确实能用。适合正在做软件建模课程设计、要交类图和用例图、或者接手了一批老 .mdl 模型文件的人。
2. 装之前先看清工具链:主程序、许可组件与版本适配
2.1 把安装包拆开看:五个目录决定后面会不会返工
拿到手的安装介质通常是一个 ISO 或一个自解压 exe。很多人直接双击就完事,我一般先把镜像挂载起来,把根目录浏览一遍再动手。不是为了仪式感,是因为这套工具链的插件和许可组件放在独立目录里,装的时候勾不勾、装完再补装会不会冲突,全看你有没有提前看清结构。典型的安装介质目录结构大致是下面这样:
| 目录/文件 | 作用 | 装之前要不要关注 |
|---|---|---|
setup.exe | 主安装入口,调用打包器解压并启动向导 | 必须,注意右键以管理员运行 |
Disk1~DiskN | 分包数据,老式多盘安装格式 | 介质不完整时向导会中途报错 |
addins | 正向工程/逆向工程插件(Java、C++、数据库) | 要生成代码就必须勾选 |
samples | 示例模型,含类图、用例图、序列图样例 | 强烈建议装,用于验证 |
license/flexlm | 许可管理组件与许可文件模板 | 决定首次启动能不能进主界面 |
重点看addins和license这两个目录。前者决定你装完之后能不能从模型生成代码骨架,很多人装完发现“正向工程”菜单是灰的,就是因为标准安装没带上插件;后者决定首次启动时走单机许可还是内网许可服务,选错了后面要卸载重来。samples目录别嫌占地方,它是你验证安装是否完整的唯一免费素材,比自建模型可靠得多。
有个细节值得提前确认:介质里的样例模型是低版本保存的。高版本打开低版本 .mdl 一般没问题,反过来会直接拒绝。如果你手上的课程资源里混着不同年份的 .mdl,先按文件修改时间排个序,用最老的那个去试打开,能开就说明向下兼容链路是通的。
2.2 版本选型:2003 还是 2007,Win10/Win11 到底能不能跑
这套工具的两个常见版本是 2003 和 2007,都是 32 位程序,界面用的还是上世纪的窗口风格。在 Win10/Win11 上跑不是不行,但要接受几个前提:安装包本身是老式打包器做的,可能被 SmartScreen 拦一道;主程序对高 DPI 不友好,4K 屏上不加兼容性设置会糊成一片;程序退出时偶尔不释放进程,任务管理器里留着残影。
选型上的实际判断标准不是“哪个新”,而是“你的交付物用哪个打开”。课程设计一般指定 2007,因为它的 XMI 导出更规范,跟其他建模工具交换时字段丢得少;如果导师给的模板是 2003 存的,那就装 2003,别硬上高版本再另存,另存会丢掉一部分图形布局信息,回来对不上图。两个版本不建议共存于同一台机器,注册表里的许可键会互相覆盖,症状是“明明配了许可,另一个版本却报未授权”。
兼容性设置这一步我一般装完立刻做,不等出问题再补:
- 右键主程序 exe → 属性 → 兼容性 → 勾选“以兼容模式运行这个程序”,选 Windows 7
- 同一面板勾选“以管理员身份运行此程序”,避免写配置时被 UAC 拦
- 勾选“替代高 DPI 缩放行为”,缩放执行选“系统”,解决模糊和控件错位
这三项不是玄学,是 32 位老程序在新系统上的常规补丁。做完之后双击图标能稳定进主界面,再往下做许可配置才有意义。
2.3 装前三分钟的机器自检
正式跑向导之前,花三分钟做一次自检,能省掉后面 80% 的返工。下面这段 PowerShell 检查系统版本、是否管理员、目标盘空间、路径合法性和关键运行库,直接存成check-env.ps1跑就行。
# check-env.ps1 —— Rational Rose 安装前环境自检 $ErrorActionPreference = 'Stop' # 1) 系统版本与架构:确认是 64 位系统(32 位程序可运行) $os = Get-CimInstance Win32_OperatingSystem $arch = $env:PROCESSOR_ARCHITECTURE Write-Host ("OS: {0} Build {1} / Arch: {2}" -f $os.Caption, $os.BuildNumber, $arch) # 2) 必须管理员身份运行,否则写注册表和 Program Files 都会被拦 $isAdmin = ([Security.Principal.WindowsPrincipal] ` [Security.Principal.WindowsIdentity]::GetCurrent() ).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) Write-Host ("IsAdmin: {0}" -f $isAdmin) # 3) 目标盘剩余空间:主程序 + 示例模型 + 后续模型文件,预留 3 GB 比较稳 $freeGB = (Get-PSDrive -Name D).Free / 1GB Write-Host ("D: Free(GB): {0:N1}" -f $freeGB) # 4) 路径合法性:中文、空格、括号都会让老安装器解包失败 $target = 'D:\Rational\Rose2007' if ($target -match '[\u4e00-\u9fa5\s()]') { Write-Warning "目标路径含中文/空格/括号,建议改成纯英文短路径" } # 5) 关键运行库盘点:老程序依赖 VC++ 运行库,缺了会在启动时静默退出 Get-ChildItem 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall', 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall' ` -ErrorAction SilentlyContinue | ForEach-Object { (Get-ItemProperty $_.PSPath -ErrorAction SilentlyContinue).DisplayName } | Where-Object { $_ -like '*Visual C++*Redistributable*' } | Sort-Object -Unique逐段说明一下。第 1 段只读系统信息,不改任何东西;第 2 段判断当前 shell 是不是管理员,返回False就别往下装了,先把 PowerShell 提权重开。第 3 段查 D 盘余量,这里有个容易忽略的点:这套工具生成的 .mdl 会随图形增多而膨胀,一个几十张图的课程设计模型到后期能到几十 MB,加上自动备份,预留 3 GB 不算多。
第 4 段的正则是最值得记住的一条。老式打包器在解包时对路径里的双字节字符和空格处理很差,装到D:\我的课程\Rose下面,症状往往是装到一半弹“无法写入文件”,或者装完主程序起不来。纯英文、无空格、层级不超过三层,是最省事的做法。
第 5 段列出已装的 VC++ 运行库。这一步的意义在于缩小排查面:如果启动时进程一闪而过、事件查看器里只有一条应用程序错误,多半就是运行库缺失或者版本不对,先补齐再谈其他。自检全部通过再插介质,后面的步骤才有确定性。
3. 走一遍安装向导:六个界面里真正要动脑的三处
3.1 向导界面逐项对照
向导一共六七个界面,大部分是“下一步”,但有三处选错了要卸载重来。下面这张表是我按实际界面顺序整理的对照,右边两列是可以直接抄的决策。
| 界面 | 你要做的决定 | 我的建议 | 理由 |
|---|---|---|---|
| 欢迎页 | 无 | 直接下一步 | 注意此时别勾选“快速安装”类选项 |
| 许可协议 | 接受/拒绝 | 接受 | 不接受无法继续,没有绕过路径 |
| 安装类型 | 标准 / 最小 / 自定义 | 自定义 | 标准安装常常不带代码工程插件 |
| 组件选择 | 主程序 / 插件 / 示例 / 文档 | 主程序+插件+示例 | 文档可不装,示例必须装 |
| 安装路径 | 默认或自定义 | 自定义纯英文短路径 | 见 3.2 节,这条最容易翻车 |
| 程序文件夹 | 开始菜单名称 | 保持默认 | 改了不影响功能,只影响自己找 |
| 许可配置 | 稍后配置 / 现在输入 | 现在配置 | 首启再配容易和试用期冲突 |
“安装类型”这一项最值得停下来想两秒。最小安装只装核心建模器,看着清爽,但你后面想在类图上右键生成 Java 骨架时会发现菜单是灰的,得重新跑一遍安装程序补装插件,而补装过程会覆盖掉你已经改过的配置文件。自定义安装多花三十秒勾几个框,比事后返工划算。
“组件选择”里的示例模型也别跳过。它不只是学习素材,更是安装完整性的探针:装完能顺利打开自带样例并正常渲染所有图形,说明主程序、图形库、字体资源这一整条链路是通的;打不开样例,基本可以断定是路径或权限问题,早发现早处理。
3.2 安装路径与权限:为什么我把默认的 Program Files 改掉了
默认路径是系统盘的Program Files目录。这个默认值在老程序上会引出一串麻烦:主程序启动时要往自己的安装目录写 ini 配置和临时缓存,而Program Files受 UAC 保护,标准用户写入会被重定向到虚拟存储区,表现就是“设置改了,重启又变回去”;更麻烦的是模型文件默认保存位置也在这棵树下,团队共享时路径里带空格,别人机器上解不开。
我一般统一装到D:\Rational\Rose2007这种短路径,装完立刻把目录权限显式授给当前用户,避免后面写配置时被拦。这段可以在向导跑完之后执行:
# 建立安装根目录并授予当前用户完全控制,避免首启写 ini 时被 UAC 拦 $root = 'D:\Rational\Rose2007' New-Item -ItemType Directory -Path $root -Force | Out-Null $acl = Get-Acl $root $rule = New-Object System.Security.AccessControl.FileSystemAccessRule( "$env:USERDOMAIN\$env:USERNAME", 'FullControl', 'ContainerInherit,ObjectInherit', 'None', 'Allow') $acl.SetAccessRule($rule) Set-Acl -Path $root -AclObject $acl # 复核:确认规则已生效 (Get-Acl $root).Access | Where-Object { $_.IdentityReference -like "*$env:USERNAME" } | Select-Object IdentityReference, FileSystemRights代码里ContainerInherit,ObjectInherit这两个继承标志是关键,它保证后续在目录下新建的子文件夹和模型文件自动继承权限,不用一个个设。FullControl听起来给多了,但在单机开发机上这是最省事的选择;如果是多人共用的机器,把它降成Modify就够,避免误删别人的模型。
跑完这段,还可以顺手把 Windows 的“缩短文件名生成”关掉,避免超长路径问题——模型文件里带长类名时,系统生成的 8.3 短名会和实际文件名对不上,导出时报找不到文件,属于典型的老程序血泪经验。
3.3 许可配置:单机 key、许可文件与内网许可服务
许可这一关是新手翻车最集中的地方。三种形态要分清:单机 key(一串字符,首次启动时粘贴)、许可文件(一个 .lic 或 .dat,指向本地路径)、内网许可服务(指向一台服务器的端口)。选哪种取决于你拿到的授权形态,不是随便挑的。
环境变量是最通用的落地方式,因为程序启动时会优先读它,比在界面里手填稳。单机许可文件这样配:
# 方式一:指向本地许可文件(路径必须无空格) [Environment]::SetEnvironmentVariable( 'LM_LICENSE_FILE', 'D:\Rational\license\rose.lic', 'Machine') # 方式二:指向内网许可服务的固定端口(27000 是这类许可管理器的默认端口) # [Environment]::SetEnvironmentVariable('LM_LICENSE_FILE', '27000@license-server', 'Machine') # 验证:Machine 级别写入后,当前会话不会自动刷新,需要读回来确认 [Environment]::GetEnvironmentVariable('LM_LICENSE_FILE', 'Machine')参数上有几个点要盯住。第二个参数写Machine而不是User,是因为这套工具在启动早期读的是系统级变量,写在用户级下有时读不到,尤其在以管理员身份运行的时候,用户环境块会被替换。端口号 27000 是这类许可管理器的惯用默认值,实际用哪个要问给你授权的人,别自己猜。
配完之后必须新开一个终端再验证,当前 PowerShell 会话不会自动继承新写入的系统变量,这是最常见的“明明配了却没生效”的假象。另外,如果之前装过同系列的其他工具,LM_LICENSE_FILE里可能已经有一个值了,直接覆盖会把旧工具弄挂;稳妥做法是用分号拼接:
# 保留已有值,把新许可追加进去(Windows 下多个许可路径用分号分隔) $old = [Environment]::GetEnvironmentVariable('LM_LICENSE_FILE', 'Machine') $new = if ([string]::IsNullOrWhiteSpace($old)) { 'D:\Rational\license\rose.lic' } else { "$old;D:\Rational\license\rose.lic" } [Environment]::SetEnvironmentVariable('LM_LICENSE_FILE', $new, 'Machine') Write-Host "写入结果: $new"3.4 首次启动:工作空间、模板与显示设置
第一次启动会引导你设工作空间(workspace)和默认模板。工作空间建议单独建目录,别和安装目录混在一起,模型文件、备份、导出的 XMI 都放里面,后面迁移和打包提交都方便。
启动后先把显示调顺。老程序在高分屏上默认字体发虚、图形框线断断续续,通过兼容性设置里的 DPI 替代能改善一部分;如果图形还是错位,把系统缩放临时调到 100% 做一次建模,确认不是程序本身的问题,再调回去。这一步做完,立刻做一次配置基线备份,后面任何设置出问题都能一键回到可用状态:
# 首启调好设置后,立刻备份一次配置基线 $stamp = Get-Date -Format 'yyyyMMdd-HHmm' $backup = "D:\Rational\backup\$stamp" New-Item -ItemType Directory -Path $backup -Force | Out-Null # 用户目录下的 ini 配置文件 Copy-Item "$env:USERPROFILE\*.ini" $backup -ErrorAction SilentlyContinue # 注册表配置分支(导出为 .reg,可双击还原) reg export "HKCU\Software\Rational Software" "$backup\rose-hkcu.reg" /y Get-ChildItem $backup | Select-Object Name, Lengthreg export这条比很多人想的更有用。这套工具的工具栏布局、最近打开列表、插件启用状态都写在注册表里,误点了“重置工具栏”或者插件加载失败,用这个 .reg 双击导回去就恢复了,比重装快得多。备份目录里我一般只留最近三次,老的删掉,避免越滚越大。
4. 装完先别急着画大图:用最小模型验证安装是否真的可用
4.1 十五分钟建一个能跑通全链路的小模型
装完不验证,等于把问题攒到交图前一晚。我的做法是建一个最小模型,包含两张图、三个类、一条关系,够短,但能触达建模器、图形库、代码工程插件三条链路。
具体步骤:
- 新建模型,选默认模板,保存到工作空间下的
smoke-test.mdl - 建一张用例图,放两个参与者、三个用例,画两条关联
- 建一张类图,放三个类,其中一个类带两个属性、一个方法,画一条关联和一条泛化
- 保存、关闭、重新打开,确认图形布局不跑位
第 4 步是整段的关键。老程序在某些显卡驱动下保存时会丢掉图形的坐标偏移,重开后所有元素挤在左上角。这个现象一旦出现,说明图形渲染层和当前驱动不兼容,后面画几十张图会反复遇到,越早发现越好处理——临时方案是关掉硬件加速或换一个显示模式再试。
另外,这一步顺手确认一下字体。如果中文注释显示成方块,是缺少对应字形,不影响功能但影响交图。把类名和注释都写成中英混排,一次就能试出来。
4.2 正向工程:从类图生成 Java 骨架,验插件链
类图画好之后,右键目标类,找代码生成入口,选 Java,指定输出目录。生成的骨架大致长这样:
// Rational Rose 正向工程生成的类骨架(示意,实际缩进和注释风格随模板配置) public class Order { private String orderId; // 对应模型里的 orderId: String private double amount; // 对应模型里的 amount: double public String getOrderId() { return orderId; } public void setOrderId(String orderId) { this.orderId = orderId; } public double getAmount() { return amount; } public void setAmount(double amount) { this.amount = amount; } }看生成的代码要确认三件事:属性类型有没有按模型里的类型映射(String 对 String,double 对 double,别全变成 Object);方法名是不是按你设的命名规范来的(驼峰还是下划线,取决于模板配置);文件是不是落在你指定的输出目录而不是安装目录。第三点尤其容易出问题,输出目录留空时程序会往自己的安装目录写,而那个目录如果没有写权限,表现是“点了生成,什么也没发生”,连报错都没有。
生成成功说明插件链是通的。如果菜单是灰的,回到 3.1 节的组件选择,补装代码工程插件;如果点了没反应,先查输出目录权限,再查安装路径是否含空格。
4.3 逆向工程与 XMI 导出:验证模型文件不是孤岛
正向跑通之后反向来一遍:拿一个现成的 Java 源文件(就上面生成的那个),走逆向工程导入成类图,看能不能正确识别字段和方法。这一步验证的是解析器,很多人只用正向,等到需要从别人代码里反推设计时才现学,那时候出问题就来不及了。
再往下是 XMI 导出。选 XMI 格式导出模型,导出后用一个文本编辑器打开,检查三样东西:类的数量对不对、关联关系有没有保留、中文名称有没有变成乱码。XMI 是这套工具跟其他建模工具交换数据的唯一可靠通道,导出正常,说明你的模型不是孤岛,后面交给别人或者存档都不会丢信息。
到这里,一个完整的验证闭环就走完了:能建、能存、能重开、能生成代码、能反向解析、能导出交换格式。六项全过,这套安装才算真的可用。
5. 安装与首启的五个高频翻车点:现象、原因与解法
5.1 装的过程中翻车
现象一:向导跑到一半弹“无法写入文件”,进度条卡在解包阶段。原因基本是路径问题。安装器在解包时用的是老式文件 API,目标路径含中文、空格或括号时截断出错。另一种可能是介质本身不完整,分包数据缺了一块。解法是先换成纯英文短路径重装,比如D:\Rational\Rose2007;换路径还报同样的错,就去核对介质大小和分卷数量,缺包只能重新取一份完整介质。装之前跑一遍 2.3 节的路径正则检查,能把这类问题挡在前面。
现象二:装完在开始菜单找不到入口,或者点了图标提示“找不到指定模块”。多半是安装过程被 UAC 中途拦了一次,文件只写了一半,主程序 exe 在但依赖的 DLL 没落地。解法是先确认安装目录下的可执行文件是否完整,再以管理员身份重跑一遍安装程序,选修复或覆盖安装。如果反复出现,检查杀毒软件的实时防护日志,老式安装器解包大量小文件的行为很容易被误判拦截。
现象三:装完能进主界面,但“正向工程”相关菜单全是灰的。这是组件没装全,标准安装默认不带代码工程插件。解法是重跑安装介质,走自定义安装,把插件目录勾上。注意补装时如果覆盖了已有的配置文件,之前调的显示设置会复位,所以补装前用 3.4 节的备份脚本存一份,装完导回去。
5.2 启动与许可证阶段翻车
现象四:双击图标,鼠标转两圈,进程消失,没有任何提示。这是最典型的静默退出,排查顺序是固定的:先看事件查看器里的应用程序错误,确认是缺运行库还是显卡相关问题;再确认兼容性设置里的“以管理员身份运行”有没有勾上;最后用 2.3 节的脚本扫一遍 VC++ 运行库。三步走完基本能定位。如果事件日志只显示一个模块地址,用兼容模式降到 Windows 7 再试,成功率不低。
现象五:启动弹许可错误,提示找不到许可或已过期。原因有四种:环境变量写在了用户级而不是系统级;写了但当前会话没刷新,看起来没生效;许可文件路径里带了空格;用了网络许可但本机到许可服务的端口不通。解法是逐条排除——用[Environment]::GetEnvironmentVariable('LM_LICENSE_FILE','Machine')读回确认写入位置,新开终端验证是否刷新,检查路径有无空格,最后确认端口连通性。还有一个隐蔽的:之前装过同系列工具,环境变量里已经有旧值,新值直接覆盖导致两边都失效,用 3.3 节的拼接写法可以避免。
提示:许可问题排查时,先把所有改动回退到“只有一条正确路径”的状态,再逐项加回来。多个变量叠加的状态下,报错信息往往指向错误的位置。
6. 把 .mdl 管起来:版本快照、XMI 备份与交接的三条硬规矩
安装只是起点,真正会疼的是模型文件的管理。.mdl 是二进制容器,放进版本库既不能 diff 也不能合并,两个人同时改同一个文件,冲突时只能二选一。我在一个多人协作的课程设计上吃过这个亏:两个人分别补了用例图和类图,合并时发现谁也没法保留对方的修改,最后手工重画了一遍。
从那以后我定了几条规矩。第一条是“文件按人分,不按图分”:一个模型只归一个人维护,其他人要看就导 XMI 出去看,需要改就提意见由维护者统一改。第二条是“每天收工做一次带日期快照”,脚本很简单,但能保证任何时候都能回到昨天的状态:
# 每天收工快照:按日期保留历史版本,只留最近 14 天 $src = 'D:\Rational\workspace\course-design.mdl' $dst = 'D:\Rational\snapshot' New-Item -ItemType Directory -Path $dst -Force | Out-Null $target = Join-Path $dst ("course-design-{0}.mdl" -f (Get-Date -Format 'yyyyMMdd')) Copy-Item $src $target -Force Write-Host "快照已生成: $target" # 清理 14 天前的快照,避免目录无限膨胀 Get-ChildItem $dst -Filter 'course-design-*.mdl' | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-14) } | Remove-Item -Force脚本里-Force是覆盖写,同一天跑两次不会生成重复文件;清理那段的-14可以按课程周期调整,两周的课设留 14 天够用,跨学期的项目建议留 30 天。第三条规矩是“关键节点导一次 XMI”:答辩前、交给导师前、和别人的模型合并前,都导一份 XMI 存档。XMI 是文本格式,能进版本库、能 diff、也不会因为软件版本升级而打不开,相当于给自己留了个后悔药。
交接给别人时,我给的不只是一个 .mdl,而是一个目录:model/放当天的 .mdl,xmi/放最近一次导出,readme.txt写清楚用的是哪个版本、许可怎么配、哪些图还没画完。这三样东西加起来,接手的人半小时内能跑起来,不用来回问。装完这套工具之后,最该养成的习惯其实是这个——每次交付前,把环境自检、模型快照、XMI 导出这三步强制走一遍,比任何补救都快。希望帮到你。
本文还有配套的精品资源,点击获取