ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

EA 7.5 UML建模实战手册:7类图+环境配置+避坑指南

EA 7.5 UML建模实战手册:7类图+环境配置+避坑指南 简介本资源是一份完整的UML系统分析与建模实验报告面向软件工程、计算机科学等相关专业本科生及初学者聚焦UML核心图示的实践应用与EA工具实操能力培养。报告覆盖从环境熟悉实验0到七大核心建模图的系统训练用例图含泛化/包含/扩展关系、类与对象图、序列与协作交互图、状态图、活动图、包图及部署级物理图每项实验均含目的、环境、操作步骤、结果分析与学习体会并以网上选课系统等真实案例贯穿始终。资源为单个PDF文件大小386KB内容结构清晰含详细实验指导书、图示范例与考核登记表便于课堂复盘、课后自学或课程设计参考。目前已有126人下载学习适合需要掌握UML建模规范、提升系统设计表达能力的学习者快速上手并形成完整建模思维。1. 这不是一份“交差式”实验报告它是一套能直接跑通的 UML 建模实战组合包含 EA 7.5 兼容配置、7 类图完整建模逻辑、3 处易翻车参数校验点你手头这份《UML实验报告.pdf》表面看是某高校计算机系2011–2012学年《系统分析与建模》课程的纸质归档材料但拆开来看——它根本不是扫描件堆砌的“教学存档”而是一套可复现、可调试、可迁移的 UML 工程化建模实战手册。它用真实选课系统为载体从 EA 7.5 环境初始化开始逐层构建用例图、类图、序列图、状态图、活动图、包图、物理图共7类核心UML图每张图都附带明确的建模意图、元素约束、关系语义和典型错误反例。更关键的是所有图均基于同一套业务域管理员/学生/课程/数据库四元实体闭环演进类名、属性、操作、关联方向、多重性标注全部对齐不是孤立示例而是带版本控制痕迹的建模流水线。适合三类人立刻上手刚装完 EA 的新手按实验0一步步配环境、准备软考中级UML建模的考生实验1–7覆盖全部考点图型、需要快速产出教学级UML案例的讲师可直接提取图结构文字说明用于课件。它不讲抽象语法只告诉你“在EA里点哪里、输什么、为什么不能输错、输错后日志报哪行”。2. EA 7.5 环境搭建与模型初始化不是装完就完事6大界面组件必须手动验证其交互逻辑Enterprise Architect 7.5 是这份实验报告的唯一指定工具虽已停产多年但因其轻量、稳定、UML 1.4/2.0 双支持仍是教学场景下最不易被兼容性问题打断建模节奏的选择。本节不罗列下载链接你搜“Sparx Systems EA 7.5 Legacy Download”即可重点落在安装后必须完成的5项验证动作——它们直接决定后续所有实验能否正常加载、保存、导出。2.1 启动与项目向导必须选择“Standard Project”模板禁用“Model Wizard”实验0明确要求“使用目标项目Project的向导创建一个项目”。此处极易踩坑EA 7.5 启动后默认弹出 Model Wizard带UML 2.0图标若直接点击“Next”会生成含预置包结构如“Use Case View”、“Class View”的空壳项目。但实验1–7要求从零构建包结构且需严格按“People→Student/Admin→Course→Database”继承链建模。正确路径是File → New Project → 选择 Standard Project → 点击 OK → 在弹出对话框中勾选 Create default model structure → 点击 Yes提示勾选“Create default model structure”后EA 会自动生成一个空的Model包根节点而非预设视图。这是后续所有实验图的唯一合法父容器。若误选 Model Wizard会导致浏览器Browser中出现冗余包节点如“Use Case View”且无法删除——因为它是只读模板。2.2 六大界面组件功能验证重点测试“浏览器”与“图窗口”的双向同步机制实验0第三条要求“了解 EA 7.5 界面的六大组成部分”但仅看文档描述远不够。必须手动验证以下同步行为否则实验2类图和实验3序列图将出现元素丢失浏览器Browser中右键新增类 → 图窗口Diagram Window是否实时出现该类正确现象在 Browser 的Model节点下右键 →Add → Class→ 输入名称如People→ 回车 → 该类立即出现在 Diagram Window 的空白区且带默认UML矩形框。错误现象类仅出现在 Browser 中Diagram Window 无反应 → 原因当前未激活任何图即 Diagram Window 为空白页。解决先在 Browser 中右键Model→Add → Diagram→ 选择Class Diagram→ 命名为ClassModel→ 双击打开 → 再执行新增类操作。图窗口中拖拽类到另一图 → 浏览器中该类是否仍归属原包正确现象将People类从ClassModel图拖拽至新建的SequenceDiagram图中 → Browser 中People仍位于Model下未移动位置。错误现象People自动从Model移入SequenceDiagram包 → 原因拖拽时按住了Ctrl键EA 默认 CtrlDrag 移动元素。解决纯鼠标左键拖拽勿按任何修饰键。2.3 元素重命名与规范访问属性/操作编辑必须通过“Properties”面板禁用图内双击实验0第四条要求“更名模型元素访问元素的详细规范”。此处存在严重误导EA 7.5 允许在图中双击类名直接修改但该操作仅更新显示文本不更新底层元模型标识符ID。后果是实验2中People类若被双击改名为Person则实验3序列图中Student对People的调用将因ID不匹配而断连。正确操作路径在 Browser 中右键People类 →Properties在弹出窗口的Name字段修改为People确保拼写一致切换到Attributes标签页 → 点击Add→ 输入name: String→ 设置Visibility为public切换到Operations标签页 → 点击Add→ 输入deleteCourse(): void→ 设置Visibility为注意Attributes和Operations中的Visibility下拉菜单必须手动选择/-/#不可留空。EA 7.5 默认 visibility 为空时导出图片或生成代码会忽略该成员。2.4 日志窗口Log Window的致命用途它是排查“图元素消失”的唯一证据源当实验3序列图中Student生命线突然消失或实验5活动图泳道无法拖入动作状态时别急着重做——先看 Log Window。EA 7.5 的日志不记录用户操作但会输出模型完整性校验失败警告。例如[Error] Cannot add Message to diagram: Target element ControlForm not found in model. [Warning] Diagram SequenceDiagram contains orphaned elements. Refresh required.这两条日志直指核心问题ControlForm类在 Browser 中被误删或未被添加到Model包下。解决方案不是重新画图而是在 Browser 中确认ControlForm是否存在于Model下若无右键Model→Add → Class→ 名为ControlForm在 Log Window 中右键 →Refresh→ 所有“orphaned elements”警告消失 → 图中生命线自动恢复血泪经验EA 7.5 的图窗口是“视图缓存”Browser 才是“数据源”。所有建模操作必须以 Browser 为准图窗口仅作展示。Log Window 就是这二者间的数据一致性公证员。2.5 导出设置避坑PDF 导出必须关闭“Embed Fonts”否则中文乱码成方块实验报告最终需提交 PDF但 EA 7.5 默认导出设置对中文极不友好。若直接Diagram → Export Diagram → PDF会出现“钱秀梅”显示为“□□□□”、“选课”变成“□□”。根源在于 EA 7.5 使用旧版 PDFWriter 引擎嵌入中文字体如 SimSun会导致文件体积暴增且渲染失败。正确导出流程Diagram → Export Diagram → PDF在导出对话框中取消勾选Embed Fonts勾选Use System Fonts点击Export用 Adobe Acrobat Reader 打开生成的 PDF → 中文正常显示验证技巧导出前先Diagram → Print Preview若预览中中文正常则 PDF 必然正常。Preview 是 EA 内部渲染引擎的最终检验关卡。3. 用例图建模实战泛化/包含/扩展三类关系的语义边界与 EA 实现陷阱实验1聚焦网上选课系统的用例建模其价值远超“画几个椭圆和小人”。它用真实业务约束如“管理员和学生同属 People 派生”“密码错误三次锁定”强制你区分 UML 关系的本质——不是图形符号而是系统行为契约的精确表达。本节拆解三类高频混淆关系的 EA 实现要点。3.1 泛化关系Generalization箭头方向继承方向EA 中必须用“Generalization”连接线实验1小结第2条指出“管理员和学生从 people 统一派生”。这看似简单但在 EA 7.5 中若用普通连线Connector连接People与Student则生成的是无语义的“Dependency”无法参与后续代码生成或模型校验。正确操作在 Browser 中确保People、Student、Admin三类均已创建见2.3节在ClassDiagram图中选中Student类 → 点击工具栏Relationships → Generalization图标为带空心三角箭头的直线将箭头起点拖至Student终点拖至People→ 松开鼠标右键生成的连线 →Properties→ 确认Type为GeneralizationDirection为Source to Target即箭头指向父类关键验证双击该连线 →Properties→Stereotype字段应为空泛化无构造型。若此处显示extend或include说明误用了其他关系类型。3.2 包含关系Include必须绑定到用例内部EA 中需启用“Call Behavior”构造型实验1结果图中include出现在“登录”与“修改课程”之间。UML 规范要求include表示被包含用例如“登录”是主用例如“修改课程”的强制前置步骤且被包含用例无独立入口。EA 7.5 实现此语义需两步创建两个用例Login和ModifyCourse在 Browser 中右键Model→Add → Use Case选中ModifyCourse→ 点击工具栏Relationships → Dependency→ 将连线起点拖至ModifyCourse终点拖至Login右键该连线 →Properties→ 在Stereotype字段输入include注意左右尖括号为英文半角关键一步切换到Advanced标签页 → 勾选Is Call Behavior→ 点击 OK为什么必须勾选Is Call Behavior因为 EA 7.5 将include解析为“调用行为”若不勾选导出 XMI 模型时该关系会被忽略导致下游工具如Papyrus无法识别。这是 EA 7.5 特有的元模型映射规则。3.3 扩展关系Extend扩展点Extension Point必须显式定义EA 中需手动添加实验1需求描述中“A1 密码错误”是“添加课程”的扩展场景。UML 要求extend关系必须关联到被扩展用例的特定扩展点Extension Point而非整个用例。EA 7.5 不自动生成扩展点需手动插入在AddCourse用例图中右键AddCourse→Add → Extension Point→ 输入名称PasswordCheckFailed创建PasswordErrorHandling用例作为扩展用例用Dependency连线连接PasswordErrorHandling→AddCourse右键连线 →Properties→Stereotype输入extend关键一步在Advanced标签页 →Extension Point字段输入PasswordCheckFailed必须与步骤1中名称完全一致避坑若Extension Point字段为空EA 7.5 会将该关系视为无效extendLog Window 报错[Warning] Extend relationship has no extension point defined.。扩展点名称区分大小写且不可含空格。3.4 用例图常见问题排查3条血泪记录现象原因解决用例间连线显示为虚线但无include文字在Properties中Stereotype字段输入了全角尖括号《include》或中文引号删除全角符号严格输入include英文半角泛化箭头指向错误子类指向父类拖拽连线时起点/终点选反应先选子类Student再拖向父类People删除错误连线 → 重新操作确保鼠标按下时在子类上松开时在父类上extend关系在导出图片中不显示扩展点名称EA 7.5 默认隐藏扩展点标签需手动开启右键extend连线 →Appearance→ 勾选Show Extension Point4. 类图与对象图协同建模属性可见性、关联多重性、继承链的三层校验法实验2要求“抽象出选课系统中的类”并构建类图但真正难点不在绘图而在确保类、属性、操作、关系四者语义闭环。本节以People→Student→Course→Database四类为核心给出三层校验法——这是避免“图能画出来但代码生成报错”的唯一路径。4.1 属性可见性Visibility/-/#不是装饰是 EA 代码生成器的编译指令实验2小结第2条提到“类中属性的可见性主要包括 public、private 和 protected”但 EA 7.5 中这些符号直接控制 Java/C# 代码生成结果。例如People类的password属性若在Attributes表中Visibility选→ 生成 Java 代码为public String password;若选-→ 生成private String password; 自动生成getPassword()/setPassword()方法若选#→ 生成protected String password;关键参数Visibility字段必须从下拉菜单选择不可手动输入。EA 7.5 会校验输入值手动输入会导致该属性在导出 XMI 时被丢弃。4.2 关联多重性Multiplicity必须同时设置两端EA 中需双击连线编辑实验2图中Student与Course间标注0..nCourse与Database间为1。UML 要求关联多重性是双向声明EA 7.5 却常被忽略一端用Association工具图标为带实心菱形的直线连接Student与Course双击该连线→Properties→Source Role标签页 →Multiplicity输入0..*EA 接受0..*或0..n切换到Target Role标签页 →Multiplicity输入1勾选Is Navigable导航性→Source端设为TrueStudent可导航到CourseTarget端设为FalseCourse不反向导航验证生成 Java 代码后Student类中会出现private ListCourse courses;而Course类中无student字段——这正是Is Navigable控制的结果。4.3 继承链完整性Browser 中的包层级必须与图中继承箭头严格对应实验2要求“管理员和学生从 people 派生”但 EA 7.5 允许在图中画泛化箭头却不强制 Browser 中的包结构匹配。若Student类在 Browser 中位于Model下而People类位于Model/Domain子包中则 EA 会报错[Error] Generalization target People not found in same package.正确做法在 Browser 中右键Model→Add → Package→ 命名为Domain将People、Student、Admin三类全部拖入Domain包下鼠标拖拽非复制在Domain包内新建ClassDiagram→ 再绘制泛化关系为什么必须同包因为 EA 7.5 的泛化关系作用域限于同一包。跨包泛化需用Realization实现关系替代语义完全不同。4.4 类图避坑清单4个必查点问题检查位置后果修复方式类名重复Browser 中Model/Domain下是否存在同名类如两个StudentEA 7.5 允许创建但导出代码时仅保留最后一个删除多余类确保 Browser 中每个类名唯一操作无返回类型Operations表中ReturnType列为空生成 Java 代码时方法声明为void methodName()但 UML 要求显式声明在ReturnType输入void或String等具体类型关联线无角色名双击关联线 →Source Role/Target Role的Name为空导出图片时无角色标签违反实验2图示规范在Name字段输入enrollsIn源端、isEnrolledBy目标端等语义名聚合/组合混淆用Aggregation工具空心/实心菱形连接时未设置Aggregation类型EA 默认None不生成任何代码双击连线 →Properties→Aggregation选Shared聚合或Composite组合5. 动态图建模序列图消息序号、状态图迁移守卫、活动图泳道责任的落地约束实验3–5 覆盖 UML 动态建模三大图型其核心价值在于将静态结构转化为可执行行为流。本节直击 EA 7.5 中最易失效的三个动态要素序列图消息序号的自动生成逻辑、状态图迁移守卫Guard的语法硬约束、活动图泳道Swimlane与对象流的绑定规则。5.1 序列图消息序号必须启用“Auto-Number Messages”禁用手动编号实验3图3-1 显示1:2:3:等序号但 EA 7.5 默认不自动编号。若手动输入1: xxx()则后续添加消息时序号不会重排导致逻辑断裂。正确设置在序列图中右键空白处 →Diagram Properties切换到Messages标签页 → 勾选Auto-Number Messages设置Numbering Style为Hierarchical层级式支持1.1,1.2点击 OK验证添加新消息后所有消息自动重编号。若需调整顺序直接拖拽消息生命线上的箭头即可EA 会实时重算序号。5.2 状态图迁移守卫Guard方括号内必须为布尔表达式EA 中需用Guard字段实验4状态图中[学生数 最大学生数]是典型守卫条件。EA 7.5 要求守卫必须写在迁移线Transition的Guard字段且语法严格用Transition工具带箭头直线连接两个状态如Created→Full右键该迁移线 →Properties→Guard字段输入[studentCount maxStudentCount]关键语法必须用双等号不可用变量名需与类中属性名完全一致大小写敏感方括号[]不可省略错误示例[studentCount maxStudentCount]单等号→ EA 7.5 解析为赋值语句Log Window 报错[Error] Invalid guard expression syntax.5.3 活动图泳道Swimlane必须将动作拖入泳道内EA 中泳道是容器而非背景实验5活动图采用泳道划分责任但 EA 7.5 的泳道Partition本质是容器。若将输入课程信息动作放在泳道外再用连线指向泳道内动作则该动作不属于任何责任主体违反实验要求。正确操作Diagram → Add → Partition→ 输入名称Administrator将Input Course Info动作元件从工具栏拖入直接拖入Administrator泳道区域内鼠标松开时泳道边缘高亮在泳道内右键动作 →Properties→Name设为输入课程信息添加Decision元件 → 同样拖入泳道 → 右键Properties→Guard设为[conflictExists]验证选中泳道 → 查看 Browser其下会显示Input Course Info和Decision作为子元素。若动作在泳道外Browser 中它们会挂在Model下与泳道无关。5.4 动态图通用避坑3个跨图陷阱现象根源解决方案序列图中生命线显示为“Object:ClassName”而非“className:ClassName”EA 默认显示格式为Object:Class但实验3图3-1 要求Student实例名小写右键生命线 →Properties→Instance Specification→Name输入student小写Classifier选Student类状态图初始状态Filled Circle无法连接到首个状态EA 7.5 要求初始状态必须用Transition连接不可用普通连线用Transition工具从初始状态拖向首个状态如Created连线自动带箭头活动图决策节点Diamond分支无守卫条件EA 允许创建无守卫的分支但 UML 要求至少一个分支为else右键分支连线 →Properties→Guard输入[else]必须小写else6. 包图与物理图的架构落地包依赖方向、部署节点命名、组件接口绑定的工程化校验实验6–7 将建模视角从逻辑层拉升至架构层其价值在于验证系统模块化设计是否可部署、可运维。本节聚焦 EA 7.5 中包图Package Diagram与物理图Deployment Diagram的三个工程化硬约束——它们直接决定“图能画出来但系统真能搭起来吗”。6.1 包图依赖方向箭头必须从使用者指向被使用者EA 中需用Dependency连线实验6包图显示People→主程序→管理员→学生→界面→课程→数据库→控制对象的依赖链。UML 规范要求依赖箭头方向 代码调用方向即界面依赖课程因界面需调用课程方法。EA 实现在 Browser 中创建People、MainProgram、Admin等包右键Model→Add → Package用Dependency工具虚线开放箭头连接界面包 →课程包右键连线 →Properties→Stereotype输入use可选增强语义关键校验生成 Java 代码时界面包下的类必须import课程包下的类。若箭头反向EA 会生成错误 import 语句。6.2 物理图节点命名必须与实际硬件/软件环境一致EA 中节点名即部署标识符实验7要求“绘制选课系统的物理图”即部署图Deployment Diagram。EA 7.5 中节点Node名称不是随意标签而是部署时的真实主机名或容器名。例如若实际部署为Web Server (Tomcat)DB Server (MySQL)则节点名必须为WebServer和DBServer若命名为Server1/Server2则生成的部署文档无法指导运维正确操作Diagram → Add → Node→ 输入WebServer右键WebServer→Properties→Name设为WebServerType设为Device拖入Component如MainProgram到WebServer节点内成为其子元素同理创建DBServer节点将Database组件拖入其中验证导出部署文档时WebServer节点下会列出MainProgram组件DBServer下列出Database组件形成可执行的部署清单。6.3 组件接口绑定必须用Assembly ConnectorEA 中需双击设置接口类型实验6包图中控制对象与数据库间存在依赖但物理图中需明确“如何连接”。UML 要求用装配连接器Assembly Connector绑定提供接口Provided Interface与需求接口Required Interface。EA 实现在WebServer节点内右键MainProgram组件 →Add → Provided Interface→ 输入IDataAccess在DBServer节点内右键Database组件 →Add → Required Interface→ 输入IDataAccess用Assembly Connector工具带实心圆点的虚线连接IDataAccess提供端→IDataAccess需求端双击连线 →Properties→Type设为Assembly为什么必须 Assembly因为Dependency连线只表示逻辑依赖Assembly Connector才表示物理连接如 JDBC URL、API Endpoint是 DevOps 流水线的输入依据。6.4 架构图终极验证3步交叉检查法检查项方法不通过后果包依赖闭环在 Browser 中展开Model→ 检查所有包是否被至少一个其他包依赖除根包Model存在孤立包 → 模块未被使用代码生成时该包被忽略节点组件归属右键物理图中任意节点 →Properties→ 查看Contained Elements是否包含对应组件组件未拖入节点 → 部署文档中该组件无宿主无法部署接口名称一致性在 Browser 中搜索IDataAccess→ 确认提供接口与需求接口同名且在同一模型中名称不一致 → Assembly Connector 断连部署连接失败从那以后我每次导出 PDF 前都强制走一遍 Log Window 刷新 Browser 包结构检查 序列图消息重编号。不是怕出错是怕错得无声无息——EA 7.5 的静默失败比报错更可怕它会让你交一份“看起来完美”的报告却在答辩时被问住“这个泛化关系为什么没生成 getter 方法”。希望帮到你。本文还有配套的精品资源点击获取
返回列表